
UNIX: Полный справочник, второе издание Кеннета Х. Розена и др.
Вы можете запустить другую оболочку после входа в систему, используя имя оболочки в качестве команды; например, чтобы запустить оболочку Korn, вы можете ввести ksh в командной строке. Этот тип оболочки не является оболочкой входа, и вам не нужно снова входить в систему, чтобы использовать ее, но это все еще интерактивная оболочка, то есть вы взаимодействуете с оболочкой, вводя команды (в отличие от использования оболочки для запуска скрипта, как обсуждалось в Главе 20). Экземпляры оболочки, которые запускаются в окне терминала, когда вы используете графический интерфейс, также являются интерактивными оболочками без входа. Когда вы запускаете оболочку без входа, она не считывает ваш файл .profile, .bash_profile или .login (или ваш файл .logout), но она все равно считывает второй файл конфигурации оболочки (например, .bashrc). Это означает, что вы можете протестировать изменения в вашем .bashrc, запустив другой экземпляр оболочки, но если вы тестируете изменения в вашем .profile или .login, вам необходимо выйти из системы и снова войти, чтобы увидеть результаты.
Я просматривал строки выше и не понимаю, что имеется в виду под интерактивной оболочкой. Правда ли, что .profile не читается, если я использую терминал?
Более того, что вы имеете в виду, когда говорите, что Bourne не является интерактивной оболочкой, в то время как bash/csh является интерактивной оболочкой?
решение1
Интерактивная оболочка — это просто любой процесс оболочки, который вы используете для ввода команд и получения обратно вывода этих команд. То есть оболочка, с которой вы взаимодействуете.
Итак, ваша оболочка входа интерактивна, как и любые другие оболочки, которые вы запускаете вручную, как описано в отрывке, который вы процитировали в своем вопросе. Напротив, когда вы запускаете скрипт оболочки, запускается неинтерактивная оболочка, которая выполняет команды в скрипте, а затем завершает работу, когда скрипт завершается.
Оболочку Bourne можно использовать как интерактивную оболочку, как bash
и или tcsh
. Фактически, многие системы, такие как FreeBSD, используют sh
в качестве пользовательской оболочки по умолчанию. Современные оболочки, такие как bash
, zsh
, tcsh
, и т. д., имеют много функций, которых нет в оболочке Bourne, что делает их более удобными и комфортными для интерактивного использования (история команд, завершение и т. д.).
Интерактивные нелогинные оболочки (то есть оболочки, которые вы запускаете вручную из другой оболочки или открывая окно терминала) не считывают ваши файлы .login
или .profile
. Они считываются и выполняются только оболочками входа (оболочками, запущенными системным login
процессом или вашим диспетчером отображения X), поэтому содержащиеся в них команды и настройки применяются только один раз, в начале сеанса входа. Поэтому, когда вы запускаете терминал, оболочка, которую она порождает для вас, не считывает ваши файлы входа ( .login
для оболочек в стиле c, .profile
для оболочек в стиле bourne), но она считывает файлы .cshrc
, .bashrc
и т. д.