【问题标题】:How do I update my zsh prompt when an env variable changes?当环境变量更改时,如何更新我的 zsh 提示?
【发布时间】:2021-08-21 11:47:44
【问题描述】:

我正在使用 oh-my-zsh。我的主题文件如下所示:

PROMPT="${AWS_PROFILE}%(?:%{$fg_bold[green]%}➜ :%{$fg_bold[red]%}➜ )"
PROMPT+=' %{$fg[cyan]%}%c%{$reset_color%} $(git_prompt_info)'

ZSH_THEME_GIT_PROMPT_PREFIX="%{$fg_bold[blue]%}git:(%{$fg[red]%}"
ZSH_THEME_GIT_PROMPT_SUFFIX="%{$reset_color%} "
ZSH_THEME_GIT_PROMPT_DIRTY="%{$fg[blue]%}) %{$fg[yellow]%}✗"
ZSH_THEME_GIT_PROMPT_CLEAN="%{$fg[blue]%})"

它基于一个流行的主题。我唯一添加的是${AWS_PROFILE}

提示确实按预期显示了我的 AWS 配置文件。但即使我的环境变量改变了提示也不会改变。这不符合我的预期。如果我运行source ~/.zshrc,它确实会改变。

当我的环境变量改变时,我可以进行提示更新吗?

【问题讨论】:

  • 我看了一下 spaceship-prompt 如何实现这一点,似乎他们使用一些 zsh 钩子在每个命令之前重新运行东西。例如,这里是他们如何设置 preexec 和 precmd 钩子:github.com/spaceship-prompt/spaceship-prompt/blob/master/…
  • 谢谢!我不知道宇宙飞船的提示。我去了 ahaid 并切换到那个。
  • AWS_PROFILE 在您定义 PROMPT 时立即展开,因为您使用了双引号。使用单引号,或者考虑使用 precmd 挂钩来设置 PROMPT 的值。
  • @user1283776 如果您不再需要回答您的问题,请关闭它,使其不再出现在未回答问题列表中。 :)
  • 好的,我关闭了它。我需要说明一个动机,但没有一个选项适合,所以我还是选择了一个。

标签: environment-variables zsh oh-my-zsh


【解决方案1】:

将@chepner 的评论复制到答案中:

当您定义 PROMPT 时,AWS_PROFILE 会立即展开,因为您使用了双引号。使用单引号,或者考虑使用 precmd 钩子来设置 PROMPT 的值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-04-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-06
    • 2014-04-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多