Если вы открываете xfce4-trminal
или gnome-terminal
(или другой терминал) ваша оболочка в интерактивном режиме. Каждый скрипт запускается в интерактивном режиме.
Если Вы бежите script.sh
через
xfce4-terminal -H -x script.sh
или же
gnome-terminal -x script.sh
или другой терминал, ваша оболочка находится в неинтерактивном режиме.
Скрипты могут быть принудительно запущены в интерактивном режиме с -i
опцией или с #!/bin/bash -i
заголовком. Имейте в виду, что это может привести к нестабильному поведению сценария или отображать сообщения об ошибках, даже если ошибок нет.
Что такое set -m
? Это режим монитора . Фоновые процессы выполняются в отдельной группе процессов, и после их завершения печатается строка, содержащая их статус выхода. Он включен по умолчанию для интерактивных оболочек.
Что такое set -o
? Это записать текущие настройки параметров в стандартный вывод в неопределенном формате.
Почему set -o
работает?
Опция -o была принята из KornShell для удовлетворения потребностей пользователей. В дополнение к общепринятому дружественному интерфейсу, -o необходим для обеспечения режима редактирования командной строки vi, для которого историческая практика не выдает имя опции из одной буквы. (Хотя, возможно, было возможно изобрести такое письмо, было признано, что будут разработаны другие режимы редактирования, и -o предоставляет достаточно пространства имен для описания таких расширений.)
Исторические реализации несовместимы в формате, используемом для отчетов о состоянии опции -o. Формат + o без аргумента-опции был добавлен, чтобы обеспечить переносимый доступ к опциям, которые можно сохранить, а затем восстановить, используя, например, точечный скрипт.
Во всяком случае, set -m
это предпочтительный способ.