如何在Bash提示符中插入环境变量

30

我可以像这样在Bash提示符内设置环境变量:

export PS1="[\u@\H/$FOO \W]\$ "

当我更改环境变量$FOO时,提示符并没有发生改变,因为$FOO变量未被解释。

我可以通过重新导出PS1来解决此问题。但我想要能在一行上完成。

[user@server ]$ echo $FOO
foo
[user@server ]$ export PS1="[$FOO]$ "
[foo]$ export FOO=bla
[bla]$ 

这个能不能用一行代码实现?

2个回答

43

你需要添加反斜杠,以便在评估PS1时而不是FOO分配的时间进行评估,因此请执行以下操作:

export PS1="[\$FOO]$ "

使用以下方式代替:

export PS1="[$FOO]$ "

注意在$FOO前面加上\


你能在 $FOO 变量中使用字符转义吗? - Plamen
1
export PS1='[$FOO]$ ' 的翻译: - Gary

18
尝试设置PROMPT_COMMAND变量:
prompt() {
    PS1="[$FOO]$ "
}

PROMPT_COMMAND=prompt

http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x264.html
Bash提供了一个名为PROMPT_COMMAND的环境变量。这个变量的内容在Bash显示提示符之前作为常规Bash命令执行。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接