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

Coo*_*max 6 linux sudo vim text-editors crontab

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

我已经为普通用户和 root导出了变量VISUALEDITORvim。这是有效的 - 当我crontab -e以普通用户或 root 身份输入时,crontab 运行 vim 进行编辑。

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

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

Gab*_*abe 9

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

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

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

您现有的 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"
Run Code Online (Sandbox Code Playgroud)

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

Defaults    env_keep += "VISUAL EDITOR"
Run Code Online (Sandbox Code Playgroud)

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