i3 dmenu не переглядає $ PATH


13

Я хочу запустити скрипт оболонки ~/.local/bin/test.shчерез dmenu. Якщо я перебігаю dmenuчерез $mod+Dта переглядаю запис, test.shя не зможу його знайти.

Шлях ~/.local/binвже встановлений до моєї $PATHзмінної в~/.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

Я також видалив ~/.cache/dmenu_runі перезапустив i3. Що я можу зробити, щоб запустити тестовий скрипт через dmenu?

Відповіді:


7

Видаліть ~/.cache/dmenu_runабо ~/dmenu_cache, залежно від того, що у вас є, і увійдіть назад. Після того, як ваш PATH буде завантажений з .profile після входу, dmenu повинен відновити кеш із $ PATH. dmenu, здається, погано відновлює власний кеш, і його потрібно змушувати іноді робити.

Також переконайтеся, що ви включили виконуваний біт для сценарію:

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

Вибачте, я забув згадати, що я вже видалив ~/.cache/dmenu_runi перезапустив i3, але це не впливає на поведінку dmenu.
Гельдерлін

@ Hölderlin Важливо, щоб ви вийшли з системи та знову увійшли для перезавантаження~/.profile
Kenneth B. Jensen

4

У мене була така ж проблема.

Цей пост форуму Arch Linux описує проблему:

Встановлення $ PATH в ~ / .bashrc не гарантує, що ваш WM / dmenu успадкує це оточення.
Більш відповідне питання, яке потрібно задати: "Як ви входите в систему?" Зазвичай env, експортований у ~ / .bash_profile або ~ / .profile, доступний у ваших програмах X.
Запустіть dmenu_run, як зазвичай, тоді в dmenu введіть
echo $PATH > /tmp/path
Потім у терміналі, cat /tmp/pathщоб побачити, що це $ PATH.

У моєму випадку каталоги $ PATH, встановлені в моєму ~/.profile, не підбиралися dmenu. Мій менеджер вікон запускається з .xinitrc і додає додатковий export PATH=$PATH:/dir/of/interestфайл у файл .xinitrc до того, як exec my_wmрядок вирішить проблему. Це трохи незграбно, хоча.

Як зазначалося раніше, мені довелося видалити ~/.cache/dmenu_runфайл та увійти знову після внесення змін, щоб він працював.


2
Для деяких спроб echo $SHELL > /tmp/shellтеж може бути варте того. Я думав, що моє використовує, bashале виявляється, він використовувався, zshтому він перевіряв різні конфігураційні файли. Також спробував вставити його xinitrcта i3налаштувати, але жоден із цих не працював - але / etc / zprofile не зробив! Місцевих ~ / .zshrc було недостатньо. /etc/profileможе працювати як в обох, так zshі в bash.
miyalys

0

Я публікую повний алгоритм:

  1. Розташуйте env vars в ~/.profileабо ~/.xprofile(Створити, якщо його немає), а не в~/.bashrc
  2. rm -f ~/.cache/dmenu_run
  3. Вийдіть і увійдіть

Для налагодження env vars введіть:

  1. У dmenu: echo $PATH > /tmp/path
  2. У терміналі: cat /tmp/path
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.