Когда я подключаюсь по 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 читает группу файлов в зависимости от вызова оболочки:
Вы можете найти больше информации: man bash, раздел ПРИЗЫВ