Bash:暂时改变环境

Bash:暂时改变环境

我正在使用一个开发工具,它提供了一个设置环境变量的脚本。如果我获取该脚本,则在 bash 分离期间,环境会被修改。为了恢复该脚本所做的更改,我需要重新启动终端。有没有办法在不重新启动或打开新的 bash 会话的情况下做到这一点?

谢谢。

答案1

在子 shell 中执行此操作:

$ (. /path/to/envsetup.sh; runtool)

如果只有少量的环境变化,您可以在命令行上进行:

$ FOO=a BAR=b runtool # FOO and BAR will be set only for runtool

如果你预计要做以下几件事,你也可以使用实际的子 shell:

$ bash
$ : this is a subshell
$ . /path/to/envsetup.sh
$ thing1
$ thing2
$ : ...
$ exit
$ : this is the original shell

您可能希望将后者包含$SHLVL在您的$PS1文件中,这样更容易判断您处于子 shell 中。我还检查 (非标准) 环境变量,$PSYS如果设置则将其打印出来,作为环境的一种“标签”。

相关内容