别名:.bash_rc、.bash_aliases 和 /usr/local/bin 之间的区别

别名:.bash_rc、.bash_aliases 和 /usr/local/bin 之间的区别

在玩 Terminal 时,我发现有很多方法可以创建永恒的别名。

我是一个 Linux 新手,据我所知,我正在做:

  1. sudo ln -s /path/to/executable /usr/local/bin/desired_alias
  2. 添加desired_alias = '/path/to/executable'~/.bashrc
  3. 取消注释以下行~/.bashrc

    if [ -f ~/.bash_aliases ]; then
        . ~/.bash_aliases
    fi
    

    desired_alias = '/path/to/executable'放入~/.bash_aliases

都具有相同的效果。

第一种方法和第二种方法有什么区别?

答案1

使用第一种方法,您不是在创建别名,而是在创建符号链接。符号链接是符号链接的简称:

符号链接是充当指向其他文件的指针的文件。[...] 符号链接是一种特殊类型的文件,其内容是另一个文件(即链接所引用的文件)的路径名字符串。换句话说,符号链接是指向另一个名称的指针,而不是指向底层对象的指针。

阅读有关符号链接的更多信息这里这里

只有使用第二种方法,您才实际上创建了一个别名。

别名允许将字符串替换为单词,当该字符串用作简单命令的第一个单词时。shell 维护一个别名列表,可以使用 alias 和 unalias 内置命令设置和取消设置这些别名(请参阅下面的 SHELL 内置命令)。如果每个简单命令的第一个单词未加引号,则检查它是否有别名。如果有,则用别名的文本替换该单词。

您可以在可以输入命令并让 shell (狂欢在这种情况下)对其进行解释,但是为了使别名在其他 shell 中可用,需要在启动时(shell 启动,而不是计算机启动)由 shell 解释的文件中定义它。

对于 bash,这些是/etc/bash.bashrc(系统范围的)和~/.bashrc。当 shell 以交互模式启动时(例如使用时Terminal),将解释这些文件。我不会提及配置文件,因为它们的用途不同。

因此,您需要添加别名以便~/.bashrc它们在每个交互式 shell 中都可用。

.bash_aliases方法实现确切地与添加别名相同~/.bashrc,但具有更容易被程序解析和操作的额外好处。

意思是在当前正在运行的 shell 上下文中. ~/.bash_aliases源(加载) 。_~/.bash_aliases_

相关内容