linux系统设置命令别名的方法

07-11

最近搞一个Django站点,需要经常进入/var/www/site/mycitsm/这个目录,每次都得重复的输入这一长串路径进入该目录,显得麻烦而费时,有没有一种好的方式可以将“cd /var/www/site/mycitsm”这样一个命令取一个别名,每次只需输入该别名就可以进入该目录呢?

很庆幸,Linux系统提供了一个有用的工具叫alias,可以让我们将一些需要频繁使用的但又过于冗长的命令设置一个别名,这样一来,以后只需输入一个简短的别名就可以达到同样的作用。

用法:alias [-p] [name[=value] ... ] 注意‘=’和字符串之间不能包含空格

显示当前设置的别名:
shell>alias -p
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

或者直接输入:
shell>alias -p
alias l.='ls -d .* --color=tty'
alias ll='ls -l --color=tty'
alias ls='ls --color=tty'
alias vi='vim'
alias which='alias | /usr/bin/which --tty-only --read-alias --show-dot --show-tilde'

若只想显示某个别名代表的含义可输入alias name,比如:
shell>alias ll
alias ll='ls -l --color=tty'

若想为某个命令设置别名可输入 alias 新命令='原命令 选项/参数',比如:
shell>alias site='cd /var/www/site/mycitsm/'

若想取消某个别名可输入unalias name,比如
shell>unalias site

但是,上述设置方法存在一个问题,也即设置的命令别名只针对当前回话有效,一旦连接断开并重连之前设置的别名别不在有效。

可以通过将设置别名的命令写进启动文件使别名持久生效。大多数Linux发行版使用下述三个启动文件中的一个:
$HOME/.bash_profile
$HOME/.bash_login
$HOME/.profile
可将设置别名的命令写进启动文件内,这样,每次连入系统的时候别名都会生效。若想在命令写入启动文件后立即生效记得执行source命令,比如:
source $HOME/.bash_profile

通过上述方式设置命令别名解决了命令别名只针对回话生效的问题,但是,写进每个用户特定的主目录下的启动文件中的命令别名只针对该用户有效。对其他用户没有什么效果,这通常也是正常情况下期望看到的情况。但如果确实像使设置的别名对任意用户有效则可将设置别名的命令写进全局启动文件中,如/etc/profile。