BASH Shell попытается загрузить несколько файлов конфигурации во время инициализации.
Существует 2 набора файлов конфигурации, в зависимости от того, используется ли оболочка login или non-login.
- Когда вы входите на сервер на “голом” железном мониторе, или через SSH, или с помощью # su – [username], вы получаете оболочку login.
- Когда вы запускаете оболочку в терминале в существующем сеансе (gnome-терминал, оболочка внутри другого или с помощью # su [имя пользователя]…), вы получаете оболочку non-login Скрипт оболочки также выполняется под оболочкой non-login.
Ниже мы проиллюстрируем разницу, добавив отладку в эти файлы конфигурации.
Login shell
По умолчанию оболочка входа в систему ( login )загружает следующие файлы:
# su - test this is /etc/profile this is ~/.bash_profile this is ~/.bashrc this is /etc/bashrc
Здесь обратите внимание на файл ~/.bash_profile, файл по умолчанию называется ~/.bashrc и ~/.bashrc/ называется /etc/bashrc.
Если по какой-то причине BASH не может найти файл ~/.bash_profile, он будет искать ~/.bash_login вместо этого.
Если снова ~/.bash_login не может быть найден, BASH вместо этого будет искать ~/.profile.
И в 2 случаях ~/.bashrc и /etc/bashrc загружаться не будут, если они не были явно вызваны в ~/.bash_login или ~/.profile.
Примеры, когда ~/.bash_profile не существует:
– При наличии ~/.bash_login, независимо от того, существует ~/.profile или нет:
$ su - test Password: this is /etc/profile This is ~/.bash_login
– Только ~/.profile:
# su - test this is /etc/profile this is ~/.profile
Non-login Shell
Это проще, BASH загружает только ~/.bashrc, и снова файл вызывается /etc/bashrc.
# su test this is ~/.bashrc this is /etc/bashrc