Linux shell 脚本中使用 alias 定义的别名

时间:2022-07-21 22:29:54

https://www.cnblogs.com/chenjo/p/11145021.html

核心知识点: 用 shopt 开启和关闭 alias 扩展

交互模式下alias 扩展默认是开启的,脚本模式下默认是关闭的 ****
alias 扩展的名称是 expand_aliases

alias 定义

在当前session中,可以直接在命令行执行 alias alias-name-define="xxxx"

比如:

root@pts/9 $ alias aliasTest="echo Hello world"

root@pts/9 $ aliasTest

Hello world

如果想要永久保存定义的alias,可以将其写入到 /etc/profile 或者 ~/.bash_rc 中去,两个的区别是影响的范围不一样而已

root@pts/9 $ vim ~/.bash_rc

root@pts/9 $ tail -1 ~/.bash_rc

alias aliasTest="echo Hello world"

打开新的session 在命令行先执行source ~/.bash_rc 再执行 aliasTest 输出同样的结果

在脚本中使用 alias

先看执行的结果

[root@node1 ~]# ./test.sh

如果alias是在~/.bash_rc等文件中定义,需要先执行 source ~/.bash_rc

检查默认情况下shell脚本中是否开启alias扩展

expand_aliases off

默认情况下执行定义的alias

./test.sh: line 8: aliasTest: command not foundshell中开启alias扩展shell中开启alias扩展之后检查

expand_aliases onshell中开启alias扩展之后,使用alias别名

Hello world

[root@node1 ~]#

再研究具体的脚本

# 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