Хоча це справедливе перше наближення, коли ви починаєте вивчати основи використання оболонок, на рівні "ось як запускається програма" і "ось як запускається кілька програм одна за одною в одному рядку" , це насправді не так.
Для початківця важче зрозуміти, але правильніше пояснити, що мова оболонки - це комп'ютерна мова . Він має синтаксис . Цей синтаксис містить різні лексичні елементи, включаючи (серед іншого) нові рядки, оператори, слова та зарезервовані слова.
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 рік.