2013-09-27 22 views
7

Istnieje wiele poleceń powłoki, jakPolecenia powłoki są napisane w jakim języku?

ls, cd, kotów itp

jakim języku programowania jest używany w pisaniu tych poleceń? W jaki sposób są one kompilowane?

Moje zrozumienie ::

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

jeszcze jedno pytanie, w jakim języku jest napisany w programie Shell?

Dzięki!

+0

Jestem początkujący i bardzo się zdezorientowany. To może wyjaśnić mi w znacznie lepszy sposób. – CODError

+0

Nie jestem pewien, ale myślę, że są napisane w językach Assembly. Sprawdź [tutaj] (http://en.wikipedia.org/wiki/Assembly_language), aby dowiedzieć się więcej na temat montażu. –

Odpowiedz

4

Większość podstawowych programów narzędziowych w języku linux jest napisanych w C. Ten kod można zweryfikować w busybox source code, który obsługuje większość podstawowych programów narzędziowych dla systemu Linux, które są napisane w C. Więc poleceniem ls, cd ... itp są c

Jak powłoka zinterpretuje sprawdzić w link poniżej

w systemie operacyjnym istnieje specjalny program o nazwie powłokę. Powłoka przyjmuje polecenia czytelne dla człowieka i tłumaczy je na coś, co jądro może czytać i przetwarzać.

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

+0

Dzięki! Artykuł wydaje się bardzo dobry i łatwy do zrozumienia, jak działa jądro i powłoki. – CODError

+0

Jeśli chcesz zrozumieć, jak działają komendy, tak jak możesz sprawdzić w 'polu zajętości kodu źródłowego' –

+0

dowiem się o {zajęty kod źródłowy pola}. Ale jeśli to możliwe, czy mógłbyś wyjaśnić trochę. – CODError

5

Programy te są napisane głównie w języku programowania C, podobnie jak jądro Linux.

+2

A oto kod źródłowy: http://lingrok.org/xref/coreutils/src/ – Jojo

+0

Zgodnie z moim zrozumieniem, polecenia mogą być tłumaczone w języku programowania Shell, np. Bash. Podczas gdy programy Shell (jak Bash) są w języku C (nie jestem pewien, czy to mógłby być język Zgromadzenia). – CODError

1

Programy to zwykłe pliki wykonywalne napisane w dowolnym języku (najczęściej C).

Powłoka przyjmuje wprowadzone polecenie, które jest po prostu ciągiem. Następnie wyszukuje określone sekwencje znaków, które mają specjalne znaczenie dla powłoki, takie jak zmienne środowiskowe, po których następuje słowo lub przekierowania, które są >, po których następuje ścieżka. Po wcześniejszym zastąpieniu tej substytucji ma ciąg znaków, który jest dzielony na spacje w celu wygenerowania nazwy pliku wykonywalnego i parametrów. Powłoka następnie wyszuka plik wykonywalny na liście katalogów w zmiennej środowiskowej PATH. Powłoka następnie używa wywołań systemowych, aby utworzyć proces z pliku wykonywalnego z parametrami.

Na przykład, aby wykonać polecenie ls $HOME powłoka musi najpierw uznać, że $HOME jest zmienna na środowisko i zastąpić go do jego wartości w tym przypadku /home/user opuszczającej polecenie ls /home/user. Następnie dzieli polecenie na spację, aby uzyskać nazwę pliku wykonywalnego ls i parametr /home/user. Powłoka znajduje pierwszy plik wykonywalny, który pasuje do ls zwykle /bin/ls. Następnie używa ether wywołania systemowe spawn()/posix_spawn() lub fork() i exec() w celu utworzenia nowego procesu.

+0

Proszę wyjaśnić więcej! podając przykład polecenia. wyjaśnić poniżej rzeczy: -podstawianie zmiennych środowiskowych (które są nazwą użytkownika itp.) -Generowanie plików wykonywalnych i parametrów -używanie wywołań systemowych do tworzenia procesu – CODError

Powiązane problemy