Quali lingue vengono utilizzate per creare i comandi Unix?


Risposte:


26

Di solito è semplice C. I comandi lse pwdprovengono dal GNU Coreutilspacchetto in (la maggior parte?) Distribuzioni Linux (e forse alcuni altri sistemi). Puoi trovare il codice sulla loro homepage .

In coreutilsparticolare, li costruisci con i soliti passaggi: dopo aver decompresso l'origine, emetti:

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

Fai attenzione: installare utility di base come quelle sulla copia della tua distribuzione è una cattiva idea . Utilizzare qualsiasi gestore di pacchetti fornito dal proprio sistema. Puoi installare un prefisso diverso (l'installazione da qualche parte nella tua home directory è una buona idea se vuoi sperimentare).

Nota che sebbene esista un cdeseguibile , quello cdche utilizzerai nella maggior parte dei casi non è un eseguibile separato. Deve essere un build-in di shell (altrimenti non potrebbe cambiare la directory corrente della shell - questo deve essere fatto dal processo stesso), quindi è scritto nella stessa lingua della shell (che spesso è Ctroppo).

Altri esempi:

  • pwdFonte OpenSolaris .
  • FreeBSD ls

Puoi trovarne molti altri online.


5

Solo per aggiungere un po 'di più alla risposta di Mat, anche se Unix li implementa come programmi autonomi, molti comandi sono anche implementati all'interno bash(per salvarlo dovendo generare un nuovo processo) vedere la bashpagina man per maggiori dettagli, o dare un'occhiata alla tag.

bash è anche scritto in C.

Vale la pena notare che questi comandi non devono essere scritti in C - in effetti, diverse distribuzioni di mini linux utilizzano luaimplementazioni di questi e altri.


2
Bene bash, o qualsiasi altro buon guscio.
rd

1
Si noti inoltre che alcuni comandi come cddeve essere una shell integrata per funzionare in modo efficace.
Programmatore
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.