Ubuntu 22.04下非root用户执行crontab -e报错/bin/sh: 1: mvim: not found
Ubuntu 22.04下非root用户执行crontab -e报错/bin/sh: 1: mvim: not found
问题重现
你碰到的情况确实挺典型的:非root账号执行crontab -e时会抛出以下错误:
/bin/sh: 1: mvim: not found
crontab: "mvim" exited with status 127
但切换到root用户用sudo crontab -e却能正常编辑定时任务,而且你只做过常规的aptitude系统升级,完全没头绪哪里出了问题。
问题根源
其实问题出在你的~/.zshrc配置里的编辑器环境变量设置。crontab在运行时不会加载交互式shell的配置文件(比如.zshrc),它的执行环境非常精简,找不到你设置的mvim编辑器;而root用户的环境可能默认使用vim,所以没这个问题。
已验证的解决方法
你自己找到的方案完全可行:打开~/.zshrc,找到这段关于默认编辑器的配置并注释掉,就能解决问题了:
# Preferred editor for local and remote sessions #if [[ -n $SSH_CONNECTION ]]; then #export EDITOR='vim' #else #export EDITOR='mvim' #fi
如果之后你还想自定义默认编辑器,建议换一种方式:比如在~/.profile里全局设置export EDITOR='vim',或者确保mvim的完整路径被加入到crontab能识别的环境变量中。不过最直接的就是暂时注释掉这段区分本地/远程的编辑器配置,让crontab使用系统默认编辑器即可。
备注:内容来源于stack exchange,提问作者Paul B
相关产品推荐
相关产品推荐

