Has*_*ken 6 bash configuration bashrc
我想清理我的主文件夹并设法将大部分配置文件移到 .config 文件夹中。但是,我无法弄清楚的一个文件是.bashrc
文件。如何指定 bash 从自定义位置加载 .bashrc?
该bash
命令接受一个--rcfile filename
选项,该选项将:
在交互式 shell 中从文件名(而不是 ~/.bashrc)执行命令。
因此,如果您运行,bash --rcfile ~/.config/bashrc
那么您将改为加载该文件。
有没有一种方法,默认情况下它从那里配置为负载(其中,你会配置呢?),比修改重新编译其他(改变的定义bashrc_file
中shell.c
-它不是一个配置选项)。您可以创建一个bash
使用该--rcfile
选项运行的包装器,并将所有其他参数原封不动地传递给它——您必须添加它才能/etc/shells
将该包装器设置为您的外壳,并且您必须小心执行此操作。这两个选项中的任何一个都是可行的,但要做到正确并非易事。
如果您在单用户系统上,另一种选择是将您的所有配置放在 系统范围的文件中/etc
,但这并不能真正解决问题。您还可以让系统范围的文件检测它是如何运行的,并bash
使用该--rcfile
选项自动重新执行,但这似乎比其他方法更令人担忧。
我的建议是让自己适应在您的主目录中有一个额外的点文件,但如果您真的不能,上述方法是可行的。
受 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
将确保该文件从您的新位置加载。