我需要运行多组环境。为此,我有两组 bashrc 文件,bashrc_a
以及bashrc_b
.在启动时,我bashrc_a
通过 make .bashrc
as来运行
source bashrc_a
从bashrc_a
环境中,我需要切换到bashrc_b
,但我不想bashrc_a
在bashrc_b
环境中保留任何环境变量。为此,我尝试了
env -i bash --rcfile bashrc_b
但问题是,在这种情况下,我输了全部环境变量,不仅仅是来自bashrc_a
.我没有HOME
,我没有PATH
,等等。
我尝试的另一件事是
env -i bash --login --rcfile bashrc_b
但如果我这样做,登录 shell 会查找~/.bashrc
,然后查找bashrc_a
文件,而且,由于TERM
从 中删除env -i
,它没有帮助。
所以我的问题是,我该如何卸下 bashrc_a
和负载bashrc_b
?
答案1
从你的描述来看,听起来好像你没有实际上想要bashrc_b
从 加载环境bashrc_a
。
假设你不要来源或来自bashrc_a
或。bashrc_b
.bashrc
.bash_profile
bash
正常启动shell。- 启动
bashrc_a
环境bash --rcfile bashrc_a
。 - 如果你想切换
bashrc_b
环境- 首先
exit
,然后 bash --rcfile bashrc_b
- 首先
如果你想保持周围的环境bashrc_a
,然后只需打开另一个终端并执行bash --rcfile bashrc_b
.
另一种选择是rc
为每个环境编写相应的“卸载”文件。这两个文件将取消设置或重新设置环境,从而取消相应bashrc_x
文件所做的任何操作。然后,您可以source bashrc_a
,做您的工作,source unbashrc_a
,然后source bashrc_b
(或直接拥有bashrc_b
源代码unbashrc_a
)。
不过,这可能很难编写并保持最新。