Смущает смысл интерактивной и неинтерактивной оболочки при запуске скрипта

В этом вопросе я прочитал следующее:

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

Я не знаю, правильно ли указано выше, я подумал, что следующее правильно:

Какое утверждение является верным?

Оболочка, запускающая скрипт, является неинтерактивной оболочкой.

Неинтерактивная оболочка все еще может использовать, например, read для чтения данных со стандартного ввода.

Если стандартный ввод является терминалом, это может обеспечить уровень «взаимодействия», но это не делает оболочку, выполняющую сценарий интерактивной оболочкой. Однако скрипт будет интерактивным.

Текст запутан, потому что он использует слово «интерактивный» для обозначения двух вещей:

  1. Оболочка, запущенная для выполнения сценария оболочки, не является интерактивной (в том смысле, что она не имеет контроля над заданиями, она не предоставляет подсказки по умолчанию и т. Д.). Это технический термин для типа оболочки, так же как «login shell» и «интерактивная оболочка».
  2. Действие получения данных по тому же самому сценарию может быть «интерактивным» (если не считать, например, канал или файл). Но опять же, любая команда, которая берет данные со стандартного ввода, может считаться интерактивной. tr 'az' 'A-Z' сам по себе «интерактивно» превращает все строчные символы ASCII в верхний регистр.

Напишите простой ниже сценарий vi non-intractive.sh .

 #!/bin/bash echo "Hello World!" 

сохраните его и запустите его bash non-interactive.sh ; это была оболочка bash запускавшая скрипт, и это была неинтерактивная оболочка.

Теперь напишите еще один простой скрипт vi interactive.sh .

 #!/bin/bash echo "Please input things:" read userinput echo "You input: $userinput!" 

сохраните его и запустите его bash interactive.sh , введите ввод и нажмите enter; это была оболочка bash запускавшая скрипт, это была интерактивная оболочка.