Является ли Bash интерпретируемым языком?

Из того, что я читал до сих пор, bash, похоже, соответствует определению интерпретируемого языка:

Тем не менее, я не мог найти ссылку на bash на странице Википедии для интерпретируемых языков или обширный поиск в Google. Я также нашел страницу на блоке Programmers Stack Exchange, которая, по-видимому, подразумевает, что bash не интерпретируется language-, если нет, то что это такое?

Ответ 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" обычно относится к интерпретатору оболочки или интерпретатору, а не к тому, что он интерпретирует.) Он имеет некоторые существенные отличия от других интерпретируемых языков, которые были разработаны с самого начала для сценариев, но этих различий недостаточно удалить его из категории "интерпретируемых языков".

Ответ 2

Bash является интерпретатором в соответствии с справочным руководством GNU Bash:

Bash - это интерпретатор языка командной строки или интерпретатор команд для операционной системы GNU.