1

Я вошел через ssh на удаленную Ubuntu-Machine.

По умолчанию я нахожусь в терминале с именем -bash (обратите внимание на дефис). Этот bash не загружает / не использует мой ~ / .bashrc.

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

Теперь, в чем разница между -bash и bash . Почему я вошел в систему по умолчанию в версии -bash . Я выполнил chsh -s /bin/bash и перезапустил компьютер, который согласно этому посту устанавливает среду по умолчанию. Это похоже на провал. И последнее, но не менее важное: если я не могу перейти на "нормальный" bash, как я могу получить -bash, чтобы использовать мой .bashrc?

Чтобы проиллюстрировать мою проблему, вот рабочий процесс, показывающий вывод консоли:

user@machine:~$ echo $0
-bash
user@machine:~$ bash
~: echo $0
bash

1 ответ1

3

Для оболочек префикс argv [0] с дефисом является традиционным способом обозначить его как "оболочку входа" (эквивалентную, например, bash --login). Оболочки входа отличаются от "обычных" тем, что они используют другой сценарий запуска (например, ~/.profile вместо ~/.bashrc) - он может отображать приветствие, проверку почты, запуск ssh-agent и т.д.… В других слова, задачи, которые нужно выполнить только один раз.

Как правило, оболочке входа в систему необходимо вручную .bashrc используя:

. ~/.bashrc

или же:

source ~/.bashrc

в конце сценария ~/.bash_profile .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .