别名:.bash_rc,.bash_aliases和/ usr / local / bin之间的区别
玩终端,我注意到有很多方法可以创建永久别名。
我是Linux新手,据我所知,做:
sudo ln -s /path/to/executable /usr/local/bin/desired_alias
- 将
desired_alias = '/path/to/executable'
到~/.bashrc
-
在
~/.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_
。