无法在超级用户模式下打开 GUI 编辑器

Nan*_*mbe 4 editors sudo gedit

我试图编辑我sources.list的以添加本地镜像信息。我对命令行编辑器不满意,所以我尝试使用sudo mousepad /etc/apt/sources.list.

我收到以下错误报告。

No protocol specified

(mousepad:4942): Mousepad-ERROR **: Cannot open display: 
Run Code Online (Sandbox Code Playgroud)

我尝试了其他几个编辑器,如 gedit、kwrite 等,但我得到了类似的错误报告。

No protocol specified

** (gedit:4957): WARNING **: Could not open X display
No protocol specified
Unable to init server: Could not connect: Connection refused

(gedit:4957): Gtk-WARNING **: cannot open display: :0
Run Code Online (Sandbox Code Playgroud)

我在运行 Debian Jessie 的本地 64 位系统上。

Ste*_*itt 7

你不应该以 root 身份运行编辑器来编辑系统文件,你应该使用sudoedit(特别是因为你已经sudo设置了)。这将制作文件的副本,您可以对其进行编辑,在您选择的编辑器中打开它,等待您完成编辑,如果您对其进行了更改,请将其复制回系统文件。

更详细地说,你会运行类似

SUDO_EDITOR="gedit -w" sudoedit /etc/apt/sources.list
Run Code Online (Sandbox Code Playgroud)

这会:

  • 检查您是否可以编辑该文件(根据 中的sudo配置/etc/sudoers;您的应该已经可以了);
  • 复制/etc/apt/sources.list到临时文件并使其可编辑;
  • gedit临时文件开始;
  • 等待您关闭文件(这就是我们需要该-w选项的原因);
  • 检查您是否对临时文件进行了更改,如果是,请将其复制到原始文件上。

您可以SUDO_EDITOR在 shell 的启动文件中永久设置(例如 ~/.bashrc)。如果未定义,sudoedit还将检查VISUALEDITOR。您可以指定您喜欢的任何编辑器,只要它能够等待编辑会话完成即可。