我正在使用一个开发工具,它提供了一个设置环境变量的脚本。如果我获取该脚本,则在 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
如果设置则将其打印出来,作为环境的一种“标签”。