Estoy creando .desktop
archivos para usar en Unity Launcher.
Tengo mi propia ubicación en mi directorio de inicio donde coloco mis ejecutables (~/usr/bin/
) que se agregó correctamente a mi PATH
variable de entorno en mi .pam_environment
archivo como se especifica en la documentación de Ubuntu correspondiente.
Este es el contenido de mi .pam_environment
archivo:
LANGUAGE=en_AU:en_GB:en
LANG=en_AU.UTF-8
LC_NUMERIC=en_AU.UTF-8
LC_TIME=en_AU.UTF-8
LC_MONETARY=en_AU.UTF-8
LC_PAPER=en_AU.UTF-8
LC_NAME=en_AU.UTF-8
LC_ADDRESS=en_AU.UTF-8
LC_TELEPHONE=en_AU.UTF-8
LC_MEASUREMENT=en_AU.UTF-8
LC_IDENTIFICATION=en_AU.UTF-8
PATH DEFAULT=${PATH}:~/usr/bin/
Lo que resulta en mi PATH
siendo la variable la siguiente:
[email protected]:~$ echo $PATH
/usr/lib/lightdm/lightdm:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:~/usr/bin/:~/usr/bin/
Sé que se adjunta dos veces, pero cualquier cosa en .pam_environment
El archivo parece agregarse dos veces sin importar qué cuando se usa la sintaxis correcta recomendada en la documentación de Ubuntu a la que he hecho referencia.
Este es un ejemplo del problema (sucede en todos los casos). Tengo un script (llamado eclipse
) en ~/usr/bin/
que ejecuta Eclipse IDE.
Puedo abrir cualquier terminal y simplemente escribir eclipse
y funciona bien como cabría esperar.
Pero al usar el siguiente .desktop
archivo:
#!/usr/bin/env xdg-open
[Desktop Entry]
Version=1.0
Type=Application
Terminal=false
Name=Eclipse - Juno (4.2)
Icon=//eadn-wc01-5196795.nxedge.io/home/ben/.icons/eclipse.svg
Exec=eclipse
Recibo el error:
Pero cuando cambio el Exec=
línea a:
Exec=/home/ben/usr/bin/eclipse
funciona perfectamente.
La documentación oficial de Unity Launchers and Desktop files sugiere que esto debería funcionar:
Exec es la ruta al archivo ejecutable. La ruta completa al archivo ejecutable debe usarse solo en caso de que no esté en ninguna de las rutas especificadas en la variable $PATH. Por ejemplo, cualquier archivo que esté dentro de la ruta /usr/bin no necesita tener su ruta completa especificada en el campo Exec, sino solo su nombre de archivo.
¿Alguna sugerencia sobre lo que está sucediendo?
Respuesta aceptada:
La tilde no se expande en .pam_environment
de la forma en que lo haría en un script de perfil, y los archivos de escritorio no hacen expansión de shell en su Exec
líneas de la forma en que lo haría el shell, por lo que está buscando un archivo que se llame literalmente ~/usr/bin/eclipse
, que por supuesto no existe.
Reemplace la tilde en la asignación PATH con ${HOME} y parece funcionar.