【问题标题】:Include additional files in .bashrc在 .bashrc 中包含其他文件
【发布时间】:2011-06-24 13:01:51
【问题描述】:

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

【问题讨论】:

  • 这个问题应该发布在 Unix & Linux Stack Exchange 上吗?

标签: linux shell command-line bash


【解决方案1】:

这里只有一个班轮!

[ -f $HOME/.bashrc_aliases ] && . $HOME/.bashrc_aliases

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

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

【讨论】:

    【解决方案2】:

    我更喜欢先检查版本并为路径配置分配变量:

    if [ -n "${BASH_VERSION}" ]; then
      filepath="${HOME}/ls_colors/monokai.sh"
      if [ -f "$filepath" ]; then
        source "$filepath"
      fi
    fi
    

    【讨论】:

      【解决方案3】:

      如果您要加载多个文件,这些文件可能存在也可能不存在,您可以使用 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】:

      为防止出现错误,您需要先检查以确保文件存在。然后源文件。做这样的事情。

      # include .bashrc if it exists
      if [ -f $HOME/.bashrc_aliases ]; then
          . $HOME/.bashrc_aliases
      fi
      

      【讨论】:

      • 也在 .bashrc_aliases 或我要采购的任何文件的末尾我回显了一个声明,例如 echo "Aliases loaded"
      • 我心想:“~是$HOME,对吧?”唉,if [ -f ~/.bashrc_aliases ]; 不起作用。
      【解决方案5】:

      source /whatever/file(或. /whatever/file)添加到您希望包含其他文件的.bashrc

      【讨论】:

      • 你应该优雅地处理不存在。例如,要么检查存在(test -r path && .path)要么忽略错误(.path 2> /dev/null)
      • @William Pursell IMO 更容易测试一次,然后为案例编写代码,99.99% 永远不会发生。
      • @Daniel 我不同意。 0.01% 的时间发生的事情每秒可能发生数千次。在 NFS 挂载的 $HOME 上拥有 .bashrc 可能意味着获取文件的失败率远高于 0.01%
      猜你喜欢
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 2018-05-22
      • 2015-07-28
      • 2020-03-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多