2012-01-06 81 views
7

在linux中,如何確定默認文本編輯器,終端等?如何以編程方式確定Linux中的默認應用程序

是否因發行版而異?

+1

好了,所以看起來像該系統使用了一個名爲defaults.list文件。所以找出系統正在使用哪個defaults.list應該可以解決這個問題。如果任何人有任何提示,請繼續 – sqram 2012-01-06 21:20:40

回答

1

我不認爲默認編輯器或終端的概念是有道理的。對編輯來說,定義時使用$EDITOR的約定。

在Debian和相關(如Ubuntu的,薄荷),你有(以/etc/alternatives/通過符號連接),如/usr/bin/editor/usr/bin/x-terminal-emulator符號鏈接路徑一些系統默認值。

參見Dacav's answer

1

每用戶環境變量告訴你。

  • $編輯器爲您提供了作爲文本編輯器啓動的命令;
  • $ BROWSER爲您提供瀏覽器
  • $ PAGER爲您提供尋呼機(或多或少)。

這對命令行軟件是有效的,而通常桌面環境使用自己的(內部)變量。

另外在python中,你可以使用os.getenv來讀取環境變量。

+0

,所以我應該能夠(在shell)echo $ EDITOR來查看它是什麼? 我只是試過,它只是給了我一個空行 – sqram 2012-01-06 20:50:25

+0

的確是的。它的定義不是強制性的。我猜如果它不存在,它會默認一些基於發行版的價值。在這種情況下,我不知道如何得到它。 – Dacav 2012-01-06 20:55:14

3

編程方式在一個相當醜陋的方式在不久前訪問列表,我敢肯定它不是最好的方式。選項存儲在一個名爲defaults.list的文件中(我認爲這通常是這種情況)。這個位置不太一般,我認爲它在/ usr/share/applications /在我的ubuntu系統上,雖然它確實出現在我認爲的其他地方。然後我將其作爲文本文件處理。

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' 

如果不是侏儒,你至少可以得到命令行編輯:

>>> 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' 
2

分辨率順序爲$EDITOR - >editor - >一些控制檯編輯器的預定義列表。在Debian/Ubuntu上,sensible-editor(和sensible-browsersensible-pager)將爲您執行查找,包括查看正確的環境變量。類似變量是$PAGER,$SHELL,$BROWSER。要查找文件關聯,可以使用xdg-open

1

以從@投手的答案提示,和純粹的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}') 
相關問題