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

发布于 2024-12-03 14:45:12 字数 360 浏览 0 评论 0原文

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

这可以在一行中完成吗?

I can set an environment variable inside the bash prompt like this:

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

The prompt does not change when I change the environment variable: $FOO because the $FOO variable is not interpreted.

I can work around it by doing the following, exporting PS1 again. But I would like to be able to do it on one line:

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

Can this be done in one line?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

温暖的光 2024-12-10 14:45:12

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

export PS1="[\$FOO]$ "

而不是:

export PS1="[$FOO]$ "

注意 $FOO 之前的 \

you need to add backslash to get it evaluated not in the time of FOO assigment but during evaluating the PS1, so do:

export PS1="[\$FOO]$ "

instead of:

export PS1="[$FOO]$ "

Note the \ before the $FOO.

空城之時有危險 2024-12-10 14:45:12

Try setting the PROMPT_COMMAND variable:

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

PROMPT_COMMAND=prompt

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

Bash provides an environment variable called PROMPT_COMMAND. The contents of this variable are executed as a regular Bash command just before Bash displays a prompt.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文