1、定义别名
格式: alias name=values
- 等号=前后不能有空格
- values中有空格时,加单引号或双引号
alias t='echo 666'
2、查看别名
3、取消别名
-
取消所有别名
unalias -a -
取消特定name
unalias {name}
4、起别名的弊端
当自己定义的别名恰好和Linux某个指令重名,此后执行的都将时别名对应的指令,如何解决?
5、别名的失效
通过alias设置的别名,仅限于当前shell页面,且重启后,别名失效。别名的永久有效,须在$HOME目录下的.alias文件中,在.bashrc中加入code:
# Aliases
if [ -f ~/.alias ]; then
. ~/.alias
fi
6、单引号与双引号下别名的区别
alias dirA="echo current directory is $PWD"
alias dirB='echo current directory is $PWD'
//root目录下,一切正常
[root@localhost ~]$ dirA
work directory is /root
[root@localhost ~]$ dirB
work directory is /root
切换目录为/root/test后
cd test
//双引号出错
[root@localhost ~]$ dirA
work directory is /root
//单引号正确
[root@localhost ~]$ dirB
work directory is /root/test
造成以上的原因是:双引号下,变量$PWD直接被转换成了字符串,而单引号不受shell影响,这一点查看别名dirA、dirB可以看到:
[roc@localhost ~]$ alias dirA
alias dirA="echo work directory is /root"
[roc@localhost ~]$ alias dirB
alias dirB='echo work directory is $PWD'
7、shell脚本中的别名
将别名直接用在shell脚本中,报错:command not found
为此,使用shell内置的shopt指令来开启alias别名扩展选项expand_aliases
//开启
shopt -s expand_aliases
//查看是否开启
shopt expand_aliases
注意!!
开启alias要在脚本中开启,而不是shell中。因为执行脚本会产生一个新的进程去执行,虽然在 Shell 中 expand_aliases 是 on 状态,但新的这个进程中是off的
脚本中的 alias 没有继承 Shell 中 alias 的设置内容,需要加--login,即#!/bin/bash --login
错误情况一:没在脚本中开启alias
错误情况二:缺少–login
可以看到脚本中的alias指令无输出,即脚本中的 alias 没有继承 Shell 中 alias 的设置内容。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146182.html