设置使用 sudo 调用的 crontab -e 的默认编辑器

设置使用 sudo 调用的 crontab -e 的默认编辑器

我在 Debian Squeeze 上使用 Bash。我刚刚阅读了这个主题:将 crontab 的默认文本编辑器更改为 vim

我已将两个变量VISUALEDITOR导出到 vim,供普通用户和 root 使用。这有效 – 当我crontab -e以普通用户或 root 身份输入时,crontab 会运行 vim 进行编辑。

但运行sudo crontab -e会打开nano。

运行sudo echo $EDITOR(或$VISUAL)给出vimint 输出。

答案1

默认情况下,出于安全目的,sudo不保留用户环境。

有多种方法可以解决这个问题;对于您的具体情况,我建议添加VISUAL=/usr/bin/vim(以及EDITOR=/usr/bin/vim对于使用错误的程序)/etc/environment

第二种选择,如果您有一个宽松的 sudo 配置(可能因为只有您,或者所有 sudoers 都有真正的 root 访问权限),则运行visudo并添加Defaults env_keep="VISUAL EDITOR"以允许所有 sudoers 指定他们自己的(即保留该环境变量)。

您现有的 sudoers 文件可能已经有(或包含)一个或多个 env_keep 语句,例如这个(来自 pastebin 示例):

Defaults    env_reset
Defaults    env_keep =  "COLORS DISPLAY HOSTNAME HISTSIZE INPUTRC KDEDIR LS_COLORS"
Defaults    env_keep += "MAIL PS1 PS2 QTDIR USERNAME LANG LC_ADDRESS LC_CTYPE"
Defaults    env_keep += "LC_COLLATE LC_IDENTIFICATION LC_MEASUREMENT LC_MESSAGES"
Defaults    env_keep += "LC_MONETARY LC_NAME LC_NUMERIC LC_PAPER LC_TELEPHONE"
Defaults    env_keep += "LC_TIME LC_ALL LANGUAGE LINGUAS _XKB_CHARSET XAUTHORITY"

第一行将env_keep覆盖您在其上方所做的任何编辑(分配),其他行将扩展列表(+=)。为了让一切按照您习惯的方式工作,除非您有理由更改设置,否则我建议立即添加一行那些:

Defaults    env_keep += "VISUAL EDITOR"

(还有其他选项可以使用您喜欢的编辑器,但它们要么不必要地复杂,要么过于宽容和危险,因此您必须阅读man sudoers,自己弄清楚,并了解可能存在哪些相关问题。)

答案2

这对你有用吗?

sudo VISUAL=vim crontab -e

它对我有用。(Debian 10 buster)

相关内容