Хоча це справедливе перше наближення, коли ви починаєте вивчати основи використання оболонок, на рівні "ось як запускається програма" і "ось як запускається кілька програм одна за одною в одному рядку" , це насправді не так.
Для початківця важче зрозуміти, але правильніше пояснити, що мова оболонки - це комп'ютерна мова . Він має синтаксис . Цей синтаксис містить різні лексичні елементи, включаючи (серед іншого) нові рядки, оператори, слова та зарезервовані слова.
if
, then
, else
, І fi
все зарезервовані слова . Вони мають особливе значення під час розбору вхідних даних, які кожен дає оболонці, відповідно до її граматики . Аналогічно ;
є оператором розділення .
Таким чином, введення мовою оболонки - це загальноприйнята комп'ютерна програма, що інтерпретується іншою програмою, інтерпретатором , оболонкою. Його окремі граматичні частини не є програмами. Мова оболонки - це спосіб вказати (інші) програми для запуску оболонки.
[
не є спеціальним лексичним елементом у граматиці оболонки, такою як оператор. Це звичайне слово , яке називає одну таку програму [
. У багатьох оболонках є вбудована версія цієї програми, об'єднана в код самої програми оболонки, але ви також можете знайти зовнішню програму з таким ім'ям десь, наприклад, /bin/[
або /usr/bin/[
, до якої можуть запускатися інші програми, крім оболонок. Так само ]
не є спеціальним лексичним елементом оболонки. Це звичайне слово, яке стає аргументом для [
програми. [
Програма вимагає , щоб його останній аргумент, коли він виконується, то]
, що він приступає до потім ігнорувати.
Ще одна подібна програма, названа у вашому запитанні echo
. Знову ж таки, у більшості оболонок є вбудована версія цієї програми. Але знову ж є і зовнішня версія програми, десь на зразок /bin/echo
або /usr/bin/echo
, для програм, окрім оболонок, для виклику.
Третя програма, названа у вашому запитанні, - це ls
. Оболонки зазвичай не мають вбудованих версій цієї програми, і це зовнішня програма, яку можна знайти десь, наприклад, /bin/ls
або /usr/bin/ls
.
Щодо оболонки Bourne Again, ви можете прочитати більше про це в Основних особливостях оболонки документації щодо інформації про оболонку GNU Bourne Again. Інші оболонки, природно, мають різні граматики. Специфікація Single Unix описує синтаксис, до якого повинні дотримуватися всі оболонки, сумісні з POSIX (у своїх режимах, сумісних з POSIX).
Подальше читання
- « Граматика оболонки ». Мова командної оболонки . Базові специфікації Випуск 7. Відкрита група. IEEE 1003.1-2008. ISBN 1937218812.
test
. Комунальні послуги . Базові специфікації Випуск 7. Відкрита група. IEEE 1003.1-2008. ISBN 1937218812.
- « Граматика оболонки ». Посібник із Z Shell . версія 5.3.1. 2017 рік.