自定义文件夹中的 bashrc

Has*_*ken 6 bash configuration bashrc

我想清理我的主文件夹并设法将大部分配置文件移到 .config 文件夹中。但是,我无法弄清楚的一个文件是.bashrc文件。如何指定 bash 从自定义位置加载 .bashrc?

Mic*_*mer 7

bash命令接受一个--rcfile filename选项选项将:

在交互式 shell 中从文件名(而不是 ~/.bashrc)执行命令。

因此,如果您运行,bash --rcfile ~/.config/bashrc那么您将改为加载该文件。

没有一种方法,默认情况下它从那里配置为负载(其中,你会配置呢?),比修改重新编译其他(改变的定义bashrc_fileshell.c-它不是一个配置选项)。您可以创建一个bash使用该--rcfile选项运行的包装器,并将所有其他参数原封不动地传递给它——您必须添加它才能/etc/shells将该包装器设置为您的外壳,并且您必须小心执行此操作。这两个选项中的任何一个都是可行的,但要做到正确并非易事。

如果您在单用户系统上,另一种选择是将您的所有配置放在 系统范围的文件中/etc,但这并不能真正解决问题。您还可以让系统范围的文件检测它是如何运行的,并bash使用该--rcfile选项自动重新执行,但这似乎比其他方法更令人担忧。


我的建议是让自己适应在您的主目录中有一个额外的点文件,但如果您真的不能,上述方法是可行的。


Áng*_*gel 5

受 Gnouc 回答的启发,我意识到 bash 读取/etc/bash.bashrc并且~/.bashrc在相同的情况下。因此,您可以放在 的底部/etc/bash.bashrc

 if [ -s "${XDG_CONFIG_HOME:-$HOME/.config}/bash/bashrc" ]; then
    . "${XDG_CONFIG_HOME:-$HOME/.config}/bash/bashrc"
 fi
Run Code Online (Sandbox Code Playgroud)

然后移动~/.bashrc$XDG_CONFIG_HOME/bash/bashrc

Bash 仍然会尝试加载~/.bashrc不再存在的问题,因为它不再存在。并且/etc/bash.bashrc将确保该文件从您的新位置加载。