Das i3-Menü durchsucht $ PATH nicht

12

Ich möchte ein Shell-Skript ~/.local/bin/test.shüber ausführen dmenu. Wenn ich dmenuüber laufe $mod+Dund nach dem Eintrag test.shsuche, konnte ich ihn nicht finden.

Der Pfad ~/.local/binist bereits auf meine $PATHVariable in gesetzt~/.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

Ich habe auch ~/.cache/dmenu_runi3 entfernt und neu gestartet. Was kann ich tun, um das Testskript über das Menü zu starten?

Hölderlin
quelle

Antworten:

7

Löschen Sie ~/.cache/dmenu_runoder ~/dmenu_cache, je nachdem, was Sie haben, und melden Sie sich erneut an. Nachdem Ihr PATH nach dem Anmelden aus .profile neu geladen wurde, sollte dmenu den Cache aus $ PATH neu generieren. dmenu scheint schlecht darin zu sein, seinen eigenen Cache zu erneuern, und muss manchmal dazu gezwungen werden.

Überprüfen Sie auch, ob Sie das ausführbare Bit für das Skript aktiviert haben:

$ ls -l ~/.local/bin/test.sh
-rwxrwxrwx 1 user group 152 Jan 11 04:09 /home/user/.local/bin/test.sh
Kenneth B. Jensen
quelle
Entschuldigung, ich habe vergessen zu erwähnen, dass ich ~/.cache/dmenu_runden i3 bereits entfernt und neu gestartet habe, aber es hat keinen Einfluss auf das Verhalten von dmenu.
Hölderlin
@ Hölderlin Es ist wichtig, dass Sie sich abmelden und wieder anmelden, um neu zu laden~/.profile
Kenneth B. Jensen
4

Ich hatte das gleiche Problem.

Dieser Beitrag im Arch Linux-Forum beschreibt das Problem:

Wenn Sie $ PATH in ~ / .bashrc festlegen, wird nicht sichergestellt, dass Ihr WM / Menü diese Umgebung erbt.
Eine relevantere Frage lautet: "Wie melden Sie sich an?" Normalerweise ist die in ~ / .bash_profile oder ~ / .profile exportierte Umgebung in Ihren X-Anwendungen verfügbar.
Starten Sie dmenu_run wie gewohnt und geben Sie dann in dmenu
echo $PATH > /tmp/path
Then in ein Terminal ein, um cat /tmp/pathzu sehen, was dieser $ PATH ist.

In meinem Fall wurden die in meinem Verzeichnis festgelegten $ PATH-Verzeichnisse ~/.profilenicht vom Menü aufgenommen. Mein Fenstermanager wird von .xinitrc aus gestartet, und durch Hinzufügen einer zusätzlichen export PATH=$PATH:/dir/of/interestDatei in der .xinitrc-Datei, bevor die exec my_wmZeile das Problem behoben hat. Es ist allerdings etwas klobig.

Wie bereits erwähnt, musste ich die ~/.cache/dmenu_runDatei entfernen und mich nach der Änderung erneut anmelden, damit sie funktioniert.

ishigoya
quelle
1
Für manche echo $SHELL > /tmp/shellkönnte es sich auch lohnen, es zu versuchen . Ich dachte, meine würde verwendet, bashaber es stellte sich heraus, dass sie verwendet wurde, zshsodass verschiedene Konfigurationsdateien überprüft wurden. Ich habe auch versucht, es in xinitrcund i3config zu setzen, aber keines davon hat funktioniert - aber / etc / zprofile hat es getan! Das lokale ~ / .zshrc war nicht genug. /etc/profilekann auch in beiden zshund funktionieren bash.
Miyalys
0

Ich poste den vollständigen Algorithmus:

  1. Platzieren Sie env vars in ~/.profileoder ~/.xprofile(Erstellen, wenn nicht vorhanden), nicht in~/.bashrc
  2. rm -f ~/.cache/dmenu_run
  3. Abmelden und anmelden

Geben Sie Folgendes ein, um env vars zu debuggen:

  1. Im Menü: echo $PATH > /tmp/path
  2. Im Terminal: cat /tmp/path
Rostislav Teryaev
quelle