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

Str*_*rae 10 command-line bash alias bashrc

在玩终端时,我注意到有很多方法可以创建永久别名。

我是 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
    
    Run Code Online (Sandbox Code Playgroud)

    并把desired_alias = '/path/to/executable'~/.bash_aliases

都具有相同的效果。

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

Li *_* Lo 11

第一种方法不是创建别名,而是创建符号链接。符号链接是符号链接的缩写:

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

在此处此处阅读有关符号链接的更多信息。

实际上,只有使用第二种方法才能创建别名。

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

您可以在任何可以键入命令的地方定义别名并让 shell(在本例中为bash)解释它,但是为了让别名在其他 shell 中可用,它需要在由 shell 解释的文件中定义启动时(外壳启动,而不是计算机启动)。

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

因此,您希望添加别名以~/.bashrc使它们在每个交互式 shell 中可用。

.bash_aliases方法完成与放入别名完全相同的事情,~/.bashrc但具有更容易被程序解析和操作的额外好处。

. ~/.bash_aliases手段源(负载)_~/.bash_aliases_在当前运行的外壳的情况下。