最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

在Bash腳本中引入alias的方法

 更新時間:2021年03月09日 08:38:19   作者:后端技術小屋  
這篇文章主要介紹了在Bash腳本中引入alias的方法,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

alias的使用

在日常開發(fā)中,為了提高運維效率,我們會用alias(命令別名)來定義命令的簡稱。比如在~/.bash_profile中添加:

alias ll='ls -lrt --color'
alias bdebug="go build -gcflags '-N -l'"
alias py3='/usr/bin/python3'

執(zhí)行source ~/.bash_profile之后,這些alias定義便載入到當前終端環(huán)境中,我們可以通過alias <cmd>進行查看

$ alias ll 
ll='ls -lrt --color'

$ alias bdebug
bdebug='go build -gcflags '\''-N -l'\'

在命令行執(zhí)行alias也能看到預期效果

$ 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

在Bash腳本中引入alias的問題

但是有些時候,我們希望將~/.bash_profile中定義好的alias引入Bash腳本中,以便簡化命令。例如

腳本文件test.sh

#!/bin/bash
source ~/.bash_profile
ll

執(zhí)行test.sh文件卻會報錯

$ bash test.sh 
test.sh: line 5: ll: command not found

這是因為在Bash中,alias默認是不能引入Bash腳本中的。Bash的官方文檔其實更建議你使用function而非alias。那么問題來了,既然我辛辛苦苦寫了這么多alias,總不能全部改成function吧,那得多費勁?

幸好,解決方法還是有的.

解決方法

只需要在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

關鍵在于shopt -s expand_aliases這句話,shopt是一個命令,使用它可以控制一些shell相關的開關:expand_aliases就是其中一個,當它被開啟之后,Bash腳本中的所有命令別名alias都會被展開。

expand_aliases
If set, aliases are expanded as described below under Aliases, Aliases. This option is enabled by default for interactive shells.

總結(jié)

  • alias命令可幫助我們自定義命令別名,簡化運維操作
  • 缺省情況下無法將終端環(huán)境中的alias引入到Bash腳本中
  • 通過shopt -s expand_aliases,可以解決上述問題。

參考

https://www.gnu.org/software/bash/manual/html_node/The-Shopt-Builtin.html

到此這篇關于在Bash腳本中引入alias的方法的文章就介紹到這了,更多相關Bash腳本引入alias內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

最新評論

昭觉县| 蒲城县| 湖南省| 南宫市| 永春县| 建德市| 新巴尔虎右旗| 巴楚县| 昆明市| 祁阳县| 恩平市| 苏尼特右旗| 滁州市| 凤翔县| 芜湖县| 新津县| 景谷| 济源市| 毕节市| 彝良县| 交城县| 饶河县| 遵化市| 肥乡县| 吕梁市| 洛南县| 通江县| 揭东县| 华容县| 无棣县| 莱阳市| 清涧县| 桐梓县| 托克托县| 海林市| 佛冈县| 大同市| 秭归县| 皋兰县| 中阳县| 沈丘县|