多个.bashrc配置文件方案

6

有没有一种方法可以在多个.bashrc文件之间切换并重新加载bash? 我想要两个不同的环境变量集,并在它们之间切换。最好在终端模拟器中和/或使用按键。


为什么不使用.bashrc.bashrc_bkp或类似的东西呢? - Maroun
好的,我会做到。但是我该如何在它们之间切换? - Marvin Noll
source .bashrc? - Maroun
2
你实际上不能“切换”,因为没有办法真正撤销以前文件中的内容。你只能简单地使用新文件作为源文件,但这不同于使用新文件启动一个新的 shell。 - chepner
为什么需要一个单独的Shell呢?为什么不只是运行多个具有不同设置的Shell,然后在想要返回顶部Shell切换到另一个活动Shell时使用suspend命令呢?或者只是在终端仿真器中使用多个选项卡? - undefined
3个回答

3
创建不同的 .bashrc 文件或其他环境变量文件,将您想要的环境变量或其他数据存储在这些文件中。例如,您可以在主目录下创建三个 .bashrc 文件。
1. /home/user/.bashrc1 -- 这个文件包含一个版本的环境变量。 2. /home/user/.bashrc2 -- 这个文件包含另一个版本的环境变量。 3. /home/user/.bashrc -- 这个文件包含主要的环境变量,在启动 bash shell 时会自动调用它们。
编辑文件 /home/user/.bashrc 并输入以下内容:
alias env1='/home/user/.bashrc1' alias env2='/home/user/.bashrc2'
现在执行命令 . $HOME/.bashrc
当您希望在 shell 中使用 env1 变量时,请键入 env1,并切换到 env2 变量可用于 shell 时,请键入 env2。
这是一种在两个不同的环境变量之间切换的方法。

1
这并不是开关;它只是在先前的更改上覆盖一组更改。 - chepner
它可能无法切换,但可以在新配置文件中取消设置其他环境变量,这可能会解决问题。 - Eby Jacob
也许你是指 env1(){ . ~/.bashrc1; } 或者 alias env1=". ~/.bashrc1",以及对应的 env2 版本?(缺少的 . 意味着它无法有效地工作。) - undefined

0

如果你想在一个终端中从一个bashrc切换到另一个,可以参考Eby Jacob的回答,但要注意,正如@chepner所评论的那样,这不会撤销“主”~/.bashrc所做的操作。

如果你想在打开终端之前选择多个.bashrc文件中的一个,那么也许你可以将~/.bashrc文件作为.bashrc1.bashrc2等文件的符号链接之一,并在需要更改时,通过ln -sf .myWinterBashrc ~/.bashrc重新分配链接即可。


0
如果你想的话,你可以看一下我用纯bash写的一个工具,用来管理多个配置文件。它会给你一个名为switch_profile的函数,可以从多个文件中加载函数/别名/导出。它还支持在加载另一个配置文件之前,将你当前的设置卸载到一个配置文件中,这样你就可以确保在切换之间清除特定的设置(例如可能影响其他程序行为的变量导出)。你可以在这里找到它,希望它对你有用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接