我有一个功能~/.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 下运行我的用户定义函数?