При открытии нового терминала мне нужно сделать source ~/.bashrc
или source ~./bash_profile
прежде чем моя $PATH
будет инициализирована. Я думал, что .bashrc
сделал это автоматически? Как мне сделать так, чтобы мне не нужно было это делать.
1 ответ
Я не уверен, что понимаю ваши вопросы, но:
Ваши файлы инициализации bash должны быть получены при загрузке. Если нет, ваша система плохо настроена или сломана.
Вы не упомянули свою операционную систему, но я предполагаю, что вы используете Linux, в любом случае.
Последовательность инициализации, согласно man bash
следующая:
Когда bash вызывается как интерактивная оболочка входа в систему или как неинтерактивная оболочка с параметром --login, она сначала читает и выполняет команды из файла /etc/profile, если этот файл существует. После прочтения этого файла он ищет ~/.bash_profile, ~/.bash_login и ~/.profile в указанном порядке, а также читает и выполняет команды из первой, которая существует и доступна для чтения. Опция --noprofile может использоваться, когда оболочка запущена, чтобы запретить это поведение.
Когда запускается интерактивная оболочка, которая не является оболочкой входа в систему, bash читает и выполняет команды из /etc/bash.bashrc и ~/.bashrc, если эти файлы существуют. Это может быть запрещено с помощью параметра --norc. Параметр --rcfile file заставит bash читать и выполнять команды из файла вместо /etc/bash.bashrc и ~/.bashrc.
Например, в дистрибутиве Ubuntu после загрузки /etc/profile
он ищет файл ~/.profile
который выглядит следующим образом:
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Это означает, что, если используется bash и файл ~/.bashrc
существует, он будет загружен / получен и после этого будет установлена переменная $ PATH.
Поэтому я предлагаю вам сначала взглянуть на файл ~/.profile
и исправить его, если это необходимо.