LINUX.ORG.RU

Как заставить i3wm читать ~/.bashrc?

 , ,


0

1

Пути для некоторых программ прописаны в ~/.bashrc

вроде этого:

if [ -d /opt/deadbeef/bin ]; then
     export PATH=/opt/deadbeef/bin:$PATH
fi

Но менеджер окон, по всей видимости, запускается раньше, чем считывается файл ~/.bashrc, из-за чего все программы запущенные из i3wm не видят этих путей.

Соответственно вижу два варианта решения — заставить i3wm читать ~/.bashrc или заставить систему читать ~/.bashrc до запуска i3wm.

Как это реализовать?

Может запихнуть в .xprofile?

anonymous
()

для таких вещей существует .pam_environment

eternal_sorrow ★★★★★
()

Объявление переменных окружения для всех приложений для одного юзера нужно делать в ~/.profile или ~/.profile ( - bash, zsh, etc.).

anonymous
()

Пути для некоторых программ прописаны в ~/.bashrc

bashrc не для этого.

legolegs ★★★★★
()
Ответ на: комментарий от anonymous

Добавляю в ~/.profile

if [ -d /opt/deadbeef/bin ]; then
     export PATH=/opt/deadbeef/bin:$PATH
fi

а он не присваивается. Я делаю что-то не так?

P.S
Может быть имеет значение, система — Debian 10 stable, менеджер входа — LightDM.

Dreamdrawer
() автор топика
Ответ на: комментарий от Dreamdrawer

Надо было сразу сказать, что ты ДМ используешь… Тогда пихай в .xinitrc или .pam_environment как писали выше.

anonymous
()
Ответ на: комментарий от anonymous

Добавил в ~/.pam_environment та же история. Не считывает.
Только если вручную перечитать source ~/.pam_environment, тогда начинает видеть. Но это уже после запуска i3wm, стало быть для него по-прежнему путь остаётся невидим.

С ~/.xinitrc то же самое.

Хотелось бы решить задачу посредством манипуляций в пределах домашнего каталога.

Dreamdrawer
() автор топика
Ответ на: комментарий от Dreamdrawer

Хотелось бы

cd /etc
grep /usr/bin *

Если тупить не будешь, разберёшься.

anonymous
()
Ответ на: комментарий от Dreamdrawer

Добавил в ~/.pam_environment та же история.

Возможно, по умолчанию пользовательские файлы не включены. Не помню, как там в Debian.

Хотелось бы решить задачу посредством манипуляций в пределах домашнего каталога.

man environment.d попробуй, оно не должно требовать вмешательства в /etc. Правда, PATH задают все кому не лень, так что может перекрываться твоим DM. Увы, всё именно так плохо.

anonymous
()

Решение

Насколько понял, оказывается это особенность i3wm, который при запуске игнорирует всё, кроме файла ~/.xsessionrc. Перенёс в него содержимое .profile и всё подхватилось корректно.

Dreamdrawer
() автор топика
Ответ на: Решение от Dreamdrawer

Насколько понял, оказывается это особенность i3wm, который при запуске игнорирует всё, кроме файла ~/.xsessionrc.

Не замечал такой особенности, честно говоря. Нужно внимательнее посмотреть, какие файлы обрабатывает LightDM, какая оболочка используется для логина и какие файлы она обрабатывает на входе. Это явно не проблема i3wm. Судя по всему, это особенности Debian.

Запускаю графическую сессию командой startx. В .xinitrc:

...
PATH+=:$HOME/.local/bin
...

i3wm подхватывает без проблем.

Ещё нужно смотреть, какая оболочка используется для входа (если речь не идёт о DM). Если bash, то будет запускаться .bash_profile. Если zsh, то будет запускаться .zprofile. Во всяком случае в arch’е так.

rassol
()
Последнее исправление: rassol (всего исправлений: 1)
Ответ на: Решение от Dreamdrawer

~/.xsessionrc

Это Debian специфик. Лучше использовать более «правильные» файлы - .xinitrc, .xsession . тут можно ознакомиться с различиями.

vtVitus ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.