Root
將 bin 目錄添加到我的路徑中,無法使用“sudo 命令”執行其中的命令
bin
我在我的主文件夾中創建了一個目錄,用於放置所有腳本。然後在我的 .bashrc 我添加了以下內容:export PATH=$PATH:/home/myusername/bin
所以我可以從任何地方訪問我放置在那裡的文件。但有些腳本需要以 root 身份執行。所以我想,我可以將我的 .bashrc 符號連結為 root,(因為 /root/.bashrc 指向 /home/myusername/.bashrc,不知道這是否聰明)所以當我需要以 root 身份執行腳本時我可以這樣做:
sudo program_that_requires_root
但後來我得到一個:
sudo: program_that_requires_root: command not found
如果我以 root 身份登錄並執行程序,它可以正常工作。那麼完成我想要的正確方法是什麼?
您必須確保這兩行存在於 sudoers 文件中。
Defaults env_reset Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:$
有關詳細資訊,請參閱這些 URL:
sudo
在大多數配置中,將環境變數重置PATH
為內置或管理員提供的預設值。因此,您將無法僅鍵入sudo myscript
.您可以編寫一個包裝函式:
sudo () { local cmd case $1 in -*) :;; # there are options, change nothing */*) :;; # explicit path, change nothing *) # a command name, look it up in our $PATH cmd=$(type -p -- "$1") if [[ -n $cmd ]]; then shift; set -- "$c" "$@"; fi;; esac command sudo "$@" }
(這是用於 bash;更改
type -P
為type -p
ksh 或 zsh。)