Які мови використовуються для створення команд Unix?


Відповіді:


26

Зазвичай це просто C. Команди lsі pwdвиходять з GNU Coreutilsпакету в (більшості?) Дистрибутивах Linux (а може бути і в деяких інших системах). Ви можете знайти код на їх домашній сторінці .

Для coreutilsконкретно, ви будуєте їх зі звичайними кроками: після розпакування джерела, питання:

./configure --prefix=/some/path
                   # type ./configure --help to get the available options
make
make install       # could require root access depending on the path you used

Будьте обережні - установка базових утиліт, таких як копія їх дистрибутиву, є поганою ідеєю . Використовуйте для цього будь-який менеджер пакунків, який має ваша система. Однак ви можете встановити інший префікс (якщо ви хочете експериментувати, десь у вашому домашньому каталозі є хорошою ідеєю).

Зауважте, що хоч є cdвиконаний файл , cdви будете використовуватись у більшості випадків, це не окремий виконуваний файл. Це має бути вбудована оболонка (інакше вона не могла б змінити поточний каталог оболонки - це повинен зробити сам процес), тому він пишеться тією ж мовою, що і оболонка (що часто Cтеж є).

Інші приклади:

  • pwdДжерело OpenSolaris .
  • FreeBSD ls

Ви можете знайти ще багато таких в Інтернеті.


5

Просто щоб додати трохи більше відповіді Мета, хоча Unix реалізує їх як окремі програми, багато команд також реалізовані в bash(щоб зберегти його необхідності породжувати новий процес) побачити bashсторінку людини для отримання більш докладної інформації, або мати погляд на тег.

bash також написано на С

Можливо, варто відзначити, що ці команди не повинні бути записані на С - дійсно, кілька міні-Linux розподілу використовують luaреалізацію цих та інших.


2
Ну баш, або будь-яка інша хороша шкаралупа.
rds

1
Зауважте також, що деякі команди, наприклад, cdповинні бути вбудованими в оболонку, щоб ефективно працювати.
AProgrammer
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.