小编Bir*_*abs的帖子

从 ~/.zshrc sudo'ing 函数时“找不到命令”

我有一个功能~/.zshrc

findPort() {
    lsof -t -i :$1
}
Run Code Online (Sandbox Code Playgroud)

通常的调用是findPort 3306.

我想以提升的权限运行它。但我得到“找不到命令”。

?  git  sudo findPort 3306
sudo: findPort: command not found
Run Code Online (Sandbox Code Playgroud)

我认为原因是 root 用户要么作为非交互式 shell 运行(因此不指代 .zshrc),要么指代不同的 .zshrc.

我见过关于 的类似问题alias,但没有关于用户定义函数的问题。此问题的答案alias涉及将别名添加到~/.zshrc

alias sudo='nocorrect sudo '
Run Code Online (Sandbox Code Playgroud)

也许:

alias sudo='sudo '
Run Code Online (Sandbox Code Playgroud)

我已经尝试了这两种解决方案,但问题仍然存在(是的,我已经重新启动了 shell)。

我还尝试运行sudo chsh以确保我的 root shell 在zsh. 这些解决方案都没有消除“找不到命令”的问题。

有没有办法在 sudo 下运行我的用户定义函数?

zsh sudo

11
推荐指数
1
解决办法
6861
查看次数

标签 统计

sudo ×1

zsh ×1