Какие языки используются для построения команд 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тоже).

Другие примеры:

  • OpenSolaris pwdисточник.
  • FreeBSD ls

Вы можете найти много других из них в Интернете.


5

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

bash также написано на C

Возможно, стоит отметить, что эти команды не должны быть написаны на C - действительно, некоторые дистрибутивы mini linux используют luaреализации этих и других.


2
Ну баш или любая другая хорошая оболочка.
Rds

1
Также обратите внимание, что некоторые команды, такие как, cdдолжны быть встроенными в оболочку для эффективной работы.
AProgrammer
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.