Код в .bashrc не выполняется, когда я открываю новое окно терминала в Ubuntu 12.04.Я заметил это при создании файла .bash_aliases. Псевдонимы не отображались, когда я открывал новый терминал. Однако, когда я печатаю source .bashrc псевдонимы действительно появились.
.bashrc должен запускаться каждый раз, когда я открываю новое окно терминала, верно?
Это не обязательно выполняется; в верхней части standard .bashrc находится этот комментарий:
# ~/.bashrc: executed by bash(1) for non-login shells.# see /usr/share/doc/bash/examples/startup-files (in the package bash-doc)# for examples
Я полагаю, что есть возможность запустить терминал bash в качестве оболочки входа в систему или нет. В Ubuntu gnome-terminal обычно не запускается как оболочка входа в систему, поэтому .bashrc следует запускать напрямую.
Для оболочек входа в систему (например, виртуальных терминалов) обычно файл ~/.profile выполняется, если у вас нет либо ~/.bash_profile или ~/.bash_login, но по умолчанию их там нет. По умолчанию Ubuntu использует только .profile.
Стандарт ~/.profile есть ли в нем это:
if [ -n "$BASH_VERSION" ]; then # include .bashrc if it exists if [ -f "$HOME/.bashrc" ]; then . "$HOME/.bashrc" fifi
Это запускает .bashrc, если он доступен - при условии, что $BASH_VERSION присутствует в вашей среде. Вы можете проверить это, введя команду echo $BASH_VERSION, и он должен отображать некоторую информацию о номере версии - он не должен быть пустым.
.bash_profile содержит конфигурацию для оболочки bash. Когда вы открываете терминал, он сначала считывает и выполняет команды из ~/.bash_profile. Таким образом, вы можете добавить следующее в .bash_profile чтобы настроить оболочку в соответствии с bashrc.
Если $BASH_VERSION не установлен, попробуйте использовать chsh команда для настройки вашей оболочки на /bin/bash.
У меня была аналогичная проблема с 12.04 LTS, и оказалось, что для новой учетной записи пользователя оболочка по умолчанию установлена на /bin/sh, что и стало причиной проблемы.
Для меня это было довольно просто. Я установил mssqltools, и каким-то образом он создал файл bash_profile в каталоге $HOME. Как bash_profile проходит перед bashrc забирается, если у вас нет source команда в bash_profile, bashrc не убежит.
Есть два способа решить эту проблему: либо удалить bash_profile или если вы используете bash_profile, просто добавьте следующую строку в любом месте файла
@jippie Нет, “.profile” считывается во время входа в систему, а не при открытии нового терминала, если только где-то не произошла неправильная настройка. Села: вы что-нибудь изменили по сравнению с настройкой по умолчанию? Пожалуйста, запустите ps -o command $$ $PPID в терминале и скопируйте и вставьте выходные данные.
Возможно, вам захочется проверить echo $SHELL. Это случилось со мной, и оболочка была /bin / sh вместо bash. Исправьте это в /etc/passwd и его running .bashrc.