Ответ 1
Bash определенно интерпретируется; Я не думаю, что у вас есть разумный вопрос.
Возможно, возникнут некоторые разногласия по поводу того, является ли это языком. Он предназначен в основном для интерактивного использования, выполняя команды, предоставляемые операционной системой. Для большого количества этого конкретного вида использования, если вы просто печатаете команды типа
echo hello
или
cp foo.txt bar.txt
легко думать, что он "просто" для выполнения простых команд. В этом смысле он сильно отличается от интерпретируемых языков, таких как Perl и Python, которые, хотя они могут использоваться в интерактивном режиме, в основном используются для написания скриптов (интерпретируемых программ).
Одним из следствий этого акцента является то, что его дизайн оптимизирован для интерактивного использования. Строки не требуют кавычек, большинство команд выполняются сразу после их ввода, большинство вещей, которые вы делаете с ней, будут вызывать внешние программы, а не встроенные функции и т.д.
Но, как мы знаем, также возможно писать сценарии с помощью bash, а bash имеет множество функций, в частности конструкций управления потоком, которые в основном используются в скриптах (хотя они также могут использоваться на командной строки).
Другое различие между bash и многими языками сценариев заключается в том, что bash script считывается, анализируется и выполняется в порядке. Синтаксическая ошибка в середине bash script не будет обнаружена до тех пор, пока выполнение не достигнет ее. Perl или Python script, напротив, анализируется полностью до начала выполнения. (Такие вещи, как eval
, могут изменить это, но общая идея верна.) Это существенная разница, но она не указывает на резкую разделительную линию. Если что-то делает Perl и Python более похожими на скомпилированные языки.
Нижняя строка: Да, bash - интерпретируемый язык. Или, может быть, более точно, bash является интерпретатором для интерпретируемого языка. (Имя "bash" обычно относится к интерпретатору оболочки или интерпретатору, а не к тому, что он интерпретирует.) Он имеет некоторые существенные отличия от других интерпретируемых языков, которые были разработаны с самого начала для сценариев, но этих различий недостаточно удалить его из категории "интерпретируемых языков".