.bashrc не загружен, .bash_profile существует

В терминале Ubuntu мой.bashrc недоступен, пока я не запущу: source ~/.bashrc

У меня есть ~/.bash_profile с содержимым:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm" # Load RVM into a shell session *as a function*

У меня есть ~/.profile с:

# if running bash
if [ -n "$BASH_VERSION" ]; then
    # include .bashrc if it exists
    if [ -f "$HOME/.bashrc" ]; then
    . "$HOME/.bashrc"
    fi
fi

Что я должен сделать, чтобы мой.bashrc загружался автоматически? Должен ли я объединить.bash_profile и.profile и удалить один из них? Спасибо

2 ответа

Решение

Вам нужно будет добавить ту же логику, которая существует в вашем .profile на ваш .bash_profile, .profile не используется, если .bash_profile существует, так что ваш .bashrc не из источников.

Однако проверка того, запускаете ли вы bash, не обязательна в.bash_profile. Этого достаточно:

[[ -f ~/.bashrc ]] && source ~/.bashrc

На SuperUser есть отличный ответ, который объясняет разницу между.bashrc и.bash_profile.

По сути, файлы "профиля" читаются только при входе в систему. Вы можете думать об этом таким образом; при входе в систему оболочка использует один из файлов профиля для "настройки вашего профиля".

В противном случае, если вы уже вошли в систему и инициируете новый сеанс (открываете новую вкладку / окно или вызываете bash в cli), оболочка просто читает ваш файл "rc".

Я справляюсь с этим, помещая большинство всего в мой файл.bashrc, а затем получая файл.bashrc из моего файла.profile. Вот пример:

мой .profile файл:

source ~/.bashrc

мой .bashrc файл:

alias g='egrep -i'

export CLICOLOR=1
export LSCOLORS=ehfxcxdxbxegedabagacad

PS1="\[\e[0;31m\]\u\[\e[0;32m\]@\[\e[0;31m\]\h\[\e[0;37m\] \w\[\e[0;39m\]"
case `id -u` in
        0) PS1="${PS1}# ";;
        *) PS1="${PS1}$ ";;
esac
Другие вопросы по тегам