Задать вопрос

Команды из ~/.bashrc не срабатывают при логине?

Товарищи,

Использую OpenIndiana, шелл – bash.

Попытался добавить путь до нужных мне бинарников в переменную $PATH дописыванием в ~/.bashrc следующей строчки:

export PATH=/usr/gnu/bin:/usr/bin:/usr/sbin:/sbin:/opt/csw/bin:/opt/csw/gcc4



По идее при logoff и последующем login $PATH уже должна была бы иметь указанный выше вид, но нет – никаких изменений не происходит.


В чём может быть проблема? Или это фича? :)


Заранее спасибо за ответы.
  • Вопрос задан
  • 9918 просмотров
Подписаться 4 Оценить Комментировать
Решения вопроса 1
tyzhnenko
@tyzhnenko
System Administrator, DevOps, QA Engineer
попробуйте добавить в ~/.bash_profile

if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
alekciy
@alekciy
Вёбных дел мастер
Это фича и о ней описано в мане linux.die.net/man/1/bash

Смысл в том, что ~/.bash_profile читается при login, а ~/.bashrc при интерактивном старте оболочки. Проверить очень просто. Пишем в ~/.bash_profile строку echo 'bash_profile', а в ~/.bashrc echo 'bashrc'. Теперь логинимся и запускаем еще одну копить оболочки (т.е. запуск bash без login-а):
bash_profile
[user@server ~]$ bash
bashrc
[user@server ~]$ exit
[user@server ~]$
Ответ написан
Комментировать
Вообще, обычно принято ставить PATH=$PATH:<ваши_пути>.
И, есть небольшое мнение, что такие вещи лучше хранить в отдельном файле, аля ~/.profile, и считывать его, а не напрямую прописывать в bash_*. Зачем — чтобы в других шеллах (ну вдруг они вам понадобятся) считывать ~/.profile, а не копипастить env-переменные в их .rc-фалйы :)
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы