1. 程式人生 > >Linux shell 指令碼中使用 alias 定義的別名

Linux shell 指令碼中使用 alias 定義的別名

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

參考資料