【发布时间】:2011-06-24 13:01:51
【问题描述】:
我有一些我想在 .bashrc 中执行的东西,我希望它们存在于系统上的另一个文件中。如何将此文件包含到 .bashrc 中?
【问题讨论】:
-
这个问题应该发布在 Unix & Linux Stack Exchange 上吗?
标签: linux shell command-line bash
我有一些我想在 .bashrc 中执行的东西,我希望它们存在于系统上的另一个文件中。如何将此文件包含到 .bashrc 中?
【问题讨论】:
标签: linux shell command-line bash
这里只有一个班轮!
[ -f $HOME/.bashrc_aliases ] && . $HOME/.bashrc_aliases
有趣的事实:shell(和大多数其他语言)是惰性的。如果有一系列由连词(又名“和”又名&&)连接的条件,则评估将从左到右开始。当其中一个条件为假时,其余表达式将不会被计算,从而有效地“短路”其他表达式。
因此,您可以将要执行的命令放在条件的右侧,除非左侧的每个条件都被评估为“真”,否则它不会执行。
【讨论】:
我更喜欢先检查版本并为路径配置分配变量:
if [ -n "${BASH_VERSION}" ]; then
filepath="${HOME}/ls_colors/monokai.sh"
if [ -f "$filepath" ]; then
source "$filepath"
fi
fi
【讨论】:
如果您要加载多个文件,这些文件可能存在也可能不存在,您可以使用 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
【讨论】:
为防止出现错误,您需要先检查以确保文件存在。然后源文件。做这样的事情。
# include .bashrc if it exists
if [ -f $HOME/.bashrc_aliases ]; then
. $HOME/.bashrc_aliases
fi
【讨论】:
if [ -f ~/.bashrc_aliases ]; 不起作用。
将source /whatever/file(或. /whatever/file)添加到您希望包含其他文件的.bashrc。
【讨论】: