Linux shell 脚本中使用 alias 定义的别名
核心知识点: 用 shopt 开启和关闭 alias 扩展
交互模式下 alias 扩展默认是开启的, 脚本模式下默认是关闭的 ****
alias 扩展的名称是 expand_aliases
alias 定义
在当前 session 中, 可以直接在命令行执行 alias alias-name-define="xxxx"
比如:[emailprotected]/9$aliasaliasTest="echo Hello world"
[emailprotected]/9$ aliasTest
Helloworld
如果想要永久保存定义的 alias, 可以将其写入到 /etc/profile 或者 ~/.bash_rc 中去, 两个的区别是影响的范围不一样而已[emailprotected]/9$ VIM~/.bash_rc
[emailprotected]/9$ tail-1~/.bash_rc
aliasaliasTest="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 别名Helloworld
[[emailprotected]~]#
再研究具体的脚本# 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 内置命令的帮助信息)CommandDescshopt -s opt_nameEnable (set) opt_name
shopt -u opt_nameDisable (unset) opt_name
shopt opt_nameShow current status of opt_name
参考资料
.bash_profile 和. bashrc
来源: http://www.bubuko.com/infodetail-3116026.html