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.
We FreeBSD dostępnych jest kilka powłok, np. Bourne Shell sh
i ulepszony C-shell tcsh
. Wiele innych powłok, jak choćby
zsh
czy 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 Linuksa i tym,
dla których interfejs linii poleceń systemów 8unix; jest nowością, można
polecić bash
. 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
.
Chcemy usunąć plik foo.bar
. 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ę. Zarówno foobar
jak 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 oddzielona przecinkami. |
DISPLAY | Nazwa ekranu X11, jeśli takowy jest dostępny. |
SHELL | Wykorzystywana powłoka. |
TERM | Nazwa terminala użytkownika, wykorzystywana do określenia właściwoś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ą oddzielona przecinkami. |
Sposób odczytywania i ustawiania zmiennych środowiskowych
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 środowiskowych służy polecenie
setenv
, natomiast w powłokach Bourne'a, czyli
sh
i bash
, do tych celów
wykorzystywane jest polecenie 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, polecenie 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 wykorzystywanym jest
*
, 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 *
.
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
zdefiniowana. Następnie należy zmienić nazwę powłoki w wierszu
„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
Wybrana powłoka musi być wymieniona w pliku
/etc/shells
. Jeśli powłokę zainstalowano z
kolekcji portów powinna zostać dopisana
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
.
All FreeBSD documents are available for download at http://ftp.FreeBSD.org/pub/FreeBSD/doc/
Questions that are not answered by the
documentation may be
sent to <freebsd-questions@FreeBSD.org>.
Send questions about this document to <freebsd-doc@FreeBSD.org>.