核心知識點: 用 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 found
shell中開啟alias擴展
shell中開啟alias擴展之后檢查
expand_aliases on
shell中開啟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 |