Shell
為什麼 sudo 忽略別名?
我正在執行 Ubuntu 10.04 並
upstart
用於守護程序管理。我的企業應用程序作為守護程序執行,並且由於各種特權而必須以 root 身份執行。例如:sudo start my-application-long-ID sudo stop my-application-long-ID etc
我想介紹一個
alias
將這些命令縮寫為:alias startapp='sudo start my-application-long-ID'
並按原樣執行它
startapp
,但我希望別名中沒有 sudo 。alias startapp='start my-application-long-ID'
執行時不使用
sudo startapp
,返回sudo: startapp: command not found
。但是,當我添加別名時:
alias sudo='sudo '
sudo startapp
現在有效,但我仍然很好奇為什麼 sudo 忽略別名。
我從這裡看到以下資訊。
使用 sudo 時,請使用別名擴展(否則 sudo 會忽略您的別名)
alias sudo='sudo '
這裡解釋了它不起作用的原因。
Bash 只檢查命令的第一個單詞是否有別名,之後的任何單詞都不會檢查。這意味著在像 sudo ll 這樣的命令中,bash 只檢查第一個單詞 (sudo) 的別名,忽略 ll。我們可以通過在別名值的末尾添加一個空格來告訴 bash 檢查別名之後的下一個單詞(即 sudo)。