Jakie języki są używane do budowania poleceń Uniksa?

9

Przykłady poleceń, o których mówię ls, to pwd, i cd. Jak te są zbudowane? Czy masz przykład?

fronthem
źródło
2
Czy to zadanie domowe?
Stefan Lasiewski

Odpowiedzi:

26

Zwykle jest to jasne C. Polecenia lsi pwdpochodzą z GNU Coreutilspakietu w (większości?) Dystrybucjach Linuksa (i może w niektórych innych systemach). Możesz znaleźć kod na ich stronie głównej .

W coreutilsszczególności budujesz je zgodnie ze zwykłymi krokami: po rozpakowaniu źródła wydaj:

./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

Bądź ostrożny - instalowanie podstawowych narzędzi, takich jak te nad kopią ich dystrybucji, jest złym pomysłem . Użyj do tego dowolnego menedżera pakietów. Możesz jednak zainstalować na innym prefiksie (instalacja gdzieś w katalogu domowym jest dobrym pomysłem, jeśli chcesz eksperymentować).

Pamiętaj, że chociaż istnieje cdplik wykonywalny , cdw większości przypadków będziesz go używać, ale nie jest to osobny plik wykonywalny. Musi być wbudowany w powłokę (w przeciwnym razie nie mógłby zmienić bieżącego katalogu powłoki - musi to zrobić sam proces), więc jest napisany w tym samym języku co powłoka (co często Cteż jest).

Inne przykłady:

  • pwdŹródło OpenSolaris .
  • FreeBSD ls

Możesz znaleźć wiele innych z nich online.

Mata
źródło
5

Aby dodać trochę więcej do odpowiedzi Mat, chociaż Unix implementuje je jako samodzielne programy, wiele poleceń jest również implementowanych w bash(aby zaoszczędzić na konieczności odrodzenia nowego procesu), zobacz bashstronę podręcznika, aby uzyskać więcej szczegółów, lub spójrz na tag.

bash jest również napisane w C

Warto zauważyć, że polecenia te nie muszą być napisane w języku C - w rzeczywistości kilka dystrybucji mini-linux używa luaimplementacji tych i innych.

symcbean
źródło
2
Cóż, bash lub jakikolwiek inny dobry pocisk.
rds
1
Zauważ też, że niektóre polecenia, takie jak cdwbudowana powłoka, muszą działać poprawnie.
AProgrammer