如何设置 visudo 以使用与 Fedora 上的默认编辑器不同的编辑器?

tsh*_*ang 40 sudo

Fedora 14 在运行 visudo 时默认使用 vi。有没有办法将其更改为其他内容?

Tok*_*Tok 54

添加Defaults editor=/path/to/editorsudoers 文件将导致 visudo 使用指定的编辑器进行更改。

此外,如果您的 sudo 包是使用 --with-env-editor 构建的,这是某些 Linux 发行版的默认设置,您还可以通过执行 来设置 EDITOR 环境变量export EDITOR=/path/to/editor。在命令行上执行,这将在该 shell 会话终止后立即恢复,在 ~/.bashrc 或 /etc/profile 中设置变量将导致更改持续存在。

  • @Gilles - 根据我的阅读,Ubuntu 最近将其 sudo 包的构建参数更改为不包括 `--with-env-editor`,最近这里的意思是在互联网的记忆中。此外, sudo 包在一段时间前更改了它们的默认值,以使用 vi 作为它们的默认编辑器,我认为这与有关接受环境变量的行为的更改相吻合。目前,我没有明确的时间表说明这些事件如何、何时或是否相互关联。 (3认同)
  • `sudo EDITOR=/usr/bin/vi visudo` 是我用来让它工作的。 (3认同)

Tom*_*che 15

下列

  • 适用于使用的发行版alternatives(最初只是 Debian 及其分支,但现在大多数主要发行版,IIUC)。
  • 有这样的优势

    1. 您无需sudoers先使用其默认编辑器进行编辑
    2. 它的工作原理,即使包=sudo没有已建成具有--with-env-editor

从命令行:

  1. sudo update-alternatives --config editor
  2. 从(文本模式)菜单中选择所需的编辑器。如果你没有看到你想要的编辑器,你可能需要安装它;取消,这样做,然后重复。

sudo visudo 现在应该打开您选择的编辑器。


Gil*_*il' 9

想要调用编辑器的普通 unix 程序将运行名称在EDITORVISUAL环境变量中的程序,如果未设置该变量,则为依赖于系统的默认值。许多(但不是全部)程序同时检查EDITORVISUAL;这种区别早已过时(一旦您EDITOR在电传打字机和VISUAL“玻璃”终端上运行......),因此您应该将两者设置为相同的值。关于变量的内容应该是可执行文件的完整路径、在 中查找的可执行文件名称$PATH还是 shell 片段存在一些分歧,因此您应该坚持使用不包含任何 shell 元字符的可执行文件的路径。当两个变量都没有设置时的系统默认值传统上是vi,尽管一些发行版已将其更改为对新手更友好的编辑器,例如nano.

visudo检查VISUALEDITOR(这可以编译出来,大概是为了劝阻 root 用户不要使用发行版制造商不信任其安全性的编辑器,但即使 OpenBSD 也不这样做)。


小智 8

visudoEDITOR例如,使用变量。

sudo EDITOR=/path/to/editor visudo
Run Code Online (Sandbox Code Playgroud)

  • 这是极好的。它解决了使用默认编辑器更改默认编辑的循环问题。 (2认同)

Eri*_*ski 6

这些步骤让我在 Ubuntu 12.04 上将 visudo 的编辑器设置为 vi,它们可能适用于其他发行版:

发出命令:

sudo visudo
Run Code Online (Sandbox Code Playgroud)

这将打开 nano 中的 sudoers 文件。在顶部附近,您将看到此行:

Defaults    env_reset
Run Code Online (Sandbox Code Playgroud)

在上述行下方添加以下行:

Defaults    editor=/usr/bin/vi
Run Code Online (Sandbox Code Playgroud)

保存文件并退出。以默认用户身份重新打开 visudo:

sudo visudo
Run Code Online (Sandbox Code Playgroud)

sudoers 文件现在在 VI 中打开。