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


25

UNIX: полный справочник, второе издание Кеннета Х. Розена и соавт.

Вы можете запустить другую оболочку после входа в систему, используя имя оболочки в качестве команды; например, чтобы запустить оболочку Korn, вы можете ввести ksh в командной строке. Этот тип оболочки не является оболочкой входа в систему, и вам не нужно снова входить в систему, чтобы использовать ее, но это все еще интерактивная оболочка, что означает, что вы взаимодействуете с оболочкой, вводя команды (в отличие от использования оболочки для запустить скрипт, как описано в главе 20). Экземпляры оболочки, которые запускаются в окне терминала при использовании графического интерфейса, также являются интерактивными оболочками, не входящими в систему. Когда вы запускаете оболочку, не входящую в систему, она не читает ваш файл .profile, .bash_profile или .login (или ваш файл .logout), но все равно читает второй файл конфигурации оболочки (например, .bashrc). Это означает, что вы можете проверить изменения в вашем.

Я проходил вышеупомянутые строки, и я не понимаю, что это значит под интерактивной оболочкой. Правда ли, что .profile не читается, если я использую терминал?

Кроме того, что это значит, когда вы говорите, что bourne не является интерактивной оболочкой, а bash / csh - интерактивной оболочкой?

Ответы:


27

Интерактивная оболочка - это просто любой процесс оболочки, который вы используете для ввода команд и получения результатов этих команд. То есть оболочка, с которой вы взаимодействуете.

Итак, ваша оболочка входа в систему является интерактивной, как и любые другие оболочки, которые вы запускаете вручную, как описано в отрывке, который вы цитировали в своем вопросе. Напротив, когда вы запускаете сценарий оболочки, запускается неинтерактивная оболочка, которая выполняет команды в сценарии, а затем завершает работу, когда сценарий завершается.

Оболочка Bourne может использоваться как интерактивная оболочка, как bashили tcsh. Фактически, многие системы, такие как FreeBSD, используют shв качестве пользовательской оболочки по умолчанию. Современные раковины любят bash, zsh, tcshи т.д. есть много особенностей , которые Bourne оболочка не имеет, что делает их более удобными и удобными для интерактивного использования (историй команд, завершения и т.д.).

Интерактивные оболочки без входа в систему (то есть оболочки, которые вы запускаете вручную из другой оболочки или открыв окно терминала) не читают ни ваши, .loginни .profileфайлы. Они считываются и выполняются только оболочками входа в систему (оболочками, запущенными loginсистемным процессом или вашим диспетчером отображения X), поэтому содержащиеся в них команды и настройки применяются только один раз, в начале сеанса входа в систему. Таким образом, при запуске терминала, оболочки , что она нерестится для вас не читает ваши регистрационные файлы ( .loginдля оболочек с стилем, .profileдля Bourne оболочек типа), но это не читать .cshrc, и .bashrcт.д. файлы.


Можно запустить оболочку как неинтерактивную оболочку входа в систему.
jw013

Правда, но потенциально сбивает с толку!
D_Bye

ksh также является современной оболочкой :-) См. www2.research.att.com/sw/download и используйте меню на левом поле для перехода к AST-> ksh-> Overview. Новый релиз выходит несколько раз в год от Дэвида Корна и Глена Фаулера. Всем удачи.
Оболочка

1
@shellter - да, действительно. Но это не тот, который я когда-либо использовал, и мне пришлось где-то прекратить перечислять оболочки! ;-)
D_Bye

Вы сказали, что The Bourne shell can be used as an interactive shell, just like bash or tcsh. оболочка Борна не такая же, как bash?
Mr.Web
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.