2012-01-06 11 views

Respuesta

1

No creo que la noción de editor o terminal tenga sentido. Para el editor, existe la convención de usar $EDITOR cuando está definido.

En Debian y relacionados (por ejemplo, Ubuntu, Mint) que tiene trayectorias como /usr/bin/editor y /usr/bin/x-terminal-emulator enlace simbólico (a través de enlaces simbólicos en /etc/alternatives/) a algún defecto del sistema.

Ver también Dacav's answer

1

Las variables de entorno por usuario lo indican.

  • $ EDITOR le da el comando para iniciarse como editor de texto;
  • $ BROWSER le proporciona el navegador
  • $ PAGER le proporciona el buscapersonas (por ejemplo, más o menos).

Sin embargo, esto es válido para softwares de línea de comando, mientras que los entornos de escritorio generalmente usan sus propias variables (internas).

También en python puede leer las variables de entorno usando os.getenv.

+0

, entonces ¿debería poder (en shell) echo $ EDITOR para ver de qué se trata? Acabo de probar y me acaba de dar una línea en blanco – sqram

+0

De hecho sí. Su definición no es obligatoria. Supongo que en caso de que no esté presente, se predetermina en algún valor basado en la distribución. No sé cómo obtenerlo en este caso. – Dacav

3

Accedí a la lista mientras hace mediante programación de una manera bastante fea y estoy seguro de que no es la mejor manera. Las opciones se almacenan en un archivo llamado defaults.list (creo que este es generalmente el caso). La ubicación es menos general. Lo creo en/usr/share/applications/en mi sistema ubuntu, aunque parece que en otro lado, creo. Luego lo traté como un archivo de texto.

1

Esto funciona en 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' 

Si no en GNOME, al menos podría conseguir el editor de línea de comandos:

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

El orden de resolución es $EDITOR ->editor - > alguna lista predefinida de editores de consola. En Debian/Ubuntu, sensible-editor (y sensible-browser y sensible-pager) lo buscarán, incluso mirando las variables de entorno correctas. Variables similares son $PAGER, $SHELL, $BROWSER. Para buscar una asociación de archivos, puede usar xdg-open.

1

Tomando indicio de la respuesta de @ jugador de bolos, y 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}') 
Cuestiones relacionadas