如何在我的bashrc中檢查是否已設置別名。如何在我的bashrc中檢查是否已設置別名
當我一個源文件的bashrc,其中有一個函數名,說樂趣,和我目前的環境有一個別名爲樂趣也。
我試過unalias樂趣,但是這會給我一個錯誤,當我的環境不會有這個別名時就沒有找到樂趣。
所以在我的bashrc中,在我的fun函數中,我想檢查是否設置了別名,然後unalias。
如何在我的bashrc中檢查是否已設置別名。如何在我的bashrc中檢查是否已設置別名
當我一個源文件的bashrc,其中有一個函數名,說樂趣,和我目前的環境有一個別名爲樂趣也。
我試過unalias樂趣,但是這會給我一個錯誤,當我的環境不會有這個別名時就沒有找到樂趣。
所以在我的bashrc中,在我的fun函數中,我想檢查是否設置了別名,然後unalias。
如果你只是想確保別名不存在,只是unalias它和它的錯誤重定向到/ dev/null的是這樣的:
unalias foo 2>/dev/null
如果一個別名設置與您可以檢查是這樣的:
alias foo 2>/dev/null >/dev/null && echo "foo is set as an alias"
正如手冊頁指出:
For each name in the argument list for which no value is sup-
plied, the name and value of the alias is printed. Alias
returns true unless a name is given for which no alias has been
defined.
只需使用命令alias
像
alias | grep my_previous_alias
請注意,您可以實際使用unalias
,所以你可以不喜歡
[ `alias | grep my_previous_alias | wc -l` != 0 ] && unalias my_previous_alias
,如果它被設置,將刪除該別名。
您可以使用type
查看命令是否存在,或者是否是別名。
如果找不到命令,它將返回錯誤狀態。
例如,我定義以下別名:
$ alias foo="printf"
然後檢查以下方案:
$ type foo >/dev/null && echo Command found. || echo Command not found.
Command found.
或專門爲別名:
$ alias foo && echo Alias exists || echo Alias does not exist.
,或者檢查無論是別名還是常規命令:
$ grep alias <(type foo) && echo It is alias. || echo It is not.
要檢查別名是否在您的rc文件中定義,需要手動檢查它,例如,由:
[ "$(grep '^alias foo=' ~/.bash* ~/.profile /etc/bash* /etc/profile)" ] && echo Exists. || echo Not there.
好特定的bash-溶液來檢查別名使用BASH_ALIASES陣列,例如是:
$ echo ${BASH_ALIASES[ls]}
您可以使用下面的方法使你的.bashrc文件簡單:
alias fun=''
unalias fun
fun()
{
# Define the body of fun()
}
我用這個來測試'我的Mac和Linux機器之間la'。在Mac上的.bash_profile中,我有'alias la ='ls -GA'(因爲G是彩色的),然後在我的'.bashrc'中有函數checkLa(){if [「$(alias | grep la) 「==」ls -GA「];然後回顯「mac用戶!」;返回0; fi echo「linux user!」; alias la ='ls -A --color = auto'}; checkLa()'。我知道別名也會返回所有的別名,但我只是沒有想到它! :d – dylnmc 2014-09-23 21:02:20