Bash

讓 sudo 為別名工作

  • January 17, 2014

我在有 GNOME 的 Fedora 20 中安裝了 Sublime Text 3,因為我無法從終端呼叫.bash_aliases它我創建了一個文件,其中一行如下:

alias sublime='sublime_text'

因此還通過編輯.bashrc文件添加將 sublime_text 文件位置添加到 PATH:

export PATH=$PATH:/usr/local/share/applications/sublime-text-3/

但是,當我想編輯可能首先獲得sudo 權限的任何文件時,我想做:

sudo sublime sudoLikelyFile

或者

sudo sublime_text sudoLikelyFile

但是我得到:

sudo: sublime: command not found

我該如何解決這個問題?

這裡有兩個潛在的問題。

首先,你需要讓你的shell在以下之後擴展別名sudo

alias sudo='sudo '

來自man bash

如果別名值的最後一個字元是空白,則還檢查別名後的下一個命令字是否有別名擴展。

其次,在許多發行版上,$PATHsudo 不會將其傳播到新的 shell。您可以手動更改secure_path以添加sublime_text執行檔所在的目錄:

Defaults secure_path = [...]:/usr/local/share/applications/sublime-text-3

…或者您可以完全禁用secure_path(注意:secure_path確保攻擊者無法更改您的路徑並使用它來影響您將以root身份執行的命令,因此請仔細考慮這一點):

Defaults !secure_path

引用自:https://unix.stackexchange.com/questions/109722