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

49

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

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

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

    
задан Selah 08.07.2012 в 19:45
источник

5 ответов

85

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

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

    
ответ дан Marty Fried 08.07.2012 в 21:07
источник
10

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

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

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

    
ответ дан user3584014 06.05.2016 в 10:30
4

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

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

    
ответ дан evan_b 11.11.2013 в 06:53
4

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

. ~/.bashrc
    
ответ дан SD. 10.01.2017 в 05:42
0

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

    
ответ дан Furqan Ali 18.12.2016 в 19:57