что вы подразумеваете под интерактивной оболочкой?

что вы подразумеваете под интерактивной оболочкой?

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и т. д.

Связанный контент