2015-07-12 63 views
1

我在我的~/.zshrc中添加了以下自定義函數,但是當我使用sudo運行命令時,找不到命令。爲什麼我的自定義命令不能在zsh中使用sudo?

woodo() { 
    if [ $EUID != 0 ]; then 
     echo "It's a weird tree." 
    else 
     echo '  _    __' 
     echo ' /`\ (~._ ./ )' 
     echo ' \__/ __`-_\__/ ./' 
     echo ' _ \ \/ \ \ |_ __' 
     echo ' ( ) \__/ -^ \/\' 
     echo ' \_/ " \ | o o |../__' 
     echo "  \\. --' ====/||/\\ " 
     echo '   \ . . |---__.\__/' 
     echo '  /: / | |' 
     echo '  / : / \_/' 
     echo '  --/ :: (' 
     echo '  ( |  ( (____' 
     echo ' .-- .. ----**.____)' 
     echo ' \___/   ' 
    fi 
} 

$ woodo 
It's a weird tree. 
$ sudo woodo 
sudo: woodo: command not found 

我也修改它來檢查$UID,(如建議here),但它仍然是行不通的:

... 
if [[ $UID !=0 || $EUID != 0 ]]; then 
... 

回答

1

這是sudo woodo運行woodo爲根,不是一般用戶。我不是sudo的專家,但我的猜測是啓動一個新的shell,可能bash而不是zsh,作爲根。因此,您的個人~/.zshrc不涉及。即使sudo確實使用zsh,它也可能使用/root/.zshrc進行初始化。

無論哪種方式,您的個人~/.zshrc不使用sudo下。

+0

謝謝!我將它作爲'/ usr/local/bin'中的一個文件添加並且現在可以運行。 – avi

+0

'sudo'需要一個可執行文件,它可以傳遞給'execve'作爲運行命令。 Shell函數,別名和其他任意shell命令都被排除。 – chepner

相關問題