我尝试使用 Emacs、VSCode 等(当然还有 sudo)编辑我的 /etc/hosts 文件,但它一直说我没有编辑该文件的权限。
然后我尝试使用 Vim、Nano 和 Atom...并且它们能够编辑和保存文件。
(运行
echo 'some host' | sudo tee -a /etc/hosts
也效果很好)。
那这是为什么呢?为什么有些编辑器可以毫无问题地编辑文件,而其他编辑器却不能?
尝试使用本地 emacs 打开
C-x C-f /sudo::/etc/hosts
。
我无法真正提供答案,但我确信一件事:你应该避免以 sudo 模式启动 Emacs!
使用另一个答案中提到的
/sudo::/etc/hosts
是一种选择,但我更喜欢使用 sudo -e /etc/hosts
因为这更安全并且可以从命令行运行。这将在默认编辑器中打开文件的副本,并在关闭时将其保存回来。
要将默认编辑器设置为 Emacs,请提前执行
export EDITOR=emacsclient
(我假设您已经启动了 emacs-server)。无论如何,这个设置是一个好主意,因为它可以与许多其他命令行工具一起使用,因此您应该将其放在 shell 初始化配置中。
通常我有一个
e
的 shell 别名,用于使用 emacsclient
打开普通文件,以及 E
通过 sudo -e
打开它,这很容易记住。