bash_aliases 和“if [ -f ~/.bash_aliases ]; then . ~/.bash_aliases fi”的含义

mic*_*ler 5 bash alias kali-linux

我的文件中有一小节.bashrc我不明白,我想问一下它的含义和一些语法解释。

# Alias definitions.
# You may want to put all your additions into a separate file like
# ~/.bash_aliases, instead of adding them here directly.
# See /usr/share/doc/bash-doc/examples in the bash-doc package.

if [ -f ~/.bash_aliases ]; then
    . ~/.bash_aliases
fi
Run Code Online (Sandbox Code Playgroud)

我当然明白 # 使每一行都成为注释。

你能给我解释一下这个if ... then声明吗?什么-f意思?

为什么[]代码的第一行有这些?

;为什么后面有[ -f ~/.bash_aliases ]?

为什么代码的第二行以 a 开头,.以及整个第二行的实际含义。我知道.bash_aliasesLinux 中包含 bash_aliases 的文件,但我不明白第二行。

jll*_*gre 15

  1. 你能给我解释一下这个if ... then声明吗?

    简而言之:如果.bash_aliases您的主目录中有一个名为的文件,请使用它。

  2. 什么-f意思?:

    测试文件是否存在并且是常规文件(不是目录等),或者是常规文件的符号链接。

  3. 为什么[]代码的第一行有这些?

    这是用于执行测试的 shell 命令。另一种方法是if test -f .bash_aliases; then

  4. ;为什么后面有[ -f ~/.bash_aliases ]?

    分号是 bash 中的命令分隔符。您需要它来结束test命令并允许then块在同一行上开始。

    或者,您可以避免使用;作为分隔符并使用换行符显式分割命令。

    if [ -f ~/.bash_aliases ]
    then
    
    Run Code Online (Sandbox Code Playgroud)
  5. 为什么代码的第二行以 a 开头.以及它的实际含义

    这是要执行的命令的名称。(dot)命令.是一个用于获取文件的 shell 内置命令。通过合理的假设bash将执行该文件,可以使用.bashrc更具可读性但非 POSIX 命令来代替source.

    source ~/.bash_aliases
    
    Run Code Online (Sandbox Code Playgroud)

请注意,某些 shell(例如dash和某些变体ksh)不支持source。

您可能想阅读bash 文档。

  • `[` 是一个程序。您将在“/bin/[”中找到它。某些 shell 可能会通过内部处理而不是调用实际的可执行文件来进行优化。 (2认同)