在.bashrc中包含其他文件

Fra*_*rth 65 linux bash shell command-line

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

Jer*_*ock 106

source /whatever/file(或. /whatever/file)添加到.bashrc您想要包含其他文件的位置.

  • 你应该优雅地处理不存在.例如,检查存在(test -r path &&.path)或忽略错误(.path 2>/dev/null) (21认同)
  • @Daniel我不同意.发生的事情.01%的时间可能每秒发生数千次.在NFS挂载的$ HOME上安装.bashrc可能意味着采购文件的失败率远高于.01% (5认同)
  • @William Pursell IMO,测试一次更容易,然后为案例编写代码,这99.99%的情况永远不会发生。 (2认同)

Nic*_*ick 49

要防止错误,您需要先检查以确保文件存在.然后获取文件.做这样的事情.

# include .bashrc if it exists
if [ -f $HOME/.bashrc_aliases ]; then
    . $HOME/.bashrc_aliases
fi
Run Code Online (Sandbox Code Playgroud)

  • 也是在.bashrc_aliases的末尾或我正在寻找的任何文件中我回应出一个像echo"Aliases loaded"这样的语句 (3认同)
  • 我对自己想:“〜是$ HOME,对吗?” if,`if [-f〜/ .bashrc_aliases];`不起作用。 (2认同)

And*_*ght 9

这是一个单班轮!

[ -f $HOME/.bashrc_aliases ] && . $HOME/.bashrc_aliases
Run Code Online (Sandbox Code Playgroud)

有趣的事实:shell(和大多数其他语言)是懒惰的。如果有一系列由连词(又名“和”又名&&)连接的条件,则评估将从左到右开始。当条件之一为假时,其余的表达式将不会被评估,有效地“短路”其他表达式。

因此,您可以将要执行的命令放在条件的右侧,除非左侧的每个条件都被评估为“真”,否则它不会执行。