为什么我的默认 crontab 编辑器发生了改变?

为什么我的默认 crontab 编辑器发生了改变?

我有一个 Amazon Linux 实例,多年来一直用作 Web 服务器。我已经有一段时间没有登录了。今天我登录后发现默认crontab编辑器已从 更改nanovi

我查看了一下,但无论如何也想不出如何将其改回nano,这引出了一个问题 - 它一开始是如何被普遍改变的?可能是什么原因造成的?

我有两个问题:

  • 怎么会发生这种事?
  • 我怎样才能将其永久改回来?

我在日志或命令历史记录中没有看到任何有帮助的内容,但我注意到acme.sh几个月前我安装了 Let's Encrypt 的新/最新更新程序,并且它确实为 root 用户安装了一个 cronjob(我知道这一点)。

.selected_editor我可以通过设置文件/值或通过来更改默认编辑器export EDITOR=/bin/nano,但这似乎只能解决当前用户的问题(因此,如果我crontab -e -u <otheruse>,它会vi再次编辑),但我希望将默认编辑器更改为crontab,因此无论我以哪个用户身份工作,我都会得到相同的编辑器。

答案1

Unix 系统上编辑器的通常顺序如下:

  1. VISUAL如果用户有 TTY 并且终端不是哑终端(即TERM设置为 以外的其他值dumb),则环境变量的值。
  2. 环境变量的值EDITOR
  3. 默认编辑器,vi

某些系统(例如 Debian)会稍微改变此顺序,通常是通过调用诸如sensible-editor(from sensible-utils) 之类的工具来考虑步骤 2 和步骤 3 之间的其他选项。但是,从我对容器的测试来看,当前版本的 Amazon Linux 似乎并未使用此方法。

如果您使用像 Nano 这样的终端编辑器,您可能只想设置VISUALnano

但是,正如您所注意到的,这在某些情况下不起作用,sudo因为它默认会清除环境,可能除了某些变量,例如TERM。这是出于安全原因,但并非所有系统都默认启用了此选项,并且升级可能导致设置了此选项,而之前没有设置。您可以使用sudo -E不清除环境,手动或通过别名,或者您可以运行sudo visudo并删除如下行:

Defaults    env_reset

请注意,如上所述,这具有安全注意事项,您应该在手册页中阅读相关内容。

相关内容