i3 dmenu nie przegląda zmiennej PATH


13

Chcę uruchomić skrypt powłoki ~/.local/bin/test.shza pośrednictwem dmenu. Jeśli uruchomić dmenupoprzez $mod+Di przejdź do wejścia test.shnie mogłem go znaleźć.

Ścieżka ~/.local/binjest już ustawiona na moją $PATHzmienną w~/.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

Usunąłem ~/.cache/dmenu_runi ponownie uruchomiłem i3. Co mogę zrobić, aby uruchomić skrypt testowy przez dmenu?

Odpowiedzi:


7

Usuń ~/.cache/dmenu_runlub ~/dmenu_cache, w zależności od posiadanego, i zaloguj się ponownie. Po ponownym załadowaniu PATH z .profile po zalogowaniu, dmenu powinno zregenerować pamięć podręczną z $ PATH. dmenu wydaje się być zły w kwestii odnawiania własnej pamięci podręcznej i czasami trzeba go do tego zmuszać.

Sprawdź także, czy masz włączony bit wykonywalny dla skryptu:

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

Przepraszam, zapomniałem wspomnieć, że już usunąłem ~/.cache/dmenu_runi ponownie uruchomiłem i3, ale nie wpływa to na zachowanie dmenu.
Hölderlin

@ Hölderlin Ważne jest, aby się wylogować i zalogować ponownie, aby ponownie załadować~/.profile
Kenneth B. Jensen

4

Miałem ten sam problem.

Ten post na forum Arch Linux opisuje problem:

Ustawienie $ PATH w ~ / .bashrc nie gwarantuje, że twoje WM / dmenu odziedziczy to środowisko.
Bardziej trafnym pytaniem jest: „Jak się zalogować?” Zazwyczaj env eksportowane do ~ / .bash_profile lub ~ / .profile są dostępne w twoich aplikacjach X.
Uruchom dmenu_run jak zwykle, a następnie w dmenu wpisz
echo $PATH > /tmp/path
następnie w terminalu, cat /tmp/pathaby zobaczyć, co to jest $ PATH.

W moim przypadku ustawione w moim katalogu $ PATH ~/.profilenie zostały odebrane przez dmenu. Mój menedżer okien jest uruchamiany z .xinitrc i dodawania dodatkowego export PATH=$PATH:/dir/of/interestw pliku .xinitrc, zanim exec my_wmlinia naprawi problem. Jest to trochę niezgrabne.

Jak wspomniano wcześniej, musiałem usunąć ~/.cache/dmenu_runplik i zalogować się ponownie po dokonaniu zmiany, aby go uruchomić.


2
Dla niektórych próby echo $SHELL > /tmp/shellmogą być również tego warte. Myślałem, że mój używa, bashale okazało się, że był używany, zshwięc sprawdził różne pliki konfiguracyjne. Próbowałem także zainstalować xinitrci i3skonfigurować, ale żadna z nich nie działała - ale / etc / zprofile nie! Lokalne ~ / .zshrc nie wystarczyło. /etc/profileMoże pracować także w obu zshi bash.
miyalys,

0

Zamieszczam pełny algorytm:

  1. Umieść zmienne env w ~/.profilelub ~/.xprofile(Utwórz, jeśli nie istnieje), a nie w~/.bashrc
  2. rm -f ~/.cache/dmenu_run
  3. Wyloguj się i zaloguj

Aby debugować zmienne env, wpisz:

  1. W menu: echo $PATH > /tmp/path
  2. W terminalu: cat /tmp/path
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.