【发布时间】:2020-08-27 15:22:03
【问题描述】:
有没有办法在 zsh/bash 中观察环境变量的变化?例如,在切换我的 kubernetes 环境时,我希望能够读取设置的变量并对我的终端窗口进行更改(如果我处于生产与开发等状态)。
我们切换环境的方式是我们工具的一部分。我希望能够在我自己的机器上扩展它,而无需更新任何工具。如果无法观察环境变量的变化,我也在寻找一种使用类似于builtin 的方法。
Example: create a function of the same name as an alias, call that alias from within the function, then do some other action afterward.
【问题讨论】:
-
如果你想例如根据变量更新终端标题,您通常只需在每个提示符上输出 ansi 序列。监听变量的变化是没有意义的,因为这些变化只能由 shell 本身进行,而不能由任何外部进程进行。
-
我想要做的,更准确地说,如果我进入生产环境,将终端的背景颜色更新为红色(单独变量),或者如果我回到黑暗我在开发环境中
-
做一个
man terminfo -
您可以使用
zsh中的precmd钩子或bash中的PROMPT_COMMAND来检查值并做出适当的响应。两个 shell 都没有专门监控给定变量的钩子。 -
@chepner 谢谢你,这太完美了。您想将此作为我可以标记为已接受答案的答案吗?
标签: bash macos environment-variables zsh