我有一些想在 .bashrc 中执行的东西,但我希望它存在于系统上的另一个文件中。我该如何将此文件包含到 .bashrc 中?
我有一些想在 .bashrc 中执行的东西,但我希望它存在于系统上的另一个文件中。我该如何将此文件包含到 .bashrc 中?
source /whatever/file
(或. /whatever/file
)添加到.bashrc
文件中,您可以在其中包含其他文件。为了避免错误,您需要先检查文件是否存在。然后再引用该文件。可以像这样进行操作。
# include .bashrc if it exists
if [ -f $HOME/.bashrc_aliases ]; then
. $HOME/.bashrc_aliases
fi
if [ -f ~/.bashrc_aliases ];
不起作用。 - modle13这是一句简短的话!
[ -f $HOME/.bashrc_aliases ] && . $HOME/.bashrc_aliases
有趣的事实:Shell(以及大多数其他编程语言)是懒惰的。如果一系列条件被连接起来并用连词(也称为“and”,即 &&
)联系在一起,则评估将从左到右开始。当其中一个条件为假时,其余表达式将不会被评估,有效地“短路”了其他表达式。
因此,你可以将要执行的命令放在条件的右侧,只有在左侧的每个条件都被评估为“true”时才会执行。
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
我更喜欢先检查版本,然后为路径配置分配变量:
if [ -n "${BASH_VERSION}" ]; then
filepath="${HOME}/ls_colors/monokai.sh"
if [ -f "$filepath" ]; then
source "$filepath"
fi
fi