在linux中,如何确定默认文本编辑器,终端等?
它是否因发行版而异?
答案 0 :(得分:3)
我之前以一种相当丑陋的方式以编程方式访问了列表,我确信它不是最好的方法。选项存储在名为defaults.list的文件中(我认为通常就是这种情况)。位置不太通用我认为它在/ usr / share / applications /上我的ubuntu系统虽然它确实出现在我认为的其他地方。然后我将其视为文本文件。
答案 1 :(得分:2)
分辨率顺序为$EDITOR
- > editor
- >一些预定义的控制台编辑器列表。在Debian / Ubuntu上,sensible-editor
(以及sensible-browser
和sensible-pager
)将为您执行查找,包括查看正确的环境变量。类似的变量是$PAGER
,$SHELL
,$BROWSER
。要查找文件关联,您可以使用xdg-open
。
答案 2 :(得分:1)
每用户环境变量告诉您。
然而,这对命令行软件有效,而桌面环境通常使用自己的(内部)变量。
同样在python中,您可以使用os.getenv
读取环境变量。
答案 3 :(得分:1)
我认为默认编辑器或终端的概念没有意义。对于编辑器,存在在定义时使用$EDITOR
的惯例。
在Debian和相关的(例如Ubuntu,Mint)上,您有/usr/bin/editor
和/usr/bin/x-terminal-emulator
符号链接(通过/etc/alternatives/
中的符号链接)等路径到某些系统默认值。
答案 4 :(得分: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'
答案 5 :(得分:1)
从@ bowler的回答中得到提示,纯粹是打击:
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}')