Bash
讓 sudo 為別名工作
我在有 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
:如果別名值的最後一個字元是空白,則還檢查別名後的下一個命令字是否有別名擴展。
其次,在許多發行版上,
$PATH
sudo 不會將其傳播到新的 shell。您可以手動更改secure_path
以添加sublime_text
執行檔所在的目錄:Defaults secure_path = [...]:/usr/local/share/applications/sublime-text-3
…或者您可以完全禁用secure_path(注意:
secure_path
確保攻擊者無法更改您的路徑並使用它來影響您將以root身份執行的命令,因此請仔細考慮這一點):Defaults !secure_path