{ }
menu zespół linki Logowanie
Stabilny hosting
BSDGuru zawdzięcza
firmie Datanet.pl
Hosting BSDGuru.org - DataNet.pl

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:

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.                

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:

     % setenv EDITOR /usr/local/bin/emacs

A w powłokach Bourne'a:

     % export EDITOR="/usr/local/bin/emacs"

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.

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:

     % chsh -s /usr/local/bin/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:

     # echo "/usr/local/bin/bash" >> /etc/shells

Oraz uruchomić chsh.

Tłumaczenie: Michał Wojciechowski

mlodszy, czw., 24/04/2008 - 15:27