在.bashrc中包含其他文件

时间:2011-02-10 00:35:34

标签: linux shell command-line bash

我想在.bashrc中执行一些我希望存在于系统上另一个文件中的东西。如何将此文件包含在.bashrc中?

5 个答案:

答案 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