Powłoki
W codziennej pracy z FreeBSD bardzo często wykorzystywany jest interfejs linii poleceń, zwany powłoką (ang. shell). Podstawowym zadaniem powłoki jest przyjmowanie poleceń i wykonywanie ich. Wiele powłok wyposażonych jest także w dodatkowe funkcje ułatwiające pracę, np. usprawnienia zarządzania plikami, dopasowywanie nazw plików, ułatwienia korzystania z linii poleceń, makropolecenia i zmienne środowiskowe. Do FreeBSD dołączono kilka powłok, np. sh (Bourne Shell) i tcsh (ulepszony C-shell). Wiele innych powłok, jak choćby zsh i bash, można znaleźć w kolekcji portów FreeBSD. Której z powłok najlepiej jest używać? To właściwie kwestia gustu. Dla programistów C najwygodniejsze mogą być powłoki o składni wzorowanej na języku C, np. tcsh. Użytkownikom Linuxa i tym, dla których Uniksowy interfejs linii poleceń jest nowością można polecić basha. Do wyboru jest wiele powłok, każda z nich ma pewne charakterystyczne tylko dla niej właściwości, które niekoniecznie będą działać w każdych warunkach. Często spotykanym udogodnieniem powłoki jest uzupełnianie nazw plików. Po wpisaniu kilku pierwszych liter polecenia lub nazwy pliku powłoka potrafi zwykle uzupełnić dalszy ciąg polecenia lub nazwy, dzieje się to po wciśnięciu klawisza Tab. Przyjmijmy przykładowo, że istnieją dwa pliki o nazwach foobar i foo.bar. Plik foo.bar ma zostać usunięty. Można więc wydać polecenie: rm fo[Tab].[Tab]. Powłoka wyświetli: rm foo[BEEP].bar. Napis [BEEP] oznacza sygnał dźwiękowy, będący informacją od powłoki, że uzupełnienie nazwy pliku nie było możliwe, ponieważ można dopasować więcej niż jedną nazwę: foobar i foo.bar zaczynają się od fo. Powłoka mogła jednakże uzupełnić początek, czyli foo. Teraz można wpisać kropkę, ".", i ponownie wcisnąć Tab, tym razem powłoka uzupełni nazwę do końca. Inną cechą powłoki są zmienne środowiskowe. Przechowywane są one w przestrzeni środowiska powłoki w postaci par "nazwa = wartość". Przestrzeń środowiska jest widoczna dla każdego programu uruchamianego przez powłokę, dlatego też przechowuje się tam wiele parametrów konfiguracyjnych dla programów. Oto najczęściej spotykane zmienne środowiskowe wraz z krótkim opisem:
Sposób odczytywania i ustawiania zmiennych systemowych zależy od rodzaju używanej powłoki. Na przykład w powłokach wzorowanych na C, jak tcsh i csh, do ustawiania i przeglądania zmiennych systemowych służy polecenie setenv, natomiast w powłokach Bourne'a, czyli sh i bash, do tych celów wykorzystywane są polecenia set i export. Przykładowo, aby zmienić zmienną środowiskową EDITOR na /usr/local/bin/emacs w powłoce csh lub tcsh, należy wydać polecenie:
A w powłokach Bourne'a:
W większości powłok można wyświetlić wartość zmiennej środowiskowej przez poprzedzenie jej nazwy znakiem $. Dla przykładu, echo $TERM pokaże wartość zmiennej TERM, ponieważ powłoka zastępuje wyrażenie $TERM wartością zmiennej i przekazuje ją do echo. Wiele znaków, zwanych meta-znakami, traktowanych jest przez powłoki w specjalny sposób. Najczęściej wykorzystywany jest znak *, oznaczający dowolny ciąg znaków w nazwie pliku, umożliwiający wykonywanie operacji na wielu plikach. Przykładowo, wywołanie echo * jest prawie identyczne z wywołaniem ls, ponieważ powłoka przekazuje do echo nazwy wszystkich plików pasujących do *. Jeśli potrzeba, by powłoka nie interpretowała znaku jako znak specjalny, należy go poprzedzić znakiem backslasha (\). Wywołanie echo $TERM powoduje wypisanie ustawionego typu terminala, podczas gdy fektem polecenia echo \$TERM jest po prostu napis $TERM.
Zmienna Opis
USER Nazwa aktualnie zalogowanego użytkownika.
PATH Lista katalogów zawierających pliki wykonywalne.
DISPLAY Nazwa ekranu X11, jeśli takowy jest dostępny.
SHELL Wykorzystywana powłoka.
TERM Nazwa terminala użytkownika, wykorzystywana do
określenia możliwości terminala.
TERMCAP Zapis z bazy termcap zawierający sekwencje kodów
odpowiadających różnym funkcjom terminala.
OSTYPE Typ systemu operacyjnego, np. FreeBSD.
MACHTYPE Architektura sprzętowa na jakiej działa system.
EDITOR Preferowany przez użytkownika edytor tekstu.
PAGER Preferowany przez użytkownika program wyświetlający
pliki tekstowe.
MANPATH Lista katalogów zawierających strony dokumentacji.
% setenv EDITOR /usr/local/bin/emacs
% export EDITOR="/usr/local/bin/emacs"
Zmiana powłoki
Najłatwiej jest zmienić powłokę przy użyciu polecenia chsh. Wywołanie tego polecenia uruchomi edytor wskazany przez zmienną EDITOR, lub edytor vi, jeśli nie jest ona ustawiona. Następnie należy zmienić nazwę powłoki w linijce ``Shell:''. Można też skorzystać z chsh z opcją -s, która automatycznie zmieni powłokę, bez uruchamiania edytora. Poniżej przedstawiono wywołanie zmieniające powłokę na bash: Wywołanie chsh bez parametrów i ręczna zmiana powłoki zadziała w ten sam sposób. Uwaga: Wybrana powłoka musi być na liście w pliku /etc/shells. Jeśli powłokę zainstalowano z kolekcji portów, to powinna zostać dopisana do tej listy automatycznie. Jeśli natomiast przeprowadzono ręczną instalację powłoki, trzeba to zrobić samemu. Dla przykładu, jeśli powłoka bash została zainstalowana i umieszczona w /usr/local/bin, trzeba będzie wydać polecenie: Oraz uruchomić chsh.
% chsh -s /usr/local/bin/bash
# echo "/usr/local/bin/bash" >> /etc/shells
Tłumaczenie: Michał Wojciechowski
mlodszy, czw., 24/04/2008 - 15:27
