核心知识点: 用 shopt 开启和关闭 alias 扩展
交互模式下 alias 扩展默认是开启的, 脚本模式下默认是关闭的 ****
alias 扩展的名称是 expand_aliases
alias 定义
在当前 session 中, 可以直接在命令行执行 alias alias-name-define="xxxx"
比如:
- [email protected]/9 $ alias aliasTest="echo Hello world"
- [email protected]/9 $ aliasTest
- Hello world
如果想要永久保存定义的 alias, 可以将其写入到 /etc/profile 或者 ~/.bash_rc 中去, 两个的区别是影响的范围不一样而已
- [email protected]/9 $ VIM ~/.bash_rc
- [email protected]/9 $ tail -1 ~/.bash_rc
- alias aliasTest="echo Hello world"
打开新的 session 在命令行先执行 source ~/.bash_rc 再执行 aliasTest 输出同样的结果
在脚本中使用 alias
先看执行的结果
[[email protected] ~]# ./test.sh
如果 alias 是在~/.bash_rc 等文件中定义, 需要先执行 source ~/.bash_rc
检查默认情况下 shell 脚本中是否开启 alias 扩展
expand_aliases off
默认情况下执行定义的 alias
./test.sh: line 8: aliasTest: command not found
shell 中开启 alias 扩展
shell 中开启 alias 扩展之后检查
expand_aliases on
shell 中开启 alias 扩展之后, 使用 alias 别名
- Hello world
- [[email protected] ~]#
再研究具体的脚本
- # cat test.sh
- echo "如果 alias 是在~/.bash_rc 等文件中定义, 需要先执行 source ~/.bash_rc"
- source /root/.bash_rc
- echo "检查默认情况下 shell 脚本中是否开启 alias 扩展"
- shopt expand_aliases
- echo "默认情况下执行定义的 alias"
- aliasTest
- echo "shell 中开启 alias 扩展"
- shopt -s expand_aliases
- echo "shell 中开启 alias 扩展之后检查"
- shopt expand_aliases
- echo "shell 中开启 alias 扩展之后, 使用 alias 别名"
- aliasTest
附加
(执行 help shopt 可以查看该 shell 内置命令的帮助信息)
Command | Desc |
---|---|
shopt -s opt_name | Enable (set) opt_name |
shopt -u opt_name | Disable (unset) opt_name |
shopt opt_name | Show current status of opt_name |
参考资料
.bash_profile 和. bashrc
来源: http://www.bubuko.com/infodetail-3116026.html