我想在.bashrc中执行一些我希望存在于系统上另一个文件中的东西。如何将此文件包含在.bashrc中?
答案 0 :(得分:97)
将source /whatever/file
(或. /whatever/file
)添加到您希望包含其他文件的.bashrc
。
答案 1 :(得分:47)
要防止错误,您需要先检查以确保文件存在。然后获取文件。做这样的事。
# include .bashrc if it exists
if [ -f $HOME/.bashrc_aliases ]; then
. $HOME/.bashrc_aliases
fi
答案 2 :(得分:8)
这里是一个班轮!
[ -f $HOME/.bashrc_aliases ] && . $HOME/.bashrc_aliases
有趣的事实:shell(和大多数其他语言)很懒。如果有一系列条件由一个连接词(也称为“和”,又称为&&
)连接,则评估将从左到右开始。条件之一为假时,将不评估其余表达式,从而有效地“短路”其他表达式。
因此,您可以将要执行的命令放在条件的右侧,除非左侧的每个条件都被评估为“ true”,否则该命令将不会执行。
答案 3 :(得分:2)
如果您要加载多个可能存在或可能不存在的文件,可以使用for循环使其保持优雅。
files=(somefile1 somefile2)
path="$HOME/path/to/dir/containing/files/"
for file in ${files[@]}
do
file_to_load=$path$file
if [ -f "$file_to_load" ];
then
. $file_to_load
echo "loaded $file_to_load"
fi
done
输出如下:
$ . ~/.bashrc
loaded $HOME/path/to/dir/containing/files/somefile1
loaded $HOME/path/to/dir/containing/files/somefile2
答案 4 :(得分:0)
我更喜欢先检查版本并为路径配置分配变量:
if [ -n "${BASH_VERSION}" ]; then
filepath="${HOME}/ls_colors/monokai.sh"
if [ -f "$filepath" ]; then
source "$filepath"
fi
fi