W codziennej pracy z FreeBSD bardzo często wykorzystywany jest interfejs linii poleceń, zwany powłoką (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żemy więc wydać polecenie: rm fo[Tab].[Tab].
Powłoka wyświetli: rm foo[BIIP].bar
Napis [BIIP] 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 dokumentację systemową. |
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 ukośnika (\). Wywołanie echo $TERM powoduje wypisanie ustawionego typu terminala, podczas gdy efektem polecenia echo \$TERM jest po prostu napis $TERM.
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.
Notatka: 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/shellsOraz uruchomić chsh.
| Poprzedni | Spis treści | Następny |
| Demony, sygnały i unicestwianie procesów | Początek rozdziału | Edytory tekstu |
This, and other documents, can be downloaded from ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/.
For questions about FreeBSD, read the
documentation
before contacting <questions@FreeBSD.org>.
For questions about this documentation, e-mail <doc@FreeBSD.org>.