Назад | Перейти на главную страницу

bashrc не загружен в оболочку / bin / bash

Когда я подключаюсь по ssh к серверу (4.3.3-2-ARCH), мой .bashrc не загружается (однако я могу загрузить его вручную, выполнив поиск).

В моей домашней папке нет других файлов, например .profile. Оболочка тоже правильная

$ echo $SHELL
/bin/bash

Когда я вхожу в систему, используя ssh -t myserver /bin/bash мой .bashrc загружен правильно.

В подробном режиме SSH я вижу, что /etc/bash.bashrc и ~ / .bashrc загружаются с использованием последней команды. При использовании команды ssh по умолчанию ни один из них не загружается ...

Что мне нужно настроить для загрузки .bashrc (и /etc/bash.bashrc) при использовании команды ssh по умолчанию?

в ~/.bashrc файл загружается для интерактивных оболочек без входа в систему, поэтому запускается /bin/bash от ssh работает так, как вы ожидаете.

Для оболочек входа (среди прочих) читается ~ / .bash_profile. Обычно ваш ~/.bash_profile содержит что-то вроде

if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

Что гарантирует, что ~/.bashrc загружается, если ваша оболочка является оболочкой входа в систему.

Если ваш ~/.bash_profile содержит вышеуказанное и ~/.bashrc не загружается, вы можете отлаживать скрипты, используя set -x по-прежнему.

Как ни одно из предыдущих, казалось, что пользователю не назначена оболочка, поэтому он просто показывает символ $ как подскажет.
Мне пришлось назначить оболочку пользователю, выполнив команду:

sudo usermod --shell /bin/bash username

После этого пользователь автоматически вошел в систему с помощью оболочки bash.

Обычно при создании пользователя он копирует кучу файлов в ваш новый домашний каталог (если вы решили его создать).

Вы можете проверить /etc/skel каталог для этих файлов. Должен быть .bash_profile что вы ожидали.

Bash читает группу файлов в зависимости от вызова оболочки:

  • Оболочка входа: в основном оболочка, которая присоединяется к tty и исходит из процесса аутентификации. Этот вид оболочки читает / etc / profile, ~ / .bash_profile, ~ / .bash_login и ~ / .profile.
  • Интерактивная оболочка без входа в систему: интерактивные оболочки, которые открываются без процесса аутентификации. Этот вид оболочки читает /etc/bash.bashrc и ~ / .bashrc

Вы можете найти больше информации: man bash, раздел ПРИЗЫВ