删除所有环境变量并加载rcfile

删除所有环境变量并加载rcfile

我需要运行多组环境。为此,我有两组 bashrc 文件,bashrc_a以及bashrc_b.在启动时,我bashrc_a通过 make .bashrcas来运行

source bashrc_a

bashrc_a环境中,我需要切换到bashrc_b,但我不想bashrc_abashrc_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

  1. bash正常启动shell。
  2. 启动bashrc_a环境bash --rcfile bashrc_a
  3. 如果你想切换bashrc_b环境
    1. 首先exit,然后
    2. 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)。

不过,这可能很难编写并保持最新。

相关内容