При открытии нового терминала мне нужно сделать source ~/.bashrc или source ~./bash_profile прежде чем моя $PATH будет инициализирована. Я думал, что .bashrc сделал это автоматически? Как мне сделать так, чтобы мне не нужно было это делать.

1 ответ1

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 и исправить его, если это необходимо.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .