在任何给定的登录会话中,是否有方法让环境变量或某些类似的构造持续存在于所有bash终端实例中?Bash:每个登录环境变量
我想要做的是有一个可变的提示,我可以随心所欲地切换(对于所有的终端窗口,未来,或许也是当前的)。切换的过程并不太重要,但是我想让它成为一个不可或缺的东西。
到目前为止,最好的选择似乎是在.bashrc中有一组硬编码的值,我的'切换器'脚本会编辑这些值,但这看起来有些冒失,并且如果有任何轻微的错误。
在任何给定的登录会话中,是否有方法让环境变量或某些类似的构造持续存在于所有bash终端实例中?Bash:每个登录环境变量
我想要做的是有一个可变的提示,我可以随心所欲地切换(对于所有的终端窗口,未来,或许也是当前的)。切换的过程并不太重要,但是我想让它成为一个不可或缺的东西。
到目前为止,最好的选择似乎是在.bashrc中有一组硬编码的值,我的'切换器'脚本会编辑这些值,但这看起来有些冒失,并且如果有任何轻微的错误。
我会去的最简单的解决方案:将数据写入一个文件,而不是一个变量。
您还可以在.bashrc中创建一些助手来自动检索/设置值。一个文件似乎满足您的所有要求。
编辑:你也可以让助手在每个登录文件中设置变量。
无法立即在每个活动shell中更改的提示,但是您可以定义函数给您的.bashrc
,您可以调用它来随意更改提示。
use_prompt_1() {
PS1="\w \$"
}
use_prompt_2() {
PS1="\[email protected]\h \$"
}
您还可以使用PROMPT_COMMAND
来检查您的环境以选择提示。添加类似以下内容到你的.bashrc
还有:
dynamic_prompt() {
if [[ $PWD =~ some_regex ]]; then
use_prompt_1
else
use_prompt_2
fi
}
PROMPT_COMMAND=dynamic_prompt
请定义'bash终端实例'和'登录会话',以及如何启动这些shell。 –
您无法更改已启动的进程的环境。您可以使bashrc从第三个位置(由文件或环境设置)加载变量,然后在设置提示时使用它。 – xvan
你可以从你的'.bashrc'的单独文件'源'你的'PS1'变量,你可以改变'PS1'的值,然后在运行的shell中再次获取它。这样你的切换器可以是*函数*或*别名*。 –