本篇文章給大家分享的是有關(guān)怎么在Bash腳本中引入alias方法,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說(shuō),跟著小編一起來(lái)看看吧。
創(chuàng)新互聯(lián)作為成都網(wǎng)站建設(shè)公司,專注成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計(jì),有關(guān)成都企業(yè)網(wǎng)站定制方案、改版、費(fèi)用等問(wèn)題,行業(yè)涉及垃圾桶等多個(gè)領(lǐng)域,已為上千家企業(yè)服務(wù),得到了客戶的尊重與認(rèn)可。在日常開發(fā)中,為了提高運(yùn)維效率,我們會(huì)用alias(命令別名)來(lái)定義命令的簡(jiǎn)稱。比如在~/.bash_profile
中添加:
alias ll='ls -lrt --color' alias bdebug="go build -gcflags '-N -l'" alias py3='/usr/bin/python3'
執(zhí)行source ~/.bash_profile
之后,這些alias定義便載入到當(dāng)前終端環(huán)境中,我們可以通過(guò)alias
進(jìn)行查看
$ alias ll ll='ls -lrt --color' $ alias bdebug bdebug='go build -gcflags '\''-N -l'\'
在命令行執(zhí)行alias也能看到預(yù)期效果
$ ll total 44 -rw-rw-r-- 1 liyang liyang 62 Sep 16 09:38 test.c -rw-rw-r-- 1 liyang liyang 68 Sep 16 09:38 foo.h -rw-rw-r-- 1 liyang liyang 74 Sep 16 09:38 foo.c -rwxrwxr-x 1 liyang liyang 8592 Sep 16 09:44 libfoo.so -rw-rw-r-- 1 liyang liyang 4347 Sep 16 09:44 o23.s -rwxrwxr-x 1 liyang liyang 9451 Sep 16 09:45 test
但是有些時(shí)候,我們希望將~/.bash_profile
中定義好的alias引入Bash腳本中,以便簡(jiǎn)化命令。例如
腳本文件test.sh
#!/bin/bash source ~/.bash_profile ll
執(zhí)行test.sh文件卻會(huì)報(bào)錯(cuò)
$ bash test.sh test.sh: line 5: ll: command not found
這是因?yàn)樵贐ash中,alias默認(rèn)是不能引入Bash腳本中的。Bash的官方文檔其實(shí)更建議你使用function
而非alias
。那么問(wèn)題來(lái)了,既然我辛辛苦苦寫了這么多alias,總不能全部改成function吧,那得多費(fèi)勁?
幸好,解決方法還是有的.
只需要在test.sh中加入一行shopt -s expand_aliases
新的腳本文件
#!/bin/bash shopt -s expand_aliases source ~/.bash_profile ll
執(zhí)行一下,果然成功了,這是為什么呢?
$ bash test.sh total 48 -rw-rw-r-- 1 liyang liyang 62 Sep 16 09:38 test.c -rw-rw-r-- 1 liyang liyang 68 Sep 16 09:38 foo.h -rw-rw-r-- 1 liyang liyang 74 Sep 16 09:38 foo.c -rwxrwxr-x 1 liyang liyang 8592 Sep 16 09:44 libfoo.so -rw-rw-r-- 1 liyang liyang 4347 Sep 16 09:44 o23.s -rwxrwxr-x 1 liyang liyang 9451 Sep 16 09:45 test -rw-rw-r-- 1 liyang liyang 64 Mar 8 21:33 test.sh
關(guān)鍵在于shopt -s expand_aliases
這句話,shopt
是一個(gè)命令,使用它可以控制一些shell相關(guān)的開關(guān):expand_aliases
就是其中一個(gè),當(dāng)它被開啟之后,Bash腳本中的所有命令別名alias
都會(huì)被展開。
expand_aliases
If set, aliases are expanded as described below under Aliases, Aliases. This option is enabled by default for interactive shells.
以上就是怎么在Bash腳本中引入alias方法,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過(guò)這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。