.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