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

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

我是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

都具有相同的效果。

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

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

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

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

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

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

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

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

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

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

这个. ~/.bash_aliases . ~/.bash_aliases表示当前运行的shell上下文中的source(load) _~/.bash_aliases_