Interfejs Linux Shell do jądra Linux

Interfejs Linux Shell do jądra Linux
Przejdziemy przez Linux Shell, interpreter poleceń dla Linux. Shell zapewnia środowisko, w którym niewiele programów wykonywalnych jest obecnych na określonej znanej ścieżce. Shell lokalizuje te wykonywalne i zapewnia dane wyjściowe tych poleceń do konsoli. Omówimy kilka przykładowych poleceń i zmienne środowiskowe powłoki.

Opis:

Shell zapewnia użytkownikowi środowisko, w którym użytkownik może wykonywać wiele programów wykonywalnych, a dane wyjściowe tych programów jest wyświetlane na wyświetlaczu. Zasadniczo działająca filozofia powłoki polega na tym, że nieustannie czeka, aż użytkownik wprowadzi ciąg. Następnie ten ciąg jest przeszukiwany i dopasowywany do znanych programów wykonywalnych, które są obecne w środowisku Shell. Jeśli znaleziono dopasowany program wykonywalny, wykonywalny jest uruchamiany po utworzeniu procesu dziecięcego. Ten nowo utworzony proces dzieci wykonuje program. Wyjście programu jest przekazywane procesowi nadrzędnemu, którym jest powłoka. Shell drukuje wyjście do konsoli, jeśli wyjście nie zostanie przekierowane. Lokalizacje, w których powłoka wyszukuje programy wykonywalne, są obecne w zmiennej środowiskowej, „ścieżka”. Zmienna ścieżka utrzymuje „:” rozdzielone na kilku ścieżkach, w których powłoka szuka programów wykonywalnych.

Schemat blokowy dla powłoki pokazano następująco:

Z dostarczonego schematu blokowego możemy stwierdzić, że potrzebujemy powłoki, aby wykonać dowolne wykonywalne w środowisku Linux. Bez powłoki nie jest możliwe dynamiczne wykonanie programu C. Istnieje kilka predefiniowanych programów wykonywalnych, które są znane jako polecenia powłoki. Niektóre przykłady poleceń powłoki to LS, PS itp.

Omówmy polecenia powłoki. Istnieją dwa rodzaje poleceń powłoki:

a) Wbudowane polecenia

Są to polecenia, które są częścią samej powłoki. Podczas wykonywania tych poleceń Shell nie wide. Polecenia te są wykonywane jako część samego Shell. Aby aktualizować w tych poleceń, potrzebujemy aktualizacji samej powłoki. Polecenia te są powiązane ze skorupą.

Niektóre przykłady wbudowanych poleceń to CD, Echo, Kill, Break, Alias, Bg itp. Możemy użyć polecenia „Pomoc”, aby zobaczyć całą listę wbudowanych poleceń.

b) Polecenia zewnętrzne

Te polecenia to osobne wykonywalne programy C. To nie są częścią skorupy. Są to miejsca na określonej ścieżce. Shell wychodzi na te ścieżki, wykonuje programy i wyświetla dane wyjściowe. Dodanie nowego polecenia do listy znanych poleceń jest łatwe; po prostu skopiuj nowy program/polecenie wykonywalne na znaną ścieżkę. Zasadniczo polecenia te są umieszczane na ścieżce jak /usr /bin, /usr /sbin itp. Wszystkie lokalizacje są określone na ścieżce.

W moim systemie znana ścieżka do powłoki, która jest poleceniem Echo, można sprawdzić, aby uzyskać pełną listę ścieżki:

Ubuntu@srathore: $ echo $ ścieżka
/dom/cinauser/.Local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/
bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin

Jeśli chcemy wprowadzić nową ścieżkę do tej listy, możemy zaktualizować wartości do zmiennych środowiska ścieżki. Komenda „Eksportuj” można użyć do aktualizacji ścieżki o nowe wartości.

Korzystając z polecenia „Typ”, możemy uzyskać, że każde polecenie jest wbudowane lub zewnętrzne. Zrozumiemy użycie „typu”. Wykonanie typu za pomocą „CD” daje następujące dane wyjściowe:

Ubuntu@srathore: ~/$ type cd
CD to wbudowana skorupa
Ubuntu@srathore: ~/$

Dane wyjściowe poprzedniego polecenia jest samoroznaczne.

Teraz wypróbujmy polecenie „Typ” za pomocą polecenia LSPCI:

Ubuntu@srathore: ~/$ type LSPCI
LSPCI to/usr/bin/lspci
Ubuntu@srathore: ~/$

Jak pokazuje wyjście ścieżka wykonywalna, możemy stwierdzić, że jest to polecenie zewnętrzne.

Zmienne środowiska

Istnieje kilka zmiennych środowiskowych, które są zdefiniowane dla skorupy. Do tej pory rozumieliśmy zmienną ścieżki. Ścieżka to zmienna środowiskowa, która zawiera listę ścieżki do wyszukiwania poleceń zewnętrznych. Pełną listę zmiennych środowiskowych można sprawdzić za pomocą polecenia ENV. Polecenie ENV zawiera pełną listę zmiennych środowiskowych.

Kilka przykładów zmiennych środowiskowych Shell to:

  • Ścieżka: lista ścieżek dla poleceń zewnętrznych.
  • Shell: rodzaj powłoki, która jest obecnie aktywna.
  • OldPWD: Ostatni katalog roboczy.
  • PWD: odnosi się do obecnego katalogu roboczego.
  • Użytkownik: nazwa użytkownika aktywnej powłoki.
  • Strona główna: Directory domowe dla użytkownika.

Jest ich o wiele więcej. Jak omówiono wcześniej, pełną listę można sprawdzić za pomocą polecenia ENV.

Zmiana zmiennych środowiskowych

Potrzebne wartości można bezpośrednio przypisać do zmiennej, ponieważ Shell pozwala nam korzystać z operatora przypisania. Bieżąca wartość dowolnej zmiennej powłoki można zobaczyć za pomocą polecenia Echo. Na przykład, jeśli chcemy sprawdzić wartość ścieżki. Wykonanie następującego polecenia powinno być w stanie to zrobić:

Echo $ ścieżka

Korzystanie z operatora $ przed zmienną wewnątrz powłoki wydrukuje wartość zmiennej. To jest ofiara polecenia Echo. Podobnie echo można użyć do wydrukowania dowolnej zmiennej środowiska.

Jeśli chcemy zaktualizować zmienną ścieżki, chcemy zaktualizować niestandardową ścieżkę, takie jak /usr /cutom, którą chcemy dodać do ścieżki. Układamy nasze polecenia cięcia na tej ścieżce. Aby powłoka mogła wykonywać te polecenia, jego wartość musi zostać zaktualizowana na ścieżce. Bez aktualizacji ścieżki, jeśli wykonamy te niestandardowe programy, otrzymujemy błąd z informacją: „Brak takiego pliku lub katalogu”. Ten błąd wyraźnie mówi, że powłoka nie jest w stanie zlokalizować poleceń.

Jako eksperyment, Place nasze niestandardowe polecenie, Myls i Myps, w/Home/Srathore/Custom. Kiedy wykonujemy Myl lub Myps z /Home /Srathore, mamy następującą wiadomość od powłoki:

srathore@srathore: ~ $ myls
Polecenie „myls” nie znaleziono, czy miałeś na myśli:
polecenie „Tyls” z deb terminologii
polecenie „MMLS” z Deb Sleuthkit
Spróbuj: instaluj sudo apt
srathore@srathore: ~ $ myps
Polecenie „myps” nie znaleziono, czy miałeś na myśli:
polecenie „Mypy” od Deb Mypy
Spróbuj: instaluj sudo apt
srathore@srathore: ~ $

Poprzednie wiadomości pokazują, że te polecenia nie są znalezione, a system operacyjny podano sugestię do zainstalowania tych poleceń.

Teraz dodajmy nową niestandardową ścieżkę do istniejącej ścieżki w następujący sposób:

srathore@srathore: ~ $ echo $ ścieżka
/dom/cinauser/.Local/bin:/usr/local/sbin:/usr/local/bin:
/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
srathore@srathore: ~ $ eksport ścieżka = $ ścieżka:/home/srathore/custom
srathore@srathore: ~ $ echo $ ścieżka
/dom/cinauser/.Local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:
/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/home/srathore/custom
srathore@srathore: ~ $

Nasza nowo dodana ścieżka jest wyróżniona odważnym. Widzimy, że zmienna środowiska ścieżki jest aktualizowana o nową wartość.

Teraz spróbujmy ponownie wykonać polecenia obecne na naszej niestandardowej ścieżce. Wykonując „MYPS” i „MYLS”, mamy następujące dane wyjściowe:

srathore@srathore: ~ $ myps
PID Tty Time CMD
2112 pkt/0 00:00:00 Bash
2783 pkt/0 00:00:00 Myps
srathore@srathore: ~ $ myls
A.na zewnątrz instalowane spd_tool build_root_fs jądra
Coreboot jądro_ubuntu pCie_Transfer_App Stime.C
Bash_arm niestandardowe lmsensors RedfishTool Telnet_Scripts NVM_CLI
OpenSsh Snap
srathore@srathore: ~ $

Poprzednie dzienniki pokazują, że obie polecenia działały idealnie. Nie mieliśmy żadnego błędu, jak zaobserwowaliśmy przed zaktualizowaniem zmiennej ścieżki. Omówiliśmy najważniejszą zmienną powłoki, którą ogólnie modyfikujemy w codziennej pracy rozwojowej. Jeśli zainstalujemy jakikolwiek nowy pakiet, ta zmienna jest aktualizowana, aby nowe polecenia narzędzia można łatwo zlokalizować przez powłokę.

Wniosek

Omówiliśmy definicję powłoki. Widzieliśmy także filozofię za implementacją powłoki różnych typów poleceń dostarczonych przez Shell i zmienne środowiskowe powłoki. Przeszliśmy także kilka zmiennych środowiskowych. Co najważniejsze, omówiliśmy o zmiennej ścieżki. Widzieliśmy także sposób aktualizacji ścieżki i znaczenie zmiennej, którą wykazuje przykład. Nauczyliśmy się znaczenia Shell i jego ofert.