我该如何动态地向zsh提示符添加环境变量?

4

编辑:原标题说的是 "bash prompt",但我使用的是 "zsh"。我接受了 @Artur R. Czechowski 的答案,因为它在 bash 上下文中是正确的,并且在他的帮助下,我能够让我的工作。现在 PROMPT 是 ' ${ENV}${ENV:+ } %F{249}${PWD/#$HOME/~} %{$fg[green]%}'○',只需要添加关于 ENV 的内容就可以了。

原始帖子:作为我的工作的一部分,我经常更改环境变量。如此频繁以至于我感觉我不可避免地会忘记我在哪个环境中并做些我不应该做的事情。如果它与您回答我的问题有关,在这种情况下,我通过运行一个 shell 脚本来更改环境,我的当前 bash 提示符是 PROMPT=' %F{249}${PWD/#$HOME/~} %{$fg[green]%}'○' '

如果我处于虚拟环境(例如 venv)中,那么我的提示符将以 (.venv) 为前缀。如何在像 DB_HOST 这样的环境变量中获得类似的东西?如果 DB_HOST 更改,我希望 bash 提示符立即更改并持久存在。

1个回答

4

PROMPT_COMMAND是您的答案。例如:

myprompt() {
    PS1="${DB_HOST}${DB_HOST:+ }\u@\h:\w\$ "
}

PROMPT_COMMAND=myprompt

它将始终显示DB_HOST变量的当前值。


我将以下内容添加到我的zsh-theme文件中,它将我的bash提示符转换为像这样的字符字符串:\[\033[36m\]\u\[\033[m\]@\[\033[32m\]\h:\[\033[33;1m\]\w\[\033[m\]\[\033[00m\] $我添加的内容: `myPrompt() { PS1=" ${ENV}${ENV:+ } %F{249}${PWD/#$HOME/~} %{$fg[green]%}'○' " }PROMPT_COMMAND=myPrompt()` - Jason
我不是zsh方面的专家,抱歉。你将问题标记为bash相关,并且我为该shell提供了一个可行的解决方案。 - ArturFH
你说得对,我的语言不正确。我通过在PROMPT=' blahblah'中添加${ENV}${ENV:+ }来使它工作。非常感谢! - Jason
这应该放在哪里比较好呢?是放在.zshrc文件中,还是一个被调用的自定义脚本中,或者是一个主题中? - kev

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