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_runи перезапустил i3, но это не влияет на поведение dmenu.
Гельдерлин
@ Hölderlin Важно, чтобы вы вышли из системы и снова вошли в систему, чтобы перезагрузить компьютер~/.profile
Кеннет Б. Дженсен
4

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

Это сообщение на форуме Arch Linux описывает проблему:

Установка $ PATH в ~ / .bashrc не гарантирует, что ваше WM / dmenu унаследует этот env.
Более актуальный вопрос, который нужно задать: «Как войти в систему?» Обычно 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файл и снова войти в систему после внесения изменений, чтобы заставить его работать.

ishigoya
источник
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. В меню: echo $PATH > /tmp/path
  2. В терминале: cat /tmp/path
Ростислав Теряев
источник