Bash PS1 不评估变量

Bash PS1 不评估变量

我正在尝试将 PS1 提示设置为

/usr/local/src mario

所以我在 .bash_profile 中使用了以下代码:

export PS1=" \w \u\[$(tput sgr0)\]"

我最终得到:

 \w \u\[$(tput sgr0)\]

有想法吗?

我可以使用字符串连接来获得我想要的东西,但这似乎很奇怪我需要这样做。

答案1

你的 shell 可能不是bash。将其更改为chsh.

另外,部分值存在问题$PS1

PS1=" \w \u\[$(tput sgr0)\]"

将会$(...)在您设置 时进行评估PS1,但仅此一次。如果您想tput sgr0每次显示提示时都执行,请使用单引号:

PS1='\w \u\[$(tput sgr0)\] \$ '

(我还将初始空格从值的开头移动到结尾,并添加了\$这将使提示和命令行更具可读性。

您还可以设置

PS1="\w \u \$ "

然后设置

PROMPT_COMMAND="tput sgr0"

在显示每个提示之前执行tput sgr0(我不知道这样做是否有意义,因为我不太知道它的作用,但它的设施就在那里)。

请注意,既不需要导出PS1也不PROMPT_COMMAND需要导出,因为只有为当前 shell 会话设置它们才有意义。

相关内容