.bashrc не выполняется при открытии нового терминала

Код в .bashrc не выполняется, когда я открываю новое окно терминала в Ubuntu 12.04. Я заметил это при создании файла .bash_aliases. Псевдонимы не появлялись, когда я открывал новый терминал. Однако, когда я печатаю source .bashrc, псевдонимы действительно появляются.

.bashrc должен запускаться каждый раз, когда я открываю новое окно терминала, верно?

Как мне это сделать?

85
задан 8 July 2012 в 22:22

6 ответов

В моем случае, просто .bashrc строки загрузчика отсутствовали в .bash_profile

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

, я добавил их вручную, и он работал с моим новым логином

.
0
ответ дан 8 July 2012 в 22:22

Если $BASH_VERSION не установлено, попробуйте использовать команду chsh, чтобы установить для вашей оболочки значение /bin/bash.

У меня была похожая проблема с 12.04 LTS, и оказалось, что для новой учетной записи пользователя по умолчанию установлена ​​оболочка /bin/sh, что и стало причиной проблемы.

0
ответ дан 8 July 2012 в 22:22

Это не обязательно бежать; Вверху стандартного .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-терминал обычно не работает как оболочка входа в систему, поэтому .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"
    fi
fi

Это запускает .bashrc, если он доступен - при условии, что $ BASH_VERSION присутствует в вашей среде. Вы можете проверить это, введя команду echo $BASH_VERSION, и она должна отобразить некоторую информацию о номере версии - она ​​не должна быть пустой.

0
ответ дан 8 July 2012 в 22:22

Вместо того, чтобы пройти через все это, просто перейдите на Edit -> Profile Preferences -> Title and Command -> "Run a custom command instead of my shell" и в окне пользовательских команд напишите bash и закройте его. В следующий раз, когда вы откроете терминал, он также автоматически запустит bash.

0
ответ дан 8 July 2012 в 22:22

.bash_profile содержит конфигурацию оболочки bash. Когда вы открываете терминал, он сначала читает и выполняет команды из ~/.bash_profile. Таким образом, вы можете добавить следующее в .bash_profile для настройки оболочки в соответствии с bashrc.

. ~/.bashrc
0
ответ дан 8 July 2012 в 22:22

Accoding к комментарию в .profile

~/.profile: выполняемый интерпретатором команд для оболочек входа в систему. В¬ 11 Этих файлов не читаются ударом (1), если ~/.bash_profile или ~/.bash_loginВ¬ 10 # существуют

, Таким образом, там Вы идете, если ~/.bash_profile или ~/.bash_login exists, они будут выполнены вместо ~/.profile

, если Вы захотите работать ~/.bashrc просто, добавляют строку source ~/.bashrc в bash_profile

1
ответ дан 21 October 2019 в 18:14

Другие вопросы по тегам:

Похожие вопросы: