8

在 linux 中,如何确定默认的文本编辑器、终端等?

它是否因发行版而异?

4

6 回答 6

3

我之前以一种相当丑陋的方式以编程方式访问了该列表,我确信这不是最好的方式。这些选项存储在一个名为 defaults.list 的文件中(我认为通常是这种情况)。该位置不太通用,我认为它在我的 ubuntu 系统上的 /usr/share/applications/ 中,尽管我认为它确实出现在其他地方。然后我将其视为文本文件。

于 2012-01-06T20:53:32.130 回答
2

解析顺序是$EDITOR-> editor-> 一些预定义的控制台编辑器列表。在 Debian/Ubuntu 上,sensible-editor(andsensible-browsersensible-pager) 将为您进行查找,包括查看正确的环境变量。类似的变量是$PAGER, $SHELL, $BROWSER。要查找文件关联,您可以使用xdg-open.

于 2012-01-06T21:00:15.467 回答
1

每个用户的环境变量告诉你。

  • $EDITOR 为您提供作为文本编辑器启动的命令;
  • $BROWSER 为您提供浏览器
  • $PAGER 为您提供寻呼机(例如或多或少)。

然而,这对命令行软件有效,而桌面环境通常使用它们自己的(内部)变量。

同样在 python 中,您可以使用os.getenv.

于 2012-01-06T20:47:54.967 回答
1

我认为默认编辑器或终端的概念没有意义。对于编辑器,有$EDITOR定义时使用的约定。

在 Debian 和相关系统(例如 Ubuntu、Mint)上,您有类似/usr/bin/editor/usr/bin/x-terminal-emulator符号链接(通过 符号链接/etc/alternatives/)到某些系统默认值的路径。

另见达卡夫的回答

于 2012-01-06T20:49:41.993 回答
1

这适用于 ubuntu/gnome:

>>> query_lines = subprocess.check_output(['update-alternatives',
                                           '--query',
                                           'gnome-text-editor']).split('\n')
>>> bestlist = filter(lambda l: 'Best' in l, query_lines)
>>> bestlist[0].split()[1]
'/usr/bin/gedit'

如果不在 gnome 上,您至少可以获得命令行编辑器:

>>> query_lines = subprocess.check_output(['update-alternatives',
...                                        '--query',
...                                        'editor']).split('\n')
>>> bestlist = filter(lambda l: 'Best' in l, query_lines)
>>> bestlist[0].split()[1]
'/bin/nano'
于 2012-01-06T20:56:31.683 回答
1

从@bowler 的回答中得到提示,纯粹是 bash:

editor=$(grep "text/plain" -r -i -I /usr/share/applications/defaults.list | awk -F';' '{print $1}' | awk -F'.desktop' '{print $1}' | awk -F'=' '{print $2}')
于 2015-05-03T13:58:13.940 回答