Answers:
您正在为自己的用户设置变量,但systemctl
以root(sudo
)身份运行命令。因此,为用户设置的变量无关紧要。
要解决此问题,您可以选择其中一个(但请选择1):
运行sudo
时-E
可以导出当前环境:
sudo -E systemctl edit _unit_
将变量(您只需要这样做SYSTEMD_EDITOR
)添加到root的~/.profile
:
export SYSTEMD_EDITOR="/bin/vi"
然后运行
sudo -i systemctl edit _unit_
最后,请注意,您需要指定编辑器的完整路径,而不仅仅是其名称。所以/bin/vi
不是vim
。
vim
,它抱怨这就是为什么我提到它。嘿,我是emacs用户:)
vim
!我花了三天时间把事情关了。
第一种方法,您可以将此行添加到~/.bashrc
:
export SYSTEMD_EDITOR=vim
然后sudo visudo
添加以下行:
Defaults env_keep += "SYSTEMD_EDITOR"
启动新的bash会话生效,然后sudo systemctl edit <foo>
照常运行。
第二种方法是使用update-alternatives
:
安装您需要的editor
,例如vim.gtk3
:
$哪个编辑 编辑器是/ usr / bin / editor $ sudo update-alternatives --install“ $(哪个编辑器)”编辑器“ $(哪个vim.gtk3)” 15
然后选择您想要的editor
:
$ sudo update-alternatives --config editor
There are 7 choices for the alternative editor (providing /usr/bin/editor).
Selection Path Priority Status
------------------------------------------------------------
0 /usr/bin/vim.gtk3 50 auto mode
1 /bin/ed -100 manual mode
* 2 /bin/nano 40 manual mode
3 /usr/bin/code 0 manual mode
4 /usr/bin/gedit 5 manual mode
5 /usr/bin/vim.basic 30 manual mode
6 /usr/bin/vim.gtk3 50 manual mode
7 /usr/bin/vim.tiny 15 manual mode
Press <enter> to keep the current choice[*], or type selection number: 6
update-alternatives: using /usr/bin/vim.gtk3 to provide /usr/bin/editor (editor) in manual mode
第三种方法是直接设置EDITOR
运行时:
sudo EDITOR=vim systemctl edit <foo>
优先级为第一方法>第三方法>第二方法。
不要尝试设置“ GUI”编辑器,例如,gedit
因为为什么不与Wayland一起使用gksu / gksudo或使用sudo启动图形应用程序?与
Gedit的使用100%的CPU,而编辑文件
vim
不是gedit
。
gedit
只是证明gui编辑器正在工作的一个示例,当然您可以使用vim
此答案。
sudo visudo
:我太快接受了第一个响应。我一直在寻找的正是/etc/suddoers
您建议的文件修改。感谢您,不选择您的解决方案,对不起。我的错。
gedit
。
sudo -E ...
修改后,我已经在使用/root/.bashrc
。但是,没有想到将sudo作为登录shell(sudo -i ...
)运行。两者都不尽如人意,因为您需要记住相应的标志,但是,嘿……我想……还有更糟的事情,不过(也许很有趣),我确认对于我们中的某些人:(SYSTEMD_EDITOR=/usr/bin/vim; export SYSTEMD_EDITOR
作为根)对。路径都取决于您如何将yrvim
pkg安装在第一位置。再加上我为root定义的PATH,vim
就足够了。不仅有一种方法可以做到这一点。谢谢@terdon。