2013-09-27 16 views
7

Ci sono molti comandi di shell, comeI comandi della shell sono scritti in quale lingua?

ls, cd, gatto ecc

quale linguaggio di programmazione viene utilizzato per iscritto questi comandi? Come vengono compilati?

mia comprensione ::

Shell is a program which takes command; ** does this mean that it interprets those commands(like ls is interpreted by shell program)?** 

One More domande, che lingua è scritto in programma Shell?

Grazie!

+0

Io sono un principiante e confondersi molto. Questo potrebbe spiegarmi in un modo molto migliore. – CODError

+0

Non ne sono sicuro, ma penso che siano scritti nelle lingue dell'Assemblea. Controlla [qui] (http://en.wikipedia.org/wiki/Assembly_language) per ulteriori informazioni sul montaggio. –

risposta

4

La maggior parte dei programmi di utilità di base in Linux sono scritti in C .Questo u può verificare in busybox source code che supporta la maggior parte del programma di utilità di base di comando di Linux che sono scritti nei C. Così comando come ls, cd, ecc ... sono in c

Come guscio interpreterà il check-in al di sotto di collegamento

in un sistema operativo c'è un programma speciale chiamato il guscio. La shell accetta comandi leggibili dall'uomo e li traduce in qualcosa che il kernel può leggere ed elaborare.

http://www.math.iitb.ac.in/resources/manuals/Unix_Unleashed/Vol_1/ch08.htm

+0

Grazie! L'articolo sembra molto buono e facile da capire sul funzionamento del kernel e della shell. – CODError

+0

Se vuoi capire come funzionano i comandi come se tu potessi controllare in 'busy source-code code ' –

+0

scoprirò {busy box code-code}. Ma se è possibile, potresti spiegarmi un po '. – CODError

5

Questi programmi sono scritti principalmente nel linguaggio di programmazione C così come il kernel di Linux.

+2

Ed ecco il codice sorgente: http://lingrok.org/xref/coreutils/src/ – Jojo

+0

Come per la mia understading, i comandi potrebbero essere wrtten nel linguaggio di programmazione Shell, come Bash. Mentre i programmi Shell (come Bash) sono in linguaggio C (non sono sicuro se potrebbe essere linguaggio Assembly). – CODError

1

I programmi sono eseguibili ordinari scritti in qualsiasi lingua (principalmente C).

La shell accetta un comando immesso che è solo una stringa. Cerca quindi determinate sequenze di caratteri che hanno un significato speciale per la shell, come le variabili ambientali che sono $ seguite da una parola o reindirizzamenti che sono > seguiti da un percorso. Dopo che questa sostituzione è stata preformata, ha una stringa divisa in spazi per generare un nome di un eseguibile e dei parametri. La shell cercherà quindi l'eseguibile nell'elenco di directory nella variabile ambientale PATH. La shell utilizza quindi le chiamate di sistema per creare un processo dall'eseguibile con i parametri.

Ad esempio per eseguire il comando ls $HOME la shell prima riconoscere che $HOME è una variabile ambientale e sostituirlo per il suo valore in questo caso /home/user lasciando il comando ls /home/user. Quindi divide il comando nello spazio per ottenere il nome dell'eseguibile ls e il parametro /home/user. La shell trova il primo eseguibile corrispondente a ls in genere /bin/ls. Quindi usa ether le chiamate di sistema spawn()/posix_spawn() o fork() ed exec() per creare il nuovo processo.

+0

Spiega di più! dando un esempio di un comando. spiegare le seguenti cose: -sostituendo variabili di valore (che sono nome utente ecc.) -Generazione di eseguibili e parametri -uso chiamate di sistema per creare processo – CODError

Problemi correlati