为什么我的自定义命令不能通过 zsh 中的 sudo 工作?
Why my custom command wouldn't work over sudo in zsh?
我在我的 ~/.zshrc
中添加了以下自定义函数,但是当我使用 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
...
它是 sudo woodo
以 root 而非普通用户身份运行 woodo
。我不是 sudo
方面的专家,但我的猜测是它以 root 身份启动了一个新的 shell,可能是 bash
而不是 zsh
。因此,您的个人 ~/.zshrc
不涉及。即使 sudo
确实使用 zsh
,它也可能使用 /root/.zshrc
.
进行初始化
不管怎样,你的个人 ~/.zshrc
没有在 sudo
下使用。
我在我的 ~/.zshrc
中添加了以下自定义函数,但是当我使用 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
...
它是 sudo woodo
以 root 而非普通用户身份运行 woodo
。我不是 sudo
方面的专家,但我的猜测是它以 root 身份启动了一个新的 shell,可能是 bash
而不是 zsh
。因此,您的个人 ~/.zshrc
不涉及。即使 sudo
确实使用 zsh
,它也可能使用 /root/.zshrc
.
不管怎样,你的个人 ~/.zshrc
没有在 sudo
下使用。