【问题标题】:How to insert an environment variable inside the bash prompt如何在 bash 提示符中插入环境变量
【发布时间】:2011-11-13 15:37:13
【问题描述】:

我可以像这样在 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]$ 

这可以在一行中完成吗?

【问题讨论】:

    标签: bash environment-variables prompt


    【解决方案1】:

    尝试设置 PROMPT_COMMAND 变量:

    prompt() {
        PS1="[$FOO]$ "
    }
    
    PROMPT_COMMAND=prompt
    

    来自http://tldp.org/HOWTO/Bash-Prompt-HOWTO/x264.html

    Bash 提供了一个名为 PROMPT_COMMAND 的环境变量。在 Bash 显示提示之前,此变量的内容作为常规 Bash 命令执行。

    【讨论】:

      【解决方案2】:

      您需要添加反斜杠以使其评估不是在 FOO 分配时而是在评估 PS1 期间,所以这样做:

      export PS1="[\$FOO]$ "
      

      代替:

      export PS1="[$FOO]$ "
      

      注意\$FOO 之前。

      【讨论】:

      • 你能在 $FOO 变量中设置转义字符吗?
      • 或将提示放在单引号中:export PS1='[$FOO]$ '
      猜你喜欢
      • 1970-01-01
      • 2021-11-16
      • 1970-01-01
      • 2014-02-24
      • 2020-10-07
      • 1970-01-01
      • 1970-01-01
      • 2018-12-29
      • 1970-01-01
      相关资源
      最近更新 更多