Atom 打开一个名为 ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT=false 的新文件

Yoa*_*a G 32 atom-editor

每当我启动 Atom 时,它都会打开两个文件,一个名为:

ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT=false
Run Code Online (Sandbox Code Playgroud)

而另一个:

/usr/bin/atom
Run Code Online (Sandbox Code Playgroud)

这真的很烦人,我不明白如何解决它。据我所知,这是某种环境配置错误,但我找不到导致它的原因。

Ita*_*dev 60

我要做几个假设。您在 Ubuntu 上运行并且您已经通过 Snap 安装了 Atom。

如果这些假设是正确的,则问题的原因是来自 Snap 包作者的应用程序菜单项配置错误。

要修复它,您只需要运行以下命令:

sudo sed -i 's/Exec=env BAMF_DESKTOP_FILE_HINT=\/var\/lib\/snapd\/desktop\/applications\/atom_atom.desktop \/snap\/bin\/atom ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT=false \/usr\/bin\/atom %F/Exec=env BAMF_DESKTOP_FILE_HINT=\/var\/lib\/snapd\/desktop\/applications\/atom_atom.desktop ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT=false \/snap\/bin\/atom %F/' /var/lib/snapd/desktop/applications/atom_atom.desktop
Run Code Online (Sandbox Code Playgroud)

TL;博士{

这是导致问题的原因以及上述命令的作用的详细说明。如果自从编写答案以来文件已更改,这可能很有用。

该错误的实际原因是此菜单项文件:

/var/lib/snapd/desktop/applications/atom_atom.desktop
Run Code Online (Sandbox Code Playgroud)

它有一个拼写错误,在调用atom可执行文件后设置了环境变量应该是什么,导致 Atom 将其视为它应该打开的文件形式的参数。

/var/lib/snapd/desktop/applications/atom_atom.desktop
Run Code Online (Sandbox Code Playgroud)

它应该是:

#                                                                                     ? Executable   ? Not an environment variable                   ? Not an executable
Exec=env BAMF_DESKTOP_FILE_HINT=/var/lib/snapd/desktop/applications/atom_atom.desktop /snap/bin/atom ATOM_DISABLE_SHELLING_OUT_FOR_ENVIRONMENT=false /usr/bin/atom %F
Run Code Online (Sandbox Code Playgroud)

上述解决方案sed用于搜索和替换文件并修复问题。

}

注意:该命令将一直有效,直到 Snap 作者更新菜单项文件 (.desktop) 时,希望问题已得到解决。

  • 很好的答案,不仅是解决问题的方法,而且也是一个简洁的解释。像这样的答案就是堆栈溢出如此令人敬畏的原因。 (2认同)