Root

將 bin 目錄添加到我的路徑中,無法使用“sudo 命令”執行其中的命令

  • October 19, 2012

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 -Ptype -pksh 或 zsh。)

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