2012-01-06 13 views

risposta

1

Non credo che la nozione di predefinita editor o terminale abbia senso. Per l'editor, c'è la convenzione di usare $EDITOR quando è definito.

Su Debian e affini (ad esempio Ubuntu, Mint) si dispone di percorsi come /usr/bin/editor e /usr/bin/x-terminal-emulator link simbolico (tramite collegamenti simbolici in /etc/alternatives/) ad alcuni di default del sistema.

Vedi anche Dacav's answer

1

Le variabili di ambiente per utente lo dicono.

  • $ EDITOR fornisce il comando da avviare come editor di testo;
  • $ BROWSER ti dà il browser
  • $ PAGER ti dà il cercapersone (es. Più o meno).

Ciò tuttavia è valido per i software della riga di comando, mentre in genere gli ambienti desktop utilizzano le proprie variabili (interne).

Anche in python è possibile leggere le variabili di ambiente utilizzando os.getenv.

+0

quindi dovrei essere in grado di (in shell) echo $ EDITOR per vedere di cosa si tratta? Ho appena provato e mi ha appena dato una riga vuota – sqram

+0

In effetti sì. La sua definizione non è obbligatoria. Suppongo che nel caso non sia presente il valore predefinito su un valore basato sulla distro. Non so come ottenerlo in questo caso. – Dacav

3

ho accesso alla lista, mentre fa programatically in un modo piuttosto brutto e sono sicuro che la sua non è il modo migliore. Le opzioni sono memorizzate in un file chiamato defaults.list (penso che questo sia generalmente il caso). La posizione è meno generale Penso che sia in/usr/share/applications/sul mio sistema di Ubuntu anche se sembra altrove penso. L'ho poi trattato come un file di testo.

1

Questo funziona in 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' 

Se non su GNOME, si potrebbe almeno avere l'editor della riga di comando:

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

l'ordine di risoluzione è $EDITOR ->editor - > un elenco predefinito di editor di console. Su Debian/Ubuntu, sensible-editor (e sensible-browser e sensible-pager) eseguiranno la ricerca per te, anche guardando le giuste variabili di ambiente. Variabili simili sono $PAGER, $SHELL, $BROWSER. Per cercare un'associazione di file, è possibile utilizzare xdg-open.

1

Prendendo spunto dalla risposta @ di bombetta, e puramente 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}') 
Problemi correlati