Alt + F2 (Exécuter l’application) ne fonctionne pas pour les commandes personnalisées.

Afin d’accélérer le développement d’Android, j’ai modifié mon ~/.bashrc pour append des chemins d’access à PATH :

 export PATH=${PATH}:/opt/android-sdk/tools:/opt/android-sdk/platform-tools 

Cela fonctionne très bien à partir de la ligne de commande (je peux simplement taper android et, peu importe où je me trouve, le SDK Android et le gestionnaire AVD démarreront correctement.

Cependant, si j’essaie de taper android dans la boîte de dialog Alt + F2 (Exécuter l’application), l’erreur suivante apparaît:

Impossible d’ouvrir l’emplacement ‘fichier: /// home / felix / android’

Erreur lors de la déclaration du fichier ‘/ home / felix / android’: Aucun fichier ou répertoire de ce type

Pourquoi donc? Quel PATH la boîte de dialog Exécuter l’application utilise-t-elle?

    Je suppose que le bashrc n’est pas lu par Gnome, et pourquoi le devrait-il, puisqu’il s’agit d’un fichier de configuration pour bash .

    Je définis mon chemin dans ~/.profile . Ce fichier est définitivement lu par les environnements Gnome et XFCE et devrait l’être également par d’autres. (Mais il est en lecture seule lors de la connexion, vous devez donc vous déconnecter et revenir en arrière pour que les modifications prennent effet!)

    ~/.bashrc est inclus par ~/.profile par défaut. Le répertoire ~/bin est également ajouté à PATH par défaut. Créez le répertoire ~/bin et ajoutez des liens ln -s ( ln -s ) aux applications que vous souhaitez utiliser ou modifiez votre ~/.bashrc .

    Le contenu par défaut des fichiers mentionnés se trouve dans /etc/skel – utilisé lors de la création d’un nouveau compte et de ses répertoires personnels.

    J’avais le même problème avec Linux Mint (Cinnamon 2.8.8) et je ne pouvais pas le faire fonctionner avec les correctifs habituels (en utilisant un Xsession , en changeant Xsession shebang en /bin/sh -l ).

    Le problème est que /bin/sh , qui est généralement un lien symbolique vers /bin/dash lit ~/.profile s’il s’agit d’un shell de connexion (c’est-à-dire avec l’option -l ).

    Vous pouvez vérifier cela avec strace:

     $ strace -e open dash open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 open("/dev/tty", O_RDWR) = 3 $ ^D +++ exited with 0 +++ $ strace -e open dash -l open("/etc/ld.so.cache", O_RDONLY|O_CLOEXEC) = 3 open("/lib/x86_64-linux-gnu/libc.so.6", O_RDONLY|O_CLOEXEC) = 3 open("/dev/tty", O_RDWR) = 3 open("/etc/profile", O_RDONLY) = 3 --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=12260, si_status=0, si_utime=0, si_stime=0} --- open("/etc/profile.d/Z97-byobu.sh", O_RDONLY) = 3 open("/etc/profile.d/bash_completion.sh", O_RDONLY) = 3 open("/etc/profile.d/vte.sh", O_RDONLY) = 3 open("/home/elias/.profile", O_RDONLY) = 3 $ ^D +++ exited with 0 +++ 

    Je ne savais pas quel script changer (j’ai essayé plusieurs d’entre eux sous / etc / X11 et / etc / mdm), mais pas de chance.

    J’ai donc jeté l’éponge et changé /bin/sh pour qu’il pointe vers /bin/bash au lieu de /bin/dash et que cela fonctionne maintenant. 🙂