如何创建永久的“别名”?

Zan*_*ngo 221 command-line

例如,如果您创建别名:

alias cls="clear"
Run Code Online (Sandbox Code Playgroud)

它存在直到你杀死终端会话。当您启动一个新的终端窗口时,别名不再存在。如何创建存在于每个终端会话中的“永久”别名?

小智 247

您可以将此类别名放在~/.bash_aliases文件中。

该文件由~/.bashrc. 在 Ubuntu 10.04 上,需要取消注释以下行以启用~/.bash_aliases. 在 Ubuntu 11.04 及更高版本上,它已经启用:

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

别名命令将在任何新终端上可用。要在任何现有终端上使用别名命令,需要~/.bashrc从该终端获取,

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

  • +1 我推荐这个而不是编辑 ~/.bashrc。虽然确实对其他各种用途很有用,但 ~/.bashrc 只是包含太多元素,可能会让不熟悉 Linux shell 特性的用户感到厌烦。 (13认同)
  • @hobs 必须是:`echo "alias cls='clear'" >> ~/.bash_aliases && source ~/.bash_aliases` (12认同)
  • 示例:`echo "cls='clear'" >> ~/.bash_aliases && source ~/.bash_aliases` (6认同)
  • @ændrük 我实际上发现大量的 shell 配置文件令人困惑。在我看来,如果有一个包含所有设置的相当长的配置文件会更容易。 (4认同)
  • 好的,所以这个话题现在已经快 7 岁了,我似乎找不到任何最近的答案。但是它不再对我有用,现在询问是否发生了变化 (2认同)

txw*_*ger 42

将您的线路添加到~/.bashrc或添加到~/.profile/~/.bash_profile以进行远程登录。

如果您希望为所有用户执行该命令,请将其放入/etc/bash.bashrc.

编辑:在最新版本的 Ubuntu 中,~/.bashrc自动 source ~/.bash_aliases,因此最好将永久别名放入此文件中。


小智 19

您可以将下面的函数添加到您的 .bashrc 文件中。

function permalias () 
{ 
  alias "$*";
  echo alias "$*" >> ~/.bash_aliases
}
Run Code Online (Sandbox Code Playgroud)

然后打开一个新终端或source ~/.bashrc在您当前的终端中运行。您现在可以使用permalias命令创建永久别名,例如permalias cls=clear

  • 使用说明:当我输入 `mkalias smount='sudo mount'` 时,引号并没有完全重复,所以我的解决方案是 `mkalias "smount='sudo mount'"` 如果你要为 2+ 字命令添加别名,你需要这个也是。 (4认同)

pop*_*pey 5

将该命令粘贴在最后一行~/.bash_profile

  • 为什么不是`~/.bashrc`? (3认同)
  • 我理解 bashrc 是首选,但不清楚为什么 (2认同)

小智 5

http://www.joshstaiger.org/archives/2005/07/bash_profile_vs.html之间的差额~/.bash_profile,并~/.bashrc

~/.bashrc每次打开新终端时都会运行,而~/.bash_profile不是。~/.bashrc包含以下内容,其中包括~/.bash_aliases文件。这将是添加别名的最合适的位置。

# 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)