我有一个 Amazon Linux 实例,多年来一直用作 Web 服务器。我已经有一段时间没有登录了。今天我登录后发现默认crontab
编辑器已从 更改nano
为vi
。
我查看了一下,但无论如何也想不出如何将其改回nano
,这引出了一个问题 - 它一开始是如何被普遍改变的?可能是什么原因造成的?
我有两个问题:
- 怎么会发生这种事?
- 我怎样才能将其永久改回来?
我在日志或命令历史记录中没有看到任何有帮助的内容,但我注意到acme.sh
几个月前我安装了 Let's Encrypt 的新/最新更新程序,并且它确实为 root 用户安装了一个 cronjob(我知道这一点)。
.selected_editor
我可以通过设置文件/值或通过来更改默认编辑器export EDITOR=/bin/nano
,但这似乎只能解决当前用户的问题(因此,如果我crontab -e -u <otheruse>
,它会vi
再次编辑),但我希望将默认编辑器更改为crontab
,因此无论我以哪个用户身份工作,我都会得到相同的编辑器。
答案1
Unix 系统上编辑器的通常顺序如下:
VISUAL
如果用户有 TTY 并且终端不是哑终端(即TERM
设置为 以外的其他值dumb
),则环境变量的值。- 环境变量的值
EDITOR
。 - 默认编辑器,
vi
。
某些系统(例如 Debian)会稍微改变此顺序,通常是通过调用诸如sensible-editor
(from sensible-utils
) 之类的工具来考虑步骤 2 和步骤 3 之间的其他选项。但是,从我对容器的测试来看,当前版本的 Amazon Linux 似乎并未使用此方法。
如果您使用像 Nano 这样的终端编辑器,您可能只想设置VISUAL
为nano
。
但是,正如您所注意到的,这在某些情况下不起作用,sudo
因为它默认会清除环境,可能除了某些变量,例如TERM
。这是出于安全原因,但并非所有系统都默认启用了此选项,并且升级可能导致设置了此选项,而之前没有设置。您可以使用sudo -E
不清除环境,手动或通过别名,或者您可以运行sudo visudo
并删除如下行:
Defaults env_reset
请注意,如上所述,这具有安全注意事项,您应该在手册页中阅读相关内容。