i3 dmenu ne parcourt pas $ PATH


13

Je veux exécuter un script shell ~/.local/bin/test.shvia dmenu. Si je cours dmenuvia $mod+Det que je recherche l'entrée, test.shje ne la trouve pas.

Le chemin ~/.local/binest déjà défini sur ma $PATHvariable dans~/.profile

$ echo $PATH
/home/ubuntu/bin:/home/ubuntu/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games

J'ai également supprimé ~/.cache/dmenu_runet redémarré i3. Que puis-je faire pour lancer le script de test via dmenu?

Réponses:


7

Supprimez ~/.cache/dmenu_runou ~/dmenu_cache, selon le cas, et reconnectez-vous. Une fois votre PATH rechargé à partir de .profile après la connexion, dmenu devrait régénérer le cache à partir de $ PATH. dmenu semble ne pas vouloir renouveler son propre cache et doit parfois être obligé de le faire.

Vérifiez également que vous avez activé le bit exécutable pour le script:

$ ls -l ~/.local/bin/test.sh
-rwxrwxrwx 1 user group 152 Jan 11 04:09 /home/user/.local/bin/test.sh

Désolé, j'ai oublié de mentionner que j'ai déjà supprimé ~/.cache/dmenu_runet redémarré l'i3 mais cela n'affecte pas le comportement de dmenu.
Hölderlin

@ Hölderlin Il est important de vous déconnecter et de vous reconnecter pour recharger~/.profile
Kenneth B. Jensen

4

J'ai eu le même problème.

Ce message du forum Arch Linux décrit le problème:

La définition de $ PATH dans ~ / .bashrc ne garantit pas que votre WM / dmenu héritera de cet env.
Une question plus pertinente à poser est: "Comment vous connectez-vous?" Les fichiers env exportés dans ~ / .bash_profile ou ~ / .profile sont généralement disponibles dans vos applications X.
Lancez dmenu_run comme vous le faites normalement, puis dans dmenu, tapez
echo $PATH > /tmp/path
Then dans un terminal, cat /tmp/pathpour voir ce qu'est $ PATH.

Dans mon cas, les répertoires $ PATH définis dans mon ~/.profilen'ont pas été récupérés par dmenu. Mon gestionnaire de fenêtres est démarré à partir de .xinitrc, et en ajoutant un supplémentaire export PATH=$PATH:/dir/of/interestdans le fichier .xinitrc avant que la exec my_wmligne ne corrige le problème. C'est un peu maladroit cependant.

Comme indiqué précédemment, j'ai dû supprimer le ~/.cache/dmenu_runfichier et me reconnecter après avoir effectué la modification pour le faire fonctionner.


2
Pour certains, cela echo $SHELL > /tmp/shellpourrait aussi valoir la peine. Je pensais que le mien utilisait, bashmais il s'est avéré qu'il a zshdonc utilisé différents fichiers de configuration. J'ai également essayé de le mettre xinitrcet de le i3configurer, mais aucun de ceux-ci n'a fonctionné - mais / etc / zprofile l'a fait! Le ~ / .zshrc local n'était pas suffisant. /etc/profilepeut fonctionner aussi bien dans zshet bash.
miyalys

0

Je poste l'algorithme complet:

  1. Placer les vars env dans ~/.profileou ~/.xprofile(Créer s'il n'existe pas), pas dans~/.bashrc
  2. rm -f ~/.cache/dmenu_run
  3. Déconnectez-vous et connectez-vous

Pour déboguer env vars, tapez:

  1. Dans dmenu: echo $PATH > /tmp/path
  2. Dans le terminal: cat /tmp/path
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.