Unix / Linux - Środowisko
W tym rozdziale omówimy szczegółowo środowisko Unix. Ważną koncepcją Uniksa jestenvironment, który jest definiowany przez zmienne środowiskowe. Niektóre są ustawiane przez system, inne przez ciebie, a jeszcze inne przez powłokę lub dowolny program, który ładuje inny program.
Zmienna to ciąg znaków, do którego przypisujemy wartość. Przypisywaną wartością może być liczba, tekst, nazwa pliku, urządzenie lub dowolny inny typ danych.
Na przykład, najpierw ustawiamy zmienną TEST, a następnie uzyskujemy dostęp do jej wartości za pomocą echo polecenie -
$TEST="Unix Programming"
$echo $TEST
Daje następujący wynik.
Unix Programming
Zauważ, że zmienne środowiskowe są ustawiane bez użycia $znak, ale uzyskując do nich dostęp używamy znaku $ jako przedrostka. Te zmienne zachowują swoje wartości, dopóki nie wyjdziemy z powłoki.
Kiedy logujesz się do systemu, powłoka przechodzi fazę o nazwie initializationskonfigurować środowisko. Zwykle jest to proces dwuetapowy, w którym powłoka odczytuje następujące pliki -
- /etc/profile
- profile
Proces przebiega następująco -
Powłoka sprawdza, czy plik /etc/profile istnieje.
Jeśli istnieje, odczytuje je powłoka. W przeciwnym razie ten plik jest pomijany. Nie jest wyświetlany żaden komunikat o błędzie.
Powłoka sprawdza, czy plik .profileistnieje w twoim katalogu domowym. Twój katalog domowy to katalog, w którym rozpoczynasz pracę po zalogowaniu.
Jeśli istnieje, odczytuje je powłoka; w przeciwnym razie powłoka go pominie. Nie jest wyświetlany żaden komunikat o błędzie.
Gdy tylko oba te pliki zostaną odczytane, powłoka wyświetli monit -
$
To jest monit, w którym można wprowadzać polecenia, aby je wykonać.
Note - Opisany tutaj proces inicjalizacji powłoki dotyczy wszystkich Bourne typu powłoki, ale niektóre dodatkowe pliki są używane przez bash i ksh.
Plik .profile
Plik /etc/profile jest obsługiwany przez administratora systemu twojego komputera z systemem Unix i zawiera informacje o inicjalizacji powłoki wymagane przez wszystkich użytkowników systemu.
Plik .profilejest pod twoją kontrolą. Do tego pliku możesz dodać tyle informacji o dostosowywaniu powłoki, ile chcesz. Minimalny zestaw informacji, które musisz skonfigurować, obejmuje:
- Typ używanego terminala.
- Lista katalogów, w których można znaleźć polecenia.
- Lista zmiennych wpływających na wygląd i działanie terminala.
Możesz sprawdzić swoje .profiledostępne w Twoim katalogu domowym. Otwórz go za pomocą edytora vi i sprawdź wszystkie zmienne ustawione dla twojego środowiska.
Ustawianie typu terminala
Zwykle typ używanego terminala jest automatycznie konfigurowany przez plik login lub gettyprogramy. Czasami proces automatycznej konfiguracji nieprawidłowo odgaduje terminal.
Jeśli terminal jest nieprawidłowo ustawiony, dane wyjściowe poleceń mogą wyglądać dziwnie lub możesz nie być w stanie poprawnie współdziałać z powłoką.
Aby upewnić się, że tak nie jest, większość użytkowników ustawia swój terminal na najniższy wspólny mianownik w następujący sposób -
$TERM=vt100
$
Ustawianie PATH
Po wpisaniu dowolnego polecenia w wierszu polecenia powłoka musi zlokalizować polecenie, zanim będzie można je wykonać.
Zmienna PATH określa lokalizacje, w których powłoka powinna szukać poleceń. Zwykle zmienna Path jest ustawiona w następujący sposób -
$PATH=/bin:/usr/bin
$
Tutaj każdy z pojedynczych wpisów oddzielony dwukropkiem (:)to katalogi. Jeśli zażądasz, aby powłoka wykonała polecenie i nie może znaleźć go w żadnym z katalogów podanych w zmiennej PATH, pojawi się komunikat podobny do poniższego -
$hello
hello: not found
$
Istnieją zmienne, takie jak PS1 i PS2, które są omówione w następnej sekcji.
Zmienne PS1 i PS2
Znaki wyświetlane przez powłokę jako wiersz poleceń są przechowywane w zmiennej PS1. Możesz zmienić tę zmienną, aby była dowolna. Jak tylko go zmienisz, będzie używany przez powłokę od tego momentu.
Na przykład, jeśli wydałeś polecenie -
$PS1='=>'
=>
=>
=>
Twój znak zachęty zmieni się na =>. Aby ustawić wartośćPS1 aby pokazał katalog roboczy, wydaj polecenie -
=>PS1="[\u@\h \w]\$"
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
[root@ip-72-167-112-17 /var/www/tutorialspoint/unix]$
Wynikiem tego polecenia jest wyświetlenie nazwy użytkownika, nazwy komputera (nazwy hosta) i katalogu roboczego w monicie.
Jest ich sporo escape sequencesktóre mogą być użyte jako argumenty wartości dla PS1; spróbuj ograniczyć się do najbardziej krytycznych, aby monit nie przytłoczył Cię informacjami.
Sr.No. | Sekwencja ucieczki i opis |
---|---|
1 | \t Aktualny czas wyrażony jako HH: MM: SS |
2 | \d Bieżąca data wyrażona jako dzień tygodnia i miesiąc |
3 | \n Nowa linia |
4 | \s Bieżące środowisko powłoki |
5 | \W Katalog roboczy |
6 | \w Pełna ścieżka do katalogu roboczego |
7 | \u Nazwa użytkownika bieżącego użytkownika |
8 | \h Nazwa hosta aktualnego komputera |
9 | \# Numer polecenia bieżącego polecenia. Zwiększa się po wprowadzeniu nowego polecenia |
10 | \$ Jeśli efektywny UID to 0 (to znaczy, jeśli jesteś zalogowany jako root), zakończ znak zachęty znakiem #; w przeciwnym razie użyj znaku $ |
Możesz dokonać zmiany samodzielnie za każdym razem, gdy się logujesz, lub możesz automatycznie wprowadzić zmianę na PS1, dodając ją do swojego .profile plik.
Kiedy wydasz polecenie, które jest niekompletne, powłoka wyświetli dodatkowy monit i zaczeka, aż zakończysz polecenie i naciśnij Enter jeszcze raz.
Domyślny dodatkowy monit to > (znak większości), ale można to zmienić, ponownie definiując PS2 zmienna powłoki -
Poniżej znajduje się przykład, w którym używany jest domyślny dodatkowy monit -
$ echo "this is a
> test"
this is a
test
$
Poniższy przykład ponownie definiuje PS2 z dostosowanym monitem -
$ PS2="secondary prompt->"
$ echo "this is a
secondary prompt->test"
this is a
test
$
Zmienne środowiska
Poniżej znajduje się częściowa lista ważnych zmiennych środowiskowych. Te zmienne są ustawiane i dostępne, jak wspomniano poniżej -
Sr.No. | Zmienna i opis |
---|---|
1 | DISPLAY Zawiera identyfikator wyświetlacza, który X11 programy powinny domyślnie używać. |
2 | HOME Wskazuje katalog osobisty bieżącego użytkownika: domyślny argument dla dysku cd built-in Komenda. |
3 | IFS Wskazuje Internal Field Separator używany przez parser do dzielenia słów po interpretacji. |
4 | LANG LANG rozwija się do domyślnych ustawień regionalnych systemu; LC_ALL może służyć do nadpisania tego. Na przykład, jeśli jego wartość topt_BR, język jest ustawiony na (brazylijski) portugalski, a ustawienia regionalne to Brazylia. |
5 | LD_LIBRARY_PATH System uniksowy z dynamicznym konsolidatorem zawiera zestawioną listę katalogów, które dynamiczny konsolidator powinien szukać w celu znalezienia współdzielonych obiektów podczas budowania obrazu procesu po wykonaniu polecenia, przed przeszukaniem jakichkolwiek innych katalogów. |
6 | PATH Wskazuje ścieżkę wyszukiwania poleceń. Jest to rozdzielona dwukropkami lista katalogów, w których powłoka szuka poleceń. |
7 | PWD Wskazuje bieżący katalog roboczy ustawiony przez polecenie cd. |
8 | RANDOM Generuje losową liczbę całkowitą z przedziału od 0 do 32767 przy każdym odwołaniu. |
9 | SHLVL Zwiększa o jeden za każdym razem, gdy uruchamiana jest instancja bash. Ta zmienna jest przydatna do określenia, czy wbudowane polecenie wyjścia kończy bieżącą sesję. |
10 | TERM Odnosi się do typu wyświetlania. |
11 | TZ Odnosi się do strefy czasowej. Może przyjmować wartości takie jak GMT, AST itp. |
12 | UID Interpretowany jako numeryczny identyfikator użytkownika bieżącego użytkownika, inicjowany podczas uruchamiania powłoki. |
Poniżej znajduje się przykładowy przykład pokazujący kilka zmiennych środowiskowych -
$ echo $HOME
/root
]$ echo $DISPLAY
$ echo $TERM
xterm
$ echo $PATH
/usr/local/bin:/bin:/usr/bin:/home/amrood/bin:/usr/local/bin
$