Bash: эффект от запуска `set -i`?

Bash: эффект от запуска `set -i`?

Сегодня я читал документацию setи понял, что моя переменная flags ( $-) содержит флаг, недокументированный на странице справки ( help set) и наGNU.org: i.
Через некоторое время мне удалось найтиэта страницакоторый гласит, что iозначаетинтерактивный. Первое, что я тогда попробовал ,
конечно, было отключить его.
После запуска больше не содержал , но кроме этого, все, по-видимому, работало как всегда. Аналогично, размещение файла скрипта не имело видимого эффекта при его запуске.set +i$-i
set -i

Итак, мой вопрос: имеет ли добавление set -i/ set +iв скрипт или его запуск в командной строке какой-либо эффект, кроме изменения $-переменной?

решение1

По-видимому, единственным последствием использования set -iили set +iв командной строке после инициализации оболочки является изменение значения $-. -iОпцию можно использовать осмысленно только при вызове bashдля создания оболочки, в этом случае она заставит оболочку стать интерактивной.

Беглый просмотр исходного кода bash показывает, что интерактивные проверки во время выполнения ссылаются на глобальную переменную interactive, которая устанавливается во время последовательности инициализации и затем не изменяется. Только set [+-]iи $-используют forced_interactiveглобальную. ( interactiveбудет установлена ​​в true, если forced_interactiveустановлена ​​или в противном случае, как описано в man bash.)

решение2

bash-1.14.7-14 имеет документацию по опции -i на странице руководства. https://bugzilla.redhat.com/show_bug.cgi?id=1129

   -i        If the -i option is present, the shell is interactive.

Интерактивная оболочка считывает команды из пользовательского ввода на tty. Помимо прочего, такая оболочка считывает файлы запуска при активации, отображает приглашение и включает управление заданиями по умолчанию. Пользователь может взаимодействовать с оболочкой. Оболочка, запускающая скрипт, всегда является неинтерактивной оболочкой.

Более подробная информация здесь:

http://www.tldp.org/LDP/abs/html/intandnonint.html https://unix.stackexchange.com/questions/43385/что-вы-имеете в виду-под-interactive-shell

Дополнение: Дополнительные ссылки

Действительно хороший ответ о оболочках без входа в систему

https://askubuntu.com/questions/247738/why-is-etc-profile-not-invoked-for-non-login-shells

Руководство bash по интерактивным оболочкам

http://www.gnu.org/software/bash/manual/html_node/Interactive-Shell-Behavior.html#Interactive-Shell-Behavior

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