bash

Autres langues

Langue: pl

Autres versions - même langue

Version: 13 listopada 2001 (openSuse - 09/10/07)

Section: 1 (Commandes utilisateur)

Sommaire

NAZWA

bash - GNU Bourne-Again SHell

SK£ADNIA

bash [opcje] [plik] Bash is Copyright (C) 1989-2001 by the Free Software Foundation, Inc.

OPIS

Bash jest zgodnym z sh interpreterem jêzyka poleceñ, wykonuj±cym polecenia ze standardowego wej¶cia b±d¼ z pliku. W³±czono doñ równie¿ przydatne cechy zaczerpniête z pow³oki Korna i pow³oki C (ksh i csh).

Bash w zamierzeniu jest implementacj± zgodn± z POSIX-ow± specyfikacj± pow³ok i narzêdzi -- IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).

OPCJE

Oprócz jednoznakowych opcji pow³oki udokumentowanych w opisie wbudowanego polecenia set, bash przy wywo³aniu interpretuje poni¿sze opcje:
-c ³añcuch
Je¶li wystêpuje opcja -c, to polecenia odczytywane s± z ³añcucha. Je¿eli po ³añcuchu istniej± argumenty, to s± one przypisywane do argumentów pozycyjnych, poczynaj±c od $0.
-r
Je¿eli wystêpuje opcja -r, to pow³oka staje siê pow³ok± okrojon± (restricted). Zobacz poni¿ej POW£OKAOKROJONA.
-i
Je¿eli wystêpuje opcja -i, to pow³oka jest interaktywna.
-s
Je¶li wystêpuje opcja -s lub po przetworzeniu opcji nie pozostaj± ¿adne argumenty, to polecenia odczytywane s± ze standardowego wej¶cia. Opcja ta umo¿liwia na ustawienie parametrów pozycyjnych podczas wywo³ania pow³oki interaktywnej.
-D
Na standardowym wyj¶ciu wypisywana jest lista wszystkich podwójnie cytowanych ³añcuchów poprzedzonych znakiem $. S± to ³añcuchy bêd±ce przedmiotem t³umaczenia jêzyka, gdy bie¿±cym ustawieniem regionalnym (locale) nie jest C ani POSIX. Implikuje to opcjê -n; nie zostan± wykonane ¿adne polecenia.
[-+]O [opcja_shopt]
opcja_shopt jest jedn± z ocpji pow³oki akceptowanych przez polecenie wbudowane shopt (zobacz WBUDOWANE POLECENIA POW£OKI poni¿ej). Je¶li wystêpuje opcja_shopt, to -O nadaje warto¶æ tej opcji, za¶ +O uniewa¿nia j±. Je¿eli nie podano opcji_shopt, to na standardowym wyj¶ciu wypisywane s± nazwy i warto¶ci opcji pow³oki akceptowanych przez shopt. Je¶li opcj± wywo³ania jest +O, tworzone wyj¶cie jest formatowane w taki sposób, by mo¿na by³o wykorzystaæ je jako wej¶cie.
--
Zapis -- sygnalizuje koniec opcji i wy³±cza dalsze ich przetwarzanie. Argumenty wystêpuj±ce po -- traktowane s± jako nazwy plików i argumenty. Argument - jest równowa¿nikiem --.

Bash interpretuje tak¿e wiele opcji wieloznakowych. Je¶li maj± zostaæ rozpoznane, opcje te musz± pojawiæ siê w wierszu poleceñ przed opcjami jednoznakowymi,

--dump-po-strings
Równowa¿ne -D, ale wyj¶cie jest w formacie pliku GNU gettext po (portable object).
--dump-strings
Równowa¿nik -D.
--help
Wy¶wietla na standardowym wyj¶ciu komunikat o u¿ytkowaniu i pomy¶lnie koñczy pracê.
--init-file plik
--rcfile plik
Wykonuje polecenia z podanego pliku zamiast ze standardowego osobistego pliku inicjuj±cego ~/.bashrc, je¶li pow³oka jest interaktywna. Zobacz WYWO£ANIE poni¿ej.
--login
Sprawia, ¿e bash dzia³a tak, jakby zosta³ wywo³any jako pow³oka zg³oszeniowa (login shell). Zobacz WYWO£ANIE poni¿ej.
--noediting
Nie u¿ywa biblioteki GNU readline do odczytu wierszy poleceñ w trybie interaktywnym.
--noprofile
Nie odczytuje ani ogólnosystemowego pliku startowego /etc/profile ani ¿adnego z osobistych plików inicjuj±cych ~/.bash_profile, ~/.bash_login czy ~/.profile. Domy¶lnie, bash czyta te pliki gdy jest wywo³any jako pow³oka zg³oszeniowa (zobacz WYWO£ANIE poni¿ej).
--norc
Nie odczytuje i nie wykonuje osobistego pliku inicjuj±cego ~/.bashrc je¶li pow³oka jest interaktywna. Opcja ta jest domy¶lnie w³±czona, je¿eli pow³okê wywo³ano jako sh.
--posix
Zmienia zachowanie bash tam, gdzie operacja domy¶lna ró¿ni siê od standardu POSIX 1003.2 tak, by dostosowaæ siê do niego (tryb posix).
--restricted
Pow³oka staje siê okrojona (zobacz POW£OKA OKROJONA poni¿ej).
--verbose
Równowa¿nik opcji -v.
--version
Pokazuje na standardowym wyj¶ciu informacjê o wersji tego egzemplarza bash i pomy¶lnie koñczy pracê.

ARGUMENTY

Je¶li po przetworzeniu opcji pozostaj± jakie¶ argumenty, a nie podano ani opcji -c ani -s, to zak³ada siê, ¿e pierwszy argument jest nazw± pliku zawieraj±cego polecenia pow³oki. Je¿eli bash zosta³ wywo³any w taki sposób, to $0 przypisywana jest nazwa pliku z poleceniami, a parametrom pozycyjnym pozosta³e argumenty. Bash odczytuje i wykonuje polecenia z tego pliku, a nastêpnie koñczy pracê. Kod zakoñczenia basha jest wówczas kodem zakoñczenia ostatniego wykonanego polecenia skryptu. Je¶li nie wykonano ¿adnego polecenia, to kod zakoñczenia wynosi 0.

WYWO£ANIE

Pow³oka zg³oszeniowa (login shell) to taka, w której pierwszym znakiem zerowego argumentu jest -, lub taka, któr± uruchomiono z opcj± --login.

Pow³oka interaktywna to taka, któr± uruchomiono bez argumentów innych ni¿ opcje i bez opcji -c; zarówno jej standardowe wej¶cie jak i wyj¶cie powi±zane jest z terminalami (tak jak okre¶li³a to funkcja isatty(3)), albo taka, któr± uruchomiono z opcj± -i. Je¶li bash jest interaktywny, to ustawiane jest PS1 za¶ $- zawiera i; pozwala to skryptowi pow³oki lub plikowi startowemu na sprawdzanie tego stanu.

Poni¿sze akapity opisuj±, jak bash wykonuje swoje pliki startowe. Je¶li który¶ z tych plików istnieje, ale nie mo¿e byæ odczytany, to bash zg³asza b³±d. Tyldy (~) w nazwach plików interpretowane s± wed³ug regu³ opisanych poni¿ej w czê¶ci Interpretacja tyld sekcji INTERPRETACJA.

Gdy bash wywo³ywany jest jako pow³oka zg³oszeniowa lub jako pow³oka nie-interaktywna z opcj± --login, w pierwszej kolejno¶ci czyta i wykonuje polecenia z pliku /etc/profile, je¶li takowy istnieje. Po odczytaniu tego pliku, szuka ~/.bash_profile, ~/.bash_login i ~/.profile, w tej kolejno¶ci, po czym odczytuje i wykonuje polecenia z pierwszego istniej±cego i daj±cego siê odczytaæ. Mo¿na pos³u¿yæ siê opcj± --noprofile podczas uruchamiania pow³oki, by zakazaæ takiego zachowania.

Podczas koñczenia pracy pow³oki zg³oszeniowej, bash czyta i wykonuje polecenia z pliku ~/.bash_logout, je¶li taki istnieje.

Je¿eli uruchamiana jest pow³oka interaktywna nie bêd±ca pow³ok± zg³oszeniow±, bash czyta i wykonuje polecenia z ~/.bashrc, je¶li taki plik istnieje. Mo¿e to byæ zakazane za pomoc± opcji --norc. Opcja --rcfile plik wymusi odczyt i wykonanie poleceñ z pliku zamiast z ~/.bashrc.

Je¶li bash startuje w trybie nie-interaktywnym, na przyk³ad w celu uruchomienia skryptu pow³oki, to szuka w ¶rodowisku zmiennej BASH_ENV, interpretuje jej warto¶æ, je¶li j± znalaz³, i u¿ywa otrzymanej warto¶ci jako nazwy pliku do odczytania i wykonania. Bash zachowuje siê tak, jakby by³y wykonane nastêpuj±ce polecenia:

if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi

ale do szukania nazwy pliku nie jest u¿ywana warto¶æ zmiennej PATH.

Je¿eli bash wywo³ano pod nazw± sh, to próbuje on na¶ladowaæ zachowanie startowe historycznych wersji sh tak ¶ci¶le jak to jest mo¿liwe, przy równoczesnym spe³nianiu standardu POSIX. Wywo³any jako pow³oka interaktywna lub pow³oka nie-interaktywna z opcj± --login, usi³uje na pocz±tku odczytaæ i wykonaæ polecenia z /etc/profile i ~/.profile, w tej kolejno¶ci. W celu zakazania tego zachowania mo¿na u¿yæ opcji --noprofile. Wywo³any jako pow³oka interaktywna pod nazw± sh, bash poszukuje zmiennej ENV, interpretuje jej warto¶æ, je¶li jest zdefiniowana, i pos³uguje siê otrzyman± warto¶ci± jako nazw± pliku, który ma byæ odczytany i wykonany. Poniewa¿ pow³oka wywo³ana jako sh nie usi³uje czytaæ ani wykonywaæ poleceñ z jakichkolwiek innych plików startowych, opcja --rcfile nie ma ¿adnych skutków. Pow³oka nie-interaktywna wywo³ana pod nazw± sh nie próbuje czytaæ ¿adnych plików startowych. Wywo³any jako sh, bash wchodzi w tryb posix po odczycie plików startowych.

Gdy bash uruchomiony jest w trybie posix, jak z opcj± --posix wiersza poleceñ, kieruje siê standardem POSIX dla plików startowych. W trybie tym, pow³oka interaktywna interpretuje zmienn± ENV a polecenia odczytywane i wykonywane s± z pliku, którego nazw± jest zinterpretowana warto¶æ. Nie s± czytane inne pliki startowe.

Bash usi³uje rozstrzygn±æ, czy jest uruchomiony przez demona pow³oki zdalnej, zwykle rshd. Je¿eli stwierdzi, ¿e zosta³ uruchomiony przez rshd, to odczytuje i wykonuje polecenia z ~/.bashrc, je¶li plik ten istnieje i daje siê czytaæ. Nie bêdzie tego robi³ wywo³any jako sh. Mo¿na pos³u¿yæ siê opcj± --norc, by zakazaæ tego zachowania oraz opcj± --rcfile, by wymusiæ czytanie innego pliku, ale rshd zazwyczaj nie wywo³uje pow³oki z tymi opcjami ani nie pozwala na ich podanie.

Je¶li pow³oka zosta³a uruchomiona z efektywnym id u¿ytkownika (grupy) ró¿nym od id rzeczywistego, a nie podano opcji -p, to nie s± odczytywane ¿adne pliki startowe, funkcje pow³oki nie s± dziedziczone ze ¶rodowiska, zmienna SHELLOPTSP, je¶li jest taka w ¶rodowisku, jest ignorowana a efektywny identyfikator u¿ytkownika jest ustawiany na jego identyfikator rzeczywisty. Je¶li przy wywo³aniu podano opcjê -p, to zachowanie startowe jest takie samo, ale nie jest resetowany efektywny id u¿ytkownika.

DEFINICJE

W pozosta³ej czê¶ci tego dokumentu u¿ywane s± poni¿sze definicje.

odstêp
Spacja lub znak tabulacji.
s³owo
Sekwencja znaków uwa¿ana przez pow³okê za pojedyncz± jednostkê. Znana te¿ jako token.
nazwa
Jest to s³owo sk³adaj±ce siê wy³±cznie ze znaków alfanumerycznych i znaków podkre¶lenia, i rozpoczynaj±ce siê znakiem alfabetycznym lub podkre¶leniem. Wspominane równie¿ jako identyfikator.
metaznak
Znak, które, gdy nie jest cytowany, oddziela s³owa. Jeden z poni¿szych:

| & ; ( ) < > spacja tab
operator steruj±cy
token pe³ni±cy funkcjê steruj±c±. Jest to jeden z poni¿szych symboli:

|| & && ; ;; ( ) | <nowalinia>

S£OWA ZASTRZE¯ONE

S³owa zastrze¿one (reserved words) to takie, które maj± dla pow³oki specjalne znaczenie. Nastêpuj±ce s³owa s± rozpoznawane jako zastrze¿one, gdy nie s± cytowane i wystêpuj± albo jako pierwsze s³owo polecenia prostego (zobacz GRAMATYKA POW£OKI poni¿ej) albo trzecie s³owo poleceñ case lub for;

! case do done elif else esac fi for function if in select then until while { } time [[ ]]

GRAMATYKA POW£OKI

Polecenia proste

Polecenie proste jest sekwencj± opcjonalnych przypisañ zmiennych, po której nastêpuj± rozdzielane przez odstêp s³owa i przekierowania, a zakoñczon± operatorem steruj±cym. Pierwsze s³owo okre¶la polecenie, jakie ma zostaæ wykonane i jest przekazywane jako argument numer zero. Pozosta³e s³owa s± przekazywane jako argumenty wywo³ywanego polecenia.

Warto¶ci± zwracan± polecenia prostego jest jego kod zakoñczenia lub 128+n je¿eli polecenie przerwane jest sygna³em n.

Potoki

Potok jest sekwencj± jednego lub wiêcej poleceñ rozdzielonych znakiem |. Formatem potoku jest:


[time [-p]] [ ! ] polecenie [ | polecenie2 ... ]

Standardowe wyj¶cie z polecenia po³±czone jest za po¶rednictem potoku ze standardowym wej¶ciem polecenia2. Po³±czenie to wykonywane jest przed mo¿liwymi przekierowaniami podanymi dla polecenia (zobacz poni¿ej PRZEKIEROWANIE.

Je¿eli potok poprzedza zastrze¿one s³owo !, to kod zakoñczenia takiego potoku jest negacj± (NOT) kodu zakoñczenia ostatniego polecenia. W przeciwnym wypadku, kodem potoku jest kod zakoñczenia ostatniego polecenia. Pow³oka oczekuje na zakoñczenie (terminate) wszystkich poleceñ w potoku przed zwróceniem warto¶ci.

Je¿eli potok jest poprzedzony s³owem zastrze¿onym time, to po jego zakoñczeniu podawany jest czas wykonywania, jak równie¿ czas u¿ytkownika i czas systemu zu¿yty na wykonanie. Opcja -p zmienia format tworzonych wyników na okre¶lony przez POSIX. Do sformatowania ³añcucha okre¶laj±cego, jak powinna byæ wy¶wietlana informacja o czasach, mo¿na ustawiæ zmienn± TIMEFORMAT; zobacz opis TIMEFORMAT w Zmienne pow³oki poni¿ej.

Ka¿de polecenie w potoku uruchamiane jest jako odrêbny proces (tj. w podpow³oce).

Listy

Lista jest potokiem lub sekwencj± kilku potoków rozdzielonych jednym z operatorów ;, &, && lub ||, i opcjonalnie zakoñczon± jednym ze znaków ;, & lub <nowalinia>.

Spo¶ród tych operatorów listowych, && i || maj± ten sam priorytet, nastêpuj±ce po nich ; i &, równie¿ maj± równy miêdzy sob± priorytet.

Je¶li polecenie zakoñczone jest operatorem steruj±cym &, to pow³oka wykonuje je w tle (background) w podpow³oce. Pow³oka macierzysta nie oczekuje na zakoñczenie polecenia, a zwracany kod wynosi 0. Polecenia oddzielane znakiem ¶rednika ; wykonywane s± sekwencyjnie; pow³oka oczekuje na zakoñczenie pracy przez ka¿de z nich po kolei. Zwracany kod jest kodem zakoñczenia ostatniego wykonanego polecenia.

Operatory steruj±ce && i || oznaczaj± odpowiednio listy AND i OR. Lista AND ma postaæ


polecenie2 wykonywane jest wtedy, i tylko wtedy, gdy polecenie1 zwraca zerowy kod zakoñczenia.

Lista OR ma postaæ


polecenie1 || polecenie2

polecenie2 jest wykonywane wtedy, i tylko wtedy, gdy polecenie1 zwraca niezerowy kod zakoñczenia. Kod zwracany przez listy AND i OR jest kodem zakoñczenia ostatniego wykonanego polecenia listy.

Polecenia z³o¿one

Polecenie z³o¿one (compound command) jest jednym z poni¿szych:

(lista)
lista wykonywana jest w podpow³oce. Przypisania zmiennych i polecenia wbudowane wp³ywaj±ce na ¶rodowisko pow³oki nie zachowuj± swoich skutków po zakoñczeniu polecenia. Zwracanym kodem jest kod zakoñczenia listy.
{ lista; }
lista jest po prostu wykonywana w bie¿±cym ¶rodowisku pow³oki. lista musi byæ zakoñczona znakiem nowej linii lub ¶rednika. Nazywane jest to poleceniem grupowania. Zwracanym kodem jest kod zakoñczenia listy. Nale¿y pamiêtaæ, ¿e w przeciwieñstwie do metaznaków ( i ), { i }s³owami zastrze¿onymi i aby zosta³y rozpoznane musz± siê pojawiæ tam, gdzie dozwolone jest u¿ycie s³ów zastrze¿onych. Poniewa¿ nie powoduj± podzia³u na s³owa, musz± byæ oddzielone od listy za pomoc± bia³ego znaku.
((wyra¿enie))
wyra¿enie interpretowane jest zgodnie z zasadami opisanymi poni¿ej w sekcji OBLICZANIEWYRA¯EÑARYTMETYCZNYCH. Je¶li warto¶æ wyra¿enia jest niezerowa, to kodem zwracanym jest 0; w przeciwnym razie kodem zwracaym jest 1. Jest to ¶ci¶le równowa¿ne konstrukcji let "wyra¿enie".
[[ wyra¿enie ]]
Zwraca kod 0 lub 1 w zale¿no¶ci od interpretacji wyra¿enia warunkowego wyra¿enie. Wyra¿enia z³o¿one s± ze sk³adowych (primaries) opisanych poni¿ej w opcji WYRA¯ENIAWARUNKOWE. Na s³owach pomiêdzy [[ a ]] nie s± wykonywane rozwiniêcia nazw plików ani podzia³ na s³owa; s± natomiast wykonywane: interpretacja tyld, parametrów i zmiennych, interpretacja wyra¿eñ arytmetycznych, podstawianie wyników poleceñ, podstawianie wyników procesów i usuniêcia cytowañ.

Gdy u¿ywane s± operatory == i !=, ³añcuch na prawo od operatora traktowany jest jak wzorzec i dopasowywany zgodnie z zasadami opisanymi poni¿ej w sekcji Dopasowywanie wzorców. Warto¶ci± zwracan± jest 0 je¶li ³añcuch odpowiednio pasuje lub nie pasuje do wzorca, za¶ 1 w przeciwnym przypadku. Mo¿na zacytowaæ dowoln± czê¶æ wzorca w celu wymuszenia dopasowywania jej jako ³añcucha.

Wyra¿enia mo¿na ³±czyæ przy pomocy nastêpuj±cych operatorów, wymienionych w kolejno¶ci malej±cego priorytetu:

( wyra¿enie )
Zwraca warto¶æ wyra¿enia. Mo¿e s³u¿yæ do uniewa¿nienia zwyk³ej kolejno¶ci operatorów.
! wyra¿enie
Prawda je¿eli wyra¿enie jest fa³szywe.
wyra¿enie1 && wyra¿enie2
Prawda je¶li zarówno wyra¿enie1 jak i wyra¿enie2 s± prawdziwe.
wyra¿enie1 || wyra¿enie2 Prawda je¶li choæ jedno spo¶ród wyra¿enie1 lub wyra¿enie2 jest prawdziwe.

Operatory && i || nie wykonuj± wyra¿enia2 je¿eli warto¶æ wyra¿enia1 wystarcza do okre¶lenia warto¶ci, jaka zostanie zwrócona przez ca³e wyra¿enie warunkowe.

for nazwa [ in s³owo ] ; do lista ; done
Interpretowane s± s³owa nastêpuj±ce po in, tworz±c listê elementów. Zmiennej nazwa nadawana jest kolejno warto¶æ ka¿dego elementu tej listy i ka¿dorazowo wykonywana jest lista poleceñ. Je¿eli pominiêto in s³owo, to polecenie for wykonuje listê po jednym razie dla ka¿dego ustawionego parametru pozycyjnego (zobacz PARAMETRY poni¿ej). Zwracanym kodem jest kod zakoñczenia ostatniego wykonanego polecenia. Je¶li interpretacja elementów nastêpuj±cych po in daje w wyniku pust± listê, to nie s± wykonywane ¿adne polecenia i zwracany jest kod 0.
for (( wyr1 ; wyr2 ; wyr3 )) ; do lista ; done
Na pocz±tku obliczane jest wyra¿enie arytmetyczne wyr1, zgodnie z zasadami opisanymi poni¿ej w OBLICZANIEWYRA¯EÑARYTMETYCZNYCH. Nastêpnie wielokrotnie obliczane jest wyr2, a¿ do osi±gniêcia przez nie warto¶ci zero. Ka¿dorazowo gdy obliczone wyr2 jest niezerowe, wykonywana jest lista i obliczane jest wyra¿enie arytmetyczne wyr3. Je¶li pominiêto które¶ z wyra¿eñ, to zachowuje siê ono tak, jakby przyjmowa³o warto¶æ 1. Zwracanym kodem jest kod zakoñczenia ostatniego wykonanego polecenia listy, lub fa³sz je¶li które¶ z wyra¿eñ jest niepoprawne.
select nazwa [ in s³owo ] ; do lista ; done
Interpretowana jest lista s³ów nastêpuj±cych po in, tworz±c listê elementów. Zestaw zinterpretowanych s³ów wypisywany jest na standardowym wyj¶ciu, ka¿de poprzedzone liczb± kolejn±. Je¶li pominiêto in s³owo, to wypisywane s± parametry pozycyjne (zobacz PARAMETRY poni¿ej). Nastêpnie wy¶wietlana jest zachêta PS3 i czytany jest wiersz ze standardowego wej¶cia. Je¿eli wiersz sk³ada siê z liczby odpowiadaj±cej jednemu z wy¶wietlonych s³ów, to zmiennej nazwa przypisywana jest warto¶æ tego s³owa. Je¶li wiersz jest pusty, s³owa i zachêta wy¶wietlane s± ponownie. Je¿eli odczytano EOF, to polecenie koñczy pracê. Ka¿da inna warto¶æ powoduje, ¿e nazwie zostanie przypisany ³añcuch pusty. Odczytany wiersz zachowywany jest w zmiennej REPLY. lista wykonywana jest po ka¿dym wyborze, dopóki nie zostanie wykonane polecenie break. Kodem zakoñczenia select jest kod zakoñczenia ostatniego wykonanego polecenia listy lub zero je¶li nie wykonano ¿adnych poleceñ.
case s³owo in [ [(] wzorzec [ | wzorzec ]
Polecenie case najpierw interpretuje s³owo i próbuje dopasowaæ uzyskany wynik ka¿dego z wzorców po kolei, pos³uguj±c siê tymi samymi regu³ami dopasowywania, co dla rozwijania nazw ¶cie¿kowych (zobacz Rozwijanie nazw ¶cie¿kowych poni¿ej). Gdy znalezione zostanie dopasowanie, wykonywana jest odpowiadaj±ca mu lista. Po pierwszym dopasowaniu nie s± dokonywane próby dopasowania pozosta³ych wzorców. Je¶li ¿aden ze wzorców nie pasuje do kodem zakoñczenia jest zero. W przeciwnym razie jest równy kodowi zakoñczenia ostatniego z wykonanych poleceñ listy.
if lista; then lista; [ elif lista; then lista; ] ... [ else lista; ] fi
Wykonywana jest lista wystêpuj±ca po if. Je¿eli jej kod zakoñczenia jest zerowy, to wykonywana jest lista klauzuli then. W przeciwnym wypadku, wykonywana jest lista ka¿dego elif po kolei; je¶li kod zakoñczenia której¶ wynosi 0, to wykonywana jest lista then i polecenie jest koñczone. Je¿eli nie wyst±pi³ ¿aden z powy¿szych przypadków, to wykonywana jest lista wystêpuj±ca po klauzuli else, je¶li takowa istnieje. Kodem zakoñczenia jest kod ostatniego wykonanego polecenia listy lub zero je¶li ¿aden z warunków nie okaza³ siê prawdziwy.
while lista; do lista; done
until lista; do lista; done
Polecenie while powtarza wykonywanie listy podanej po do tak d³ugo, jak d³ugo ostatnie polecenie listy while zwraca zerowy kod zakoñczenia. Polecenie until dzia³a identycznie jak while, poza tym, ¿e warunek jest zanegowany: do lista wykonywane jest tak d³ugo, jak d³ugo ostatnie polecenie listy until zwraca niezerowy kod zakoñczenia. Kod zakoñczenia poleceñ while i until jest równy kodowi zakoñczenia ostatniego z wykonanych poleceñ listy do lub zeru je¶li ¿adne nie zosta³o wykonane.
[ function ] nazwa () { lista; }
Definuje to funkcjê nazwan± nazwa. Cia³em funkcji jest lista poleceñ zawarta pomiêdzy { i }. Lista ta jest wykonywana w za ka¿dym razem gdy nazwa wystêpuje jako polecenie proste. Kodem zakoñczenia funkcji jest kod zakoñczenia ostatniego z wykonanych poleceñ jej cia³a. (Zobacz FUNKCJE poni¿ej.)

KOMENTARZE

W pow³oce nie-interaktywnej lub w pow³oce interaktywnej, w której w³±czono opcjê interactive_comments do opcji wbudowanych shopt(zobacz WBUDOWANE POLECENIA POW£OKI poni¿ej) s³owo rozpoczynaj±ce siê od znaku # powoduje, ¿e s³owo to i wszystkie pozosta³e znaki w tym wierszu bêd± ignorowane. Pow³oka interaktywna bez w³±czonej opcji interactive_comments nie pozwala na komentarze. Opcja interactive_comments jest domy¶lnie w³±czona w pow³okach interaktywnych.

CYTOWANIE

Cytowanie s³u¿y do usuwania specjalnego znaczenia dla pow³oki pewnych znaków lub s³ów. Cytowanie mo¿na stosowaæ do wy³±czania specjalnego traktowania znaków specjalnych, zapobiegania rozpoznawaniu s³ów zastrze¿onych jako takich oraz do zapobiegania podstawianiu parametrów.

Ka¿dy z metaznaków podanych powy¿ej w DEFINICJACH posiada dla pow³oki specjalne znaczenie i musi byæ cytowany, je¶li ma oznaczaæ samego siebie.

Gdy u¿ywane s± funkcje interpretacji historii poleceñ, znak interpretacji historii, zwykle !, musi byæ cytowany, je¶li chce siê unikn±æ interpretacji historii.

Istniej± trzy mechanizmy cytowania: znak specjalny(escapecharacter), apostrofy (pojedyncze cudzys³owy) i cudzys³owy zwyk³e (podwójne).

Niecytowany odwrotny uko¶nik (\) jest znakiem specjalnym. Chroni on przed interpretacj± dos³own± warto¶æ nastêpuj±cego po nim znaku, z wyj±tkiem <nowejlinii>. Je¶li pojawi siê para \<nowalinia> a sam odwrotny uko¶nik nie jest cytowany, to traktowana jest ona jak kontynuacja wiersza (to znaczy, usuwana jest ze strumienia wej¶ciowego i w efekcie ignorowana).

Ujêcie znaków w apostrofy chroni dos³owne warto¶ci ka¿dego z nich. Apostrof nie mo¿e pojawiæ siê pomiêdzy innymi apostrofami, nawet je¶li jest poprzedzony odwrotnym uko¶nikiem.

Ujêcie znaków w cudzys³owy chroni dos³owne warto¶ci ka¿dego z nich, za wyj±tkiem $, ` i \. Znaki $ i ` zachowuj± swe specjalne znaczenie wewn±trz cudzys³owów. Odwrotny uko¶nik zachowuje specjalne znaczenie tylko, gdy wystêpuje po nim jeden z poni¿szych znaków: $, `, ", \ lub <nowalinia>. Cudzys³ów mo¿e byæ cytowany wewn±trz cudzys³owów przez poprzedzenie go odwrotnym uko¶nikiem.

Parametry specjalne * i @ posiadaj± specjalne znaczenie wewn±trz cudzys³owów (zobacz PARAMETRY poni¿ej).

S³owa postaci $'³añcuch' traktowane s± specjalnie. S³owo takie interpretowane jako ³añcuch, w którym znaki poprzedzone odwrotnym uko¶nikiem zastêpowane s± wed³ug standardu ANSI C. Sekwencje specjalne z odwrotnym uko¶nikiem, je¶li wystêpuj±, dekodowane s± nastêpuj±co:

\a
alarm (dzwonek)
\b
backspace
\e
znak escape
\f
znak wysuwu strony (form feed)
\n
znak nowej linii (new line)
\r
powrót karetki (carriage return)
\t
tabulacja pozioma (horizontal tab)
\v
tabulacja pionowa (vertical tab)
\\
odwrotny uko¶nik (backslash)
\'
apostrof
\nnn
o¶miobitowy znak, którego warto¶ci± jest ósemkowa liczba nnn (jedna do trzech cyfr)
\xnnn
o¶miobitowy znak, którego warto¶ci± jest szesnastkowa liczba nnn (jedna do trzech cyfr szesnastkowych)

Przet³umaczony wynik jest pojedynczo cytowany, tak jakby nie by³o znaku dolara.

Ujêty w cudzys³owy ³añcuch poprzedzony znakiem dolara ($) spowoduje, ¿e ³añcuch zostanie zinterpretowany zgodnie z bie¿±cymi ustawieniami regionalnymi (locale). Je¶li ustawione s± one na C lub POSIX, to znak dolara jest ignorowany. Je¿eli ³añcuch jest t³umaczony i zamieniany, to zast±pienie jest podwójnie cytowane.

PARAMETRY

Parametr jest elementem przechowuj±cym warto¶ci. Mo¿e on byæ nazw±, liczb± lub jednym ze znaków specjalnych podanych poni¿ej w sekcji Parametry specjalne. Dla celów pow³oki zmienna jest parametrem oznaczanym przez nazwê. Zmienna posiada warto¶æ i zero lub wiêcej atrybutów. Warto¶æ atrybutom przypisuje siê za pomoc± polecenia wbudowanego declare (zobacz opis tego polecenia poni¿ej, w sekcji WBUDOWANEPOLECENIAPOW£OKI).

Parametr jest ustawiony je¶li przypisano mu warto¶æ. £añcuch pusty jest poprawn± warto¶ci±. Po ustawieniu zmiennej, mo¿e byæ ona uniewa¿niona wy³±cznie przez u¿ycie wbudowanego polecenia unset (zobacz poni¿ej WBUDOWANEPOLECENIAPOW£OKI).

Do zmiennej mo¿na wykonaæ przypisanie przy pomocy instrukcji postaci


nazwa=[warto¶æ]

Je¿eli nie podano warto¶ci, to zmiennej przypisywany jest ³añcuch pusty. Wszystkie warto¶ci przechodz± przez interpretacjê tyld, podstawianie parametrów, interpretacjê zmiennych, podstawianie wyników poleceñ, interpretacjê wyra¿eñ arytmetycznych i usuwanie cytowañ (zobacz poni¿ej INTERPRETACJA). Je¿eli zmienna ma ustawiony atrybut integer (ca³kowita), to warto¶æ podlega interpretacjom wyra¿eñ arytmetycznych, nawet je¶li nie u¿yto interpretacji $((...)). Zobacz poni¿ej Interpretacja wyra¿eñ arytmetycznych. Nie jest wykonywane dzielenie na s³owa, z wyj±tkiem "$@", jak wyja¶niono to poni¿ej w sekcji Parametry specjalne. Nie jest wykonywane rozwijanie nazw plików. Instrukcje przypisania mog± siê te¿ pojawiaæ jako argumenty poleceñ wbudowanych declare, typeset, export, readonly i local.

Parametry pozycyjne

Parametr pozycyjny to parametr okre¶lany cyfr± lub cyframi, innymi ni¿ pojedyncza cyfra 0. Parametrom pozycyjnym nadawane s± warto¶ci argumentów pow³oki (w czasie jej wywo³ania). Warto¶ci te mog± byæ ponownie nadawane przy pomocy wbudowanego polecenia set. Do parametrów pozycyjnych nie mo¿na wykonaæ przypisania przy pomocy instrukcji przypisania. Parametry pozycyjne s± tymczasowo zastêpowane podczas wykonywania funkcji pow³oki (zobacz poni¿ej FUNKCJE). Je¿eli interpretowany jest parametr pozycyjny okre¶lany wiêcej ni¿ jedn± cyfr±, to musi byæ ujêty w nawiasy (zobacz poni¿ej INTERPRETACJA).

Parametry specjalne

Pow³oka kilka parametrów traktuje specjalnie. Do parametrów tych mo¿na siê wy³±cznie odwo³ywaæ; nie jest dozwolone przypisywanie im warto¶ci.
*
Interpretowane jest jako parametry pozycyjne, pocz±wszy od pierwszego. Gdy interpretacja pojawia siê wewn±trz cudzys³owów, to parametr ten interpretowany jest jako pojedyncze s³owo z warto¶ciami ka¿dego z parametrów rozdzielonymi pierwszym znakiem zmiennej specjalnej IFS. To znaczy, "$*" jest równowa¿ne "$1c$2c...", gdzie c jest pierwszym znakiem warto¶ci zmiennej IFS. Je¿eli IFS nie jest ustawione, to parametry oddzielane s± spacjami. Je¶li IFS jest ³añcuchem pustym, to parametry s± ze sob± po³±czone bez rozdzielaj±cych je separatorów.
@
Interpretowane jako parametry pozycyjne, pocz±wszy od pierwszego. Gdy interpretacja pojawia siê wewn±trz cudzys³owów, to ka¿dy parametr interpretowany jest jako odrêbne s³owo. To znaczy, "$@" jest równowa¿ne "$1" "$2" ... Je¶li nie ma ¿adnych parametrów pozycyjnych, "$@" i $@ interpretowane s± jako nic (tj. s± usuwane).
#
Interpretowane jako liczba parametrów pozycyjnych, podana dziesiêtnie.
?
Interpretowane jako kod zakoñczenia ostatnio wykonanego potoku pierwszoplanowego.
-
Interpretowane jako bie¿±ce flagi opcji, takie jakie zosta³y podane podczas wywo³ania, ustawione przy pomocy wbudowanego polecenia set lub ustawione przez sam± pow³okê (tak jak opcja -i).
$
Interpretowany jest jako identyfikator procesu pow³oki. W podpow³oce (), interpretowany jest jako ID procesu bie¿±cej pow³oki, nie za¶ podpow³oki.
!
Interpretowany jako ID procesu ostatnio wykonywanego polecenia t³a (polecenia asynchronicznego).
0
Interpretowany jako nazwa pow³oki lub skryptu pow³oki. Ustawiane jest to na etapie inicjowania pow³oki. Je¿eli bash wywo³ywany zosta³ z plikiem poleceñ, to $0 ustawiane jest na nazwê tego pliku. Je¶li bash zosta³ uruchomiony z opcj± -c, to $0 jest ustawiane na pierwszy argument po ³añcuchu, jaki ma zostaæ wywo³any, je¶li taki wystêpuje. W przeciwnym wypadku, ustawiany jest na nazwê pliku u¿yt± do wywo³ania bash, jak± podaje argument zerowy.
_
Podczas uruchamiania pow³oki, ustawiany na bezwzglêdn± nazwê pow³oki lub wykonywanego skryptu pow³oki przekazanego w li¶cie argumentów. Nastêpnie, interpretowany jest jako ostatni argument poprzedniego polecenia, po interpretacji. Ustawiany równie¿ na pe³n± nazwê pliku ka¿dego polecenia wykonanego i umieszczonego w ¶rodowisku eksportowanym do tego polecenia. Podczas sprawdzania poczty parametr ten przechowuje nazwê aktualnie sprawdzanego pliku poczty.

Zmienne pow³oki

Pow³oka ustawia nastêpuj±ce zmienne:

BASH
Interpretowane jako pe³na nazwa pliku u¿yta do wywo³ania tego przebiegu bash.
BASH_VERSINFO
Zmienna tablicowa tylko do odczytu, której elementy zawieraj± informacje o wersji uruchomionego bash. Warto¶ci przypisane elementom tablicy s± nastêpuj±ce:
BASH_VERSINFO[0]
G³ówny numer wersji, wydanie (release).
BASH_VERSINFO[1]
Poboczny numer wersji (version).
BASH_VERSINFO[2]
Poziom ³at (patch level).
BASH_VERSINFO[3]
Wersja kompilatu (build version).
BASH_VERSINFO[4]
Status wydania (np. beta1).
BASH_VERSINFO[5]
Warto¶æ MACHTYPE.
BASH_VERSION
Interpretowane jako ³añcuch opisuj±cy wersjê uruchomionego bash.
COMP_CWORD
Indeks w ${COMP_WORDS} s³owa zawieraj±cego bie¿±c± pozycjê kursora. Zmienna ta jest dostêpna wy³±cznie w funkcjach pow³oki wywo³anych przez us³ugi programowalnego uzupe³niania (zobacz poni¿ej Programowalne uzupe³nianie).
COMP_LINE
Bie¿±cy wiersz poleceñ. Ta zmienna jest dostêpna tylko w funkcjach pow³oki i poleceniach zewnêtrznych wywo³ywanych przez us³ugi programowalnego uzupe³niania (zobacz poni¿ej Programowalne uzupe³nianie).
COMP_POINT
Indeks bie¿±cej pozycji kursora wzglêdem pocz±tku bie¿±cego polecenia. Je¿eli kursor jest na koñcu bie¿±cego polecenia, to warto¶æ tej zmiennej jest równa ${#COMP_LINE}. Ta zmienna jest dostêpna tylko w funkcjach pow³oki i poleceniach zewnêtrznych wywo³ywanych przez us³ugi programowalnego uzupe³niania (zobacz poni¿ej Programowalne uzupe³nianie).
COMP_WORDS
Zmienna tablicowa (patrz Tablice poni¿ej) sk³adaj±ca siê z pojedynczych s³ów z aktualnego wiersza poleceñ. Zmienna ta jest dostêpna wy³±cznie w funkcjach pow³oki wywo³anych przez us³ugi programowalnego uzupe³niania (zobacz poni¿ej Programowalne uzupe³nianie).
DIRSTACK
Zmienna tablicowa (zobacz Tablice poni¿ej) zawieraj±ca bie¿±c± zawarto¶æ stosu katalogów. Katalogi pojawiaj± siê na stosie w kolejno¶ci, w jakiej s± wy¶wietlane przez wbudowane dirs. Przypisanie do elementów tej zmienej tablicowej mo¿e pos³u¿yæ do zmiany katalogów ju¿ wystêpuj±cych na stosie, ale do dodania i usuniêcia katalogów musz± byæ u¿yte wbudowane pushd i popd. Przypisanie warto¶ci tej zmiennej nie zmieni bie¿±cego katalogu. Je¶li DIRSTACK jest uniewa¿nione, to traci swe specjalne w³a¶ciwo¶ci, nawet je¿eli jest nastêpnie ponownie ustawione.
EUID
Interpretowane jako efektywny identyfikator bie¿±cego u¿ytkownika, inicjowane przy uruchamianiu pow³oki. Zmienna ta jest tylko do odczytu.
FUNCNAME
Nazwa aktualnie wykonywanej funkcji pow³oki. Zmienna ta istnieje tylko podczas wykonywania funkcji pow³oki. Próby przypisywania jej warto¶ci nie odnosz± efektu i zwracaj± kod b³êdu. Je¿eli FUNCNAME jest uniewa¿nione, to traci swe specjalne w³a¶ciwo¶ci, nawet je¿eli jest nastêpnie ponownie ustawione.
GROUPS
Zmienna tablicowa zawieraj±ca listê grup, których cz³onkiem jest bie¿±cy u¿ytkownik. Próby przypisywania jej warto¶ci nie odnosz± efektu i zwracaj± kod b³êdu. Je¿eli GROUPS jest uniewa¿nione, to traci swe specjalne w³a¶ciwo¶ci, nawet je¿eli jest nastêpnie ponownie ustawione.
HISTCMD
Licznik historii (indeks na li¶cie historii poleceñ) bie¿±cego polecenia. Je¿eli HISTCMD jest uniewa¿nione, to traci swe specjalne w³a¶ciwo¶ci, nawet je¿eli jest nastêpnie ponownie ustawione.
HOSTNAME
Automatycznie ustawiane na nazwê aktualnego hosta.
HOSTTYPE
Automatycznie ustawiane na ³añcuch unikalnie opisuj±cy typ maszyny, na której jest wykonywany bash. Warto¶æ domy¶lna zale¿y od systemu.
LINENO
Przy ka¿dym odwo³aniu do tego parametru pow³oka zastêpuje jego warto¶æ liczb± dziesiêtn± reprezentuj±c± aktualny kolejny numer wiersza (poczynaj±c od 1) skryptu lub funkcji. Nie zapewnia siê, by warto¶æ ta mia³a znaczenie poza skryptem b±d¼ funkcj±. Je¶li LINENO jest uniewa¿nione, to traci swe specjalne w³a¶ciwo¶ci, nawet je¿eli jest nastêpnie ponownie ustawione.
MACHTYPE
Automatycznie ustawiane na ³añcuch w pe³ni opisuj±cy typ systemu, na którym jest wykonywany bash, w standardowym formacie GNU cpu-firma-system. Warto¶æ domy¶lna zale¿y od systemu.
OLDPWD
Poprzedni katalog roboczy ustawiony poleceniem cd.
OPTARG
Warto¶æ ostatniego, bêd±cego opcj±, argumentu przetworzonego przez wbudowane polecenie getopts (zobacz poni¿ej WBUDOWANEPOLECENIAPOW£OKI).
OPTIND
Numer (indeks) nastêpnego argumentu, jaki ma zostaæ przetworzony przez wbudowane polecenie getopts (zobacz poni¿ej WBUDOWANEPOLECENIAPOW£OKI).
OSTYPE
Automatycznie ustawiane na ³añcuch opisuj±cy system operacyjny, w którym jest wykonywany bash. Warto¶æ domy¶lna zale¿y od systemu.
PIPESTATUS
Zmienna tablicowa (zobacz Tablice poni¿ej) zwieraj±ca listê kodów zakoñczenia z procesów w ostatnio wykonywanym potoku pierwszoplanowym (który mo¿e zawieraæ pojedyncze polecenie).
PPID
Identyfikator procesu macierzystego pow³oki. Zmienna ta jest tylko do odczytu.
PWD
Bie¿±cy katalog roboczy, ustawiony poleceniem cd.
RANDOM
Za ka¿dym razem, gdy nastêpuje odwo³anie do tego parametru, generowana jest ca³kowita liczba losowa z zakresu od 0 do 32767. Sekwencjê liczb losowych mo¿na zainicjowaæ przypisuj±c warto¶æ do RANDOM. Je¿eli RANDOM jest uniewa¿niona, to traci swe specjalne w³a¶ciwo¶ci, nawet je¿eli jest nastêpnie ponownie ustawione.
REPLY
Ustawiona na wiersz wej¶cia odczytany wbudowanym poleceniem read je¶li nie podano ¿adnych jego argumentów.
SECONDS
Ka¿dorazowo, gdy wystêpuje odwo³anie do tego parametru, zwracana jest liczba sekund, jakie up³ynê³y od wywo³ania pow³oki. Je¿eli do SECONDS zostanie przypisana warto¶æ, to warto¶æ zwracana przez kolejne odwo³ania równa liczbie sekund od czasu przypisania plus przypisana warto¶æ. Je¿eli SECONDS jest uniewa¿nione, to traci swe specjalne w³a¶ciwo¶ci, nawet je¿eli jest nastêpnie ponownie ustawione.
SHELLOPTS
Lista, rozdzielonych dwukropkami, w³±czonych opcji pow³oki. Ka¿de s³owo listy jest poprawnym argumentem opcji -o wbudowanego polecenia set (zobacz WBUDOWANE POLECENIA POW£OKI poni¿ej). Opcje pojawiaj±ce siê w SHELLOPTS to te, które s± zg³aszane jako w³±czone (on) przez set -o. Je¶li zmienna ta istnieje w ¶rodowisku podczas uruchamiania bash, to ka¿da z opcji pow³oki wystêpuj±ca na tej li¶cie zostanie w³±czona przed odczytem jakichkolwiek plików startowych. Jest to zmienna tylko do odczytu.
SHLVL
Inkrementowana ka¿dorazowo, gdy uruchamiane jest kolejne wyst±pienie bash.
UID
Interpretowane jako identyfikator bie¿±cego u¿ytkownika, inicjowane przy uruchamianiu pow³oki. Zmienna ta jest tylko do odczytu.

Poni¿sze zmienne s± u¿ywane przez pow³okê. W niektórych przypadkach bash przypisuje im domy¶lne warto¶ci; przypadki te s± odnotowane ni¿ej.

BASH_ENV
Je¿eli parametr ten jest ustawiony podczas wykonywania przez bash skryptu, to jego warto¶æ interpretowana jest jako nazwa pliku zawieraj±cego polecenia do zainicjowania pow³oki, jak w ~/.bashrc. Warto¶æ BASH_ENV podlega interpretacji parametrów, podstawianiu wyników poleceñ i interpretacjom wyra¿eñ arytmetycznych przed interpretacj± jej jako nazwy pliku. Zmienna PATH nie jest u¿ywana do znalezienia pliku o powsta³ej w ten sposób nazwie.
CDPATH
¦cie¿ka wyszukiwania dla polecenia cd. Jest to lista rozdzielonych dwukropkami katalogów, w których pow³oka szuka katalogów docelowych podanych przez polecenie cd. Przyk³adow± warto¶ci± jest ,,.:~:/usr''.
COLUMNS
U¿ywana przez polecenie wbudowane select do wyznaczenia szeroko¶ci terminala przy wypisywaniu list wyboru. Ustawiana automatycznie po otrzymaniu SIGWINCH.
COMPREPLY
Zmienna tablicowa, z której bash czyta mo¿liwe uzupe³nienia tworzone przez funkcjê pow³oki wywo³an± przez us³ugê programowalnego uzupe³niania (zobacz poni¿ej Programowalne uzupe³nianie).
FCEDIT
Domy¶lny edytor dla wbudowanego polecenia fc.
FIGNORE
Lista rozdzielonych dwukropkami przyrostków, jakie maj± byæ ignorowane podczas uzupe³niania nazw plików (zobacz READLINE poni¿ej). Nazwa pliku o przyrostku pasuj±cym do jednej z pozycji FIGNORE wy³±czana jest z listy dopasowanych nazw plików. Przyk³adow± warto¶ci± jest ,,.o:~''.
GLOBIGNORE
Lista rozdzielonych dwukropkami wzorców definiuj±cych zestaw nazw plików, jakie maj± byæ ignorowane podczas rozwijania nazw plików. Je¿eli plik pasuj±cy do wzorca rozwijaj±cego nazwê ¶cie¿kow± pasuje równie¿ do którego¶ z wzorców w GLOBIGNORE, to jest on usuwany z listy dopasowanych.
HISTCONTROL
Je¿eli posiada warto¶æ ignorespace, to wiersze rozpoczynaj±ce siê od znaku spacji nie s± wprowadzane do listy historii. Je¶li posiada warto¶æ ignoredups, to wiersze pasuj±ce do ostatniego wiersza historii nie s± wprowadzane. Warto¶æ ignoreboth ³±czy obie te mo¿liwo¶ci. Je¶li zmienna ta nie jest zdefiniowana lub ma warto¶æ inn± od powy¿szych, to wszystkie wiersze przeczytane przez analizator sk³adni zachowywane s± w li¶cie historii, stosownie do warto¶ci HISTIGNORE. Funkcja tej zmiennej jest zast±piona przez HISTIGNORE. Drugi i kolejne wiersze z³o¿onego polecenia wielowierszowego nie s± sprawdzane i s± dodawane do historii bez wzglêdu na warto¶æ
HISTFILE
Nazwa pliku, w którym zachowywana jest historia poleceñ (zobacz HISTORIA poni¿ej). Warto¶ci± domy¶ln± jest ~/.bash_history. Je¶li ustawienie tej zmiennej zostanie skasowane, to historia poleceñ nie bêdzie zachowana po zakoñczeniu pracy pow³oki interaktywnej.
HISTFILESIZE
Maksymalna liczba wierszy zawartych w pliku historii. Podczas przypisywania warto¶ci tej zmiennej, je¿eli jest to niezbêdne, plik historii jest obcinany tak, by nie zawiera³ wiêcej wierszy. Domy¶ln± warto¶ci± jest 500. Plik historii jest tak¿e obcinany do tego rozmiaru po zapisaniu go w czasie koñczenia pracy przez pow³okê interaktywn±.
HISTIGNORE
Lista rozdzielonych dwukropkami wzorców s³u¿±cych do decydowania, jakie wiersze poleceñ powinny byæ zachowane w li¶cie historii. Ka¿dy z wzorców zakotwiczony jest na pocz±tku wiersza i musi pasowaæ do ca³ego wiersza (nie jest dodawane ¿adne niejawne `*'). Ka¿dy z wzorców sprawdzany jest z bie¿±cym wierszem po wykonaniu kontroli okre¶lonych przez HISTCONTROL. Oprócz zwyk³ych znaków dopasowywania wzorców u¿ywanych przez pow³okê, `&' dopasowuje poprzedni wiersz historii. Litera³ `&' mo¿na uzyskaæ poprzedzaj±c go odwrotnym uko¶nikiem; odwrotny uko¶nik jest usuwany przed prób± dopasowania. Druga i kolejne wiersze z³o¿onego polecenia wielowierszowego nie s± sprawdzane i s± dodawane do historii bez wzglêdu na warto¶æ HISTIGNORE.
HISTSIZE
Liczba poleceñ do zapamiêtania w historii poleceñ (zobacz HISTORIA poni¿ej). Warto¶ci± domy¶ln± jest 500.
HOME
Katalog domowy bie¿±cego u¿ytkownika; domy¶lny argument wbudowanego polecenia cp. Warto¶æ tej zmiennej wykorzystywana jest te¿ przy wykonywaniu interpretacji tyld.
HOSTFILE
Zawiera nazwê pliku o tym samym formacie co /etc/hosts który pownien byæ czytany, gdy pow³oka potrzebuje uzupe³niæ nazwê hosta. Listê mo¿liwych uzupe³nieñ mo¿na zmieniaæ podczas pracy pow³oki. Nastêpnym razem, gdy wykonywana jest próba uzupe³nienia nazwy hosta bash dodaje zawarto¶æ nowego pliku do ju¿ istniej±cej listy. Je¿eli HOSTFILE jest ustawione, ale nie posiada warto¶ci, bash usi³uje uzyskaæ listê mo¿liwych uzupe³nieñ nazw hostów czytaj±c /etc/hosts Gdy HOSTFILE jest uniewa¿niane, lista hostów jest czyszczona.
IFS
Wewnêtrzny Separator Pól (Internal Field Separator) u¿ywany do podzia³u na s³owa po interpretacjach i dzielenia wierszy na s³owa we wbudowanym poleceniu read. Jego domy¶ln± warto¶ci± jest ,,<spacja><tabulacja><nowalinia>''.
IGNOREEOF
Steruje dzia³aniem pow³oki interaktywnej przy otrzymaniu przez ni± znaku EOF jako jedynego znaku wej¶cia. Je¿eli jest ustawiona, to jej warto¶æ jest liczb± kolejnych znaków EOF jakie musz± byæ wpisane jako pierwsze znaki wiersza wprowadzania przed zakoñczeniem pracy przez bash. Je¶li zmienna ta istnieje, ale nie zawiera warto¶ci numerycznej lub nie ma warto¶ci, to warto¶ci± domy¶ln± jest 10. Je¿eli nie istnieje, to EOF wskazuje pow³oce koniec wprowadzanych danych.
INPUTRC
nazwa pliku startowego dla readline, uniewa¿niaj±ca domy¶ln± ~/.inputrc (zobacz READLINE poni¿ej).
LANG
S³u¿y do wyznaczania kategorii locale dla wszystkich kategorii nie wyszczególnionych przez zmienne rozpoczynaj±ce siê od znaków LC_.
LC_ALL
Zmienna ta uniewa¿nia warto¶æ LANG i wszelkich innych zmiennych LC_ okre¶laj±cych kategorie locale.
LC_COLLATE
Ta zmienna wyznacza kolejno¶æ (collation order) u¿ywan± przy sortowaniu wyników rozwijania nazw plików, decyduje te¿ o zachowaniu wielu wyra¿eñ, klas równowa¿nych i sekwencje sortowania (collating sequences) w rozwijaniu nazw plików i dopasowywaniu wzorców.
LC_CTYPE
Ta zmienna decyduje o interpretacji znaków i zachowaniu siê klas znaków wewn±trz rozwijania nazw plików i dopasowywania wzorców.
LC_MESSAGES
Ta zmienna decyduje o ustawieniu locale u¿ywanym do t³umaczenia ujêtych w cudzys³owy ³añcuchów poprzedzonych znakiem $.
LC_NUMERIC
Ta zmienna okre¶la kategoriê locale u¿ywan± do formatowania liczb.
LINES
U¿ywana przez polecenie wbudowane select do wyznaczenia d³ugo¶ci kolumn przy wypisywaniu list wyboru. Ustawiana automatycznie po otrzymaniu SIGWINCH.
MAIL
Je¿eli parametrowi temu jest przypisana nazwa pliku, a nie jest ustawiona zmienna MAILPATH, to bash informuje u¿ytkownika o nadej¶ciu poczty do podanego pliku.
MAILCHECK
Okre¶la jak czêsto (w sekundach) bash sprawdza pocztê. Domy¶lnie jest to 60 sekund. Gdy nadchodzi pora sprawdzenia poczty, pow³oka wykonuje to przed wy¶wietleniem g³ównej zachêty. Je¶li zmienna ta nie jest ustawiona, to pow³oka wy³±cza sprawdzanie poczty.
MAILPATH
Lista rozdzielonych dwukropkami nazw plików, w jakich ma byæ sprawdzana poczta. Mo¿na podaæ komunikat, jaki ma zostaæ wy¶wietlony, gdy do danego pliku przybêdzie wiadomo¶æ pocztowa, przez oddzielenie nazwy pliku od komunikatu znakiem '?'. U¿yte w tek¶cie komunikatu, $_ interpretowane jest jako nazwa bie¿±cego pliku pocztowego. Przyk³ad:

MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'
Bash zapewnia tej zmiennej warto¶æ domy¶ln±, ale po³o¿enie plików pocztowych u¿ytkownika, jakim siê pos³uguje zale¿y od systemu (np. /var/mail/$USER).
OPTERR
Je¿eli ustawiono na warto¶æ 1, bash wy¶wietla komunikaty o b³êdach generowanych przez wbudowane polecenie getopts (zobacz WBUDOWANE POLECENIA POW£OKI poni¿ej). OPTERR inicjowane jest na 1 ka¿dorazowo, gdy wywo³ywana jest pow³oka lub wykonywany jest skrypt pow³oki.
PATH
¦cie¿ka wyszukiwania poleceñ. Jest to lista rozdzielanych dwukropkami katalogów, w których pow³oka szuka poleceñ (zobacz WYKONYWANIE POLECEÑ poni¿ej). Domy¶lna ¶cie¿ka zale¿y od systemu i ustawiana jest przez administratora instaluj±cego bash. Powszechn± warto¶ci± jest ,,/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin:.''.
POSIXLY_CORRECT
Je¶li podczas uruchamiania bash w ¶rodowisku istnieje ta zmienna, to pow³oka przed odczytem plików startowych wchodzi w tryb posix, tak jakby przy jej wywo³aniu podano opcjê --posix. Je¶li zmienna ta zostanie ustawiona podczas pracy pow³oki, to bash w³±cza tryb posix, tak jakby zosta³o wykonane polecenie set -o posix.
PROMPT_COMMAND
Je¿eli jest ustawiona, to jej warto¶æ jest wykonywana jwko polecenie przed ka¿dym wys³aniem zachêty g³ównej.
PS1
Warto¶æ tego parametru jest interpretowana (zobacz poni¿ej ZACHÊTA) i u¿ywana jako g³ówny ³añcuch zachêty. Jego warto¶ci± domy¶ln± jest ,,\s-\v\$ ''.
PS2
Warto¶æ tego parametru jest interpretowana jak PS1 i u¿ywana jako wtórny (secondary) ³añcuch zachêty. Domy¶lnie jest to ,,> ''.
PS3
Warto¶æ tego parametru s³u¿y jako zachêta w poleceniu select (zobacz powy¿ej GRAMATYKAPOW£OKI).
PS4
Warto¶æ tego parametru interpretowana jest jak PS1 i wypisywana przed ka¿dym poleceniem wy¶wietlanym przez bash podczas ¶ledzenia wykonywania. Pierwszy znak PS4, w razie potrzeby, powtarzany jest wielokrotnie, by wskazaæ wiele pozionów zagnie¿d¿enia. Domy¶lnie jest to ,,+ ''.
TIMEFORMAT
Warto¶æ tego parametru s³u¿y jako ³añcuch formatu okre¶laj±cego, jak powinna byæ wy¶wietlana informacja o czasach dla potoków poprzedzonych s³owem zastrze¿onym time. Znak % rozpoczyna sekwencjê specjaln±, która jest interpretowana jako warto¶æ czasu lub inna informacja. Sekwencje specjalne i ich znaczenie s± nastêpuj±ce; nawiasy kwadratowe opisuj± czê¶ci opcjonalne.
%%
Litera³ %.
%[p][l]R
Czas, jaki up³yn±³, w sekundach.
%[p][l]U
Liczba sekund, jakie CPU zu¿y³ w trybie u¿ytkownika.
%[p][l]S
Liczba sekund, jakie CPU zu¿y³ w trybie systemowym.
%P
Procent wykorzystania CPU, liczony jako (%U + %S) / %R.
Opcjonalne p jest cyfr± okre¶laj±c± dok³adno¶æ (precision), liczbê cyfr u³amkowych po kropce dziesiêtnej. Warto¶æ zero powoduje, ¿e nie bêdzie wy¶wietlana ani kropka dziesiêtna ani czê¶æ u³amkowa. Mog± byæ podane co najwy¿ej trzy miejsca po kropce dziesiêtnej; warto¶ci p wiêksze od 3 zmieniane s± na 3. Je¿eli nie podano p, to u¿ywana jest warto¶æ 3.
Opcjonalne Bl okre¶la d³u¿szy (longer) format wyników, zawieraj±cy minuty, w postaci MMmSS.FFs. O tym, czy wystêpuje u³amkowa czê¶æ sekund decyduje warto¶æ p.
Je¿eli zmienna ta nie jest ustawiona, to bash dzia³a tak, jakby mia³a ona warto¶æ $'\nreal\t%3lR\nuser\t%3lU\nsys %3lS'. Je¿eli jej warto¶ci± jest pusty ³añcuch, to nie jest wy¶wietlana ¿adna informacja o czasach (timing). Podczas wy¶wietlania ³añcucha formatu dodawany jest koñcz±cy znak nowej linii.
TMOUT
Je¶li ustawione na warto¶æ wiêksz± od zera, to warto¶æ ta jest interpretowana jako liczba sekund okre¶laj±c± czas, przez jaki pow³oka ma czekaæ na wprowadzenie danych po wy¶wietleniu zachêty. Bash koñczy pracê po odczekaniu tego czasu je¶li dane nie pojawi³y siê.
auto_resume
Zmienna ta steruje sposobem interakcji pow³oki z u¿ytkownikiem i sposobem kontroli zadañ. Je¿eli jest ustawiona, to jednowyrazowe polecenia proste bez przekierowañ traktowane s± jako aspiruj±ce do wznowienia istniej±cego zatrzymanego zadania. Nie pozwala siê na ¿adn± dwuznaczno¶æ; je¶li jest wiêcej ni¿ jedno zadanie rozpoczynaj±ce siê od wpisanego ³añcucha, wybierane jest zadanie, do którego ostatnio siêgano. Nazwa zatrzymanego zadania, w tym kontek¶cie, jest wierszem poleceñ u¿ytym do jego uruchomienia. Je¶li posiada warto¶æ exact, to podany ³añcuch musi pasowaæ dok³adnie do nazwy zatrzymanego zadania; Je¶li jest ustawione na substring, to podany ³añcuch powinien pasowaæ do pod³añcucha nazwy zatrzymanego zadania. Warto¶æ substring zapewnia funkcjonalno¶æ analogiczn± do identyfikatora zadania %? (zobacz STEROWANIE ZADANIAMI poni¿ej). Je¶li ustawiono inn± warto¶æ, to podany ³añcuch musi byæ przedrostkiem nazwy zatrzymanego zadania; zapewnia to funkcjonalno¶æ analogiczn± do identyfikatora zadania %.
histchars
Dwa lub trzy znaki steruj±ce interpretacj± historii i podzia³em na leksemy (zobacz poni¿ej INTERPRETACJAHISTORII). Pierwszy znak jest znakiem interpretacjihistorii, sygnalizuj±cym pocz±tek interpretacji historii, zwykle `!'. Drugi znak jest znakiem szybkiego podstawiania , ("quick substitution"), s³u¿±cym jako skrót do powtórnego uruchamiania poprzednio wprowadzonego polecenia, podstawiaj±cym w poleceniu jeden ³añcuch za inny. Domy¶lnym znakiem szybkiego podstawiania jest `^'. Opcjonalny, trzeci znak jest znakiem wskazuj±cym, ¿e pozosta³a czê¶æ wiersza, w którym wystêpuje on jako pierwszy znak s³owa, jest komentarzem. Zwykle znakiem tym jest `#'. Znak komentarza historii powoduje, ¿e dla pozosta³ych s³ów wiersza podstawianie historii jest pomijane. Niekoniecznie powoduje to traktowanie reszty wiersza jako komentarza przez analizator sk³adni pow³oki.

Tablice

Bash udostêpnia zmienne tablicowe jednowymiarowe. Jako tablica mo¿e zostaæ u¿yta dowolna zmienna; wbudowane declare jawnie explicitly zadeklaruje tablicê. Nie ma maksymalnego rozmiaru tablic, ani wymagania, by wszystkie jej elementy by³y indeksowane czy przypisywane w sposób ci±g³y. Tablice indeksowane s± przy pomocy liczb ca³kowitych, pocz±wszy od zera.

tablica tworzona jest automatycznie je¶li wykonywane jest przypisanie do jakiej¶ zmiennej przy pomocy sk³adni nazwa[wska¼nik]=warto¶æ. Wska¼nik tablicy traktowany jest jako wyra¿enie arytmetyczne, które musi po interpretacji daæ liczbê wiêksz± b±d¼ równ± zero. Chc±c jawnie zadeklarowaæ tablicê, u¿yj declare -a nazwa (zobacz WBUDOWANE POLECENIA POW£OKI poni¿ej). declare -a nazwa[wska¼nik] jest równie¿ akceptowane; wska¼nik jest wówczas ignorowany. Dla zmiennej tablicowej mo¿na podaæ atrybuty przy pomocy wbudowanych declare i readonly. Ka¿dy z atrybutów stosowany jest do wszystkich elementów tablicy.

Przypisania do tablic wykonywane s± przy pomocy przypisañ z³o¿onych postaci nazwa=(warto¶æ1 ... warto¶æn), gdzie ka¿da warto¶æ ma postaæ [wska¼nik]=³añcuch. Wymagany jest wy³±cznie ³añcuch. Je¿eli podano opcjonalne nawiasy i wska¼nik, to warto¶æ jest przypisywana wskazanemu elementowi tablicy; w przeciwnym wypadku warto¶æ przypisywana jest elementowi o indeksie o jeden wiêkszym od ostatniego elementu z przypisan± warto¶ci±. Indeksy ropoczynaj± siê od zera. Sk³adnia ta jest akceptowana tak¿e przez wbudowane declare. Przypisania do pojedynczych elementów tablicy mo¿na wykonywaæ przy pomocy sk³adni nazwa[wska¼nik]=warto¶æ wprowadzonej powy¿ej.

Do elementu tablicy mo¿na odwo³ywac siê u¿ywaj±c ${nazwa[wska¼nik]}. Nawiasy s± wymagane, by unikn±æ konfliktów z rozwijaniem nazw plików. Je¶li wska¼nikiem jest @ lub *, to powy¿sze s³owo interpretowane jest jako wszystkie elementy nazwy. Wska¼niki te ró¿ni± siê tylko wtedy, gdy s³owo pojawia siê w cudzys³owach. Je¶li s³owo ujêto w cudzys³owy, to ${nazwa[*]} interpretowane jest jako pojedyncze s³owo o warto¶ci wszystkich elementów tablicy rozdzielonych pierwszym znakiem zmiennej specjalnej IFS, za¶ ${nazwa[@]} interpretuje ka¿dy z elementów nazwa jako odrêbne s³owo. Je¶li brak jest elementów tablicy, to ${nazwa[@]} interpretowane jest jako nic. Jest to zachowanie analogiczne do interpretacji parametrów specjalnych * i @ (zobacz powy¿ej Parametry specjalne). ${#nazwa[wska¼nik]} interpretowane jest jako d³ugo¶æ ${nazwa[wska¼nik]}. Je¶li wska¼nikiem jest * lub @, to interpretacj± jest liczba elementów w tablicy. Odwo³ywania siê do zmiennej tablicowej bez podania wska¼nika jest równowa¿ne odwo³aniu do elementu numer zero.

Do niszczenia tablic s³u¿y wbudowane polecenie unset. unset nazwa[wska¼nik] niszczy element tablicy o indeksie wska¼nik. unset nazwa, gdzie nazwa jest tablic±, lub unset nazwa[wska¼nik], gdzie wska¼nikiem jest * lub @, usuwa ca³± tablicê.

Ka¿de z wbudowanych declare, local i readonly akceptuje opcjê -a do okre¶lania tablic. Wbudowane read akceptuje opcjê -a do przypisywania tablicy listy s³ów przeczytanych ze standardowego wej¶cia. set i declare wy¶wietlaj± warto¶ci tablicowe w sposób umo¿liwiaj±cy ponowne ich u¿ycie w przypisaniach.

INTERPRETACJA

Interpretacja wykonywana jest na wierszu poleceñ po jego podziale na s³owa. Istnieje siedem rodzajów wykonywanych interpretacji: interpretacja nawiasów (brace expansion), interpretacja tyld (tilde expansion), podstawianie parametrów i interpretacja zmiennych (parameter and variable expansion), podstawienie wyników poleceñ (command substitution), interpretacja wyra¿eñ arytmetycznych (arithmetic expansion), podzia³ na s³owa (word splitting) i rozwiniêcie nazw plików (pathname expansion).

Kolejno¶æ interpretacji: interpretacja nawiasów, interpretacja tyld, podstawianie parametrów, interpretacja zmiennych i wyra¿eñ arytmetycznych i podstawianie wyników poleceñ (wykonywane od lewej do prawej), podzia³ na s³owa i rozwijanie nazw ¶cie¿kowych.

Na systemach potrafi±cych to obs³u¿yæ, istnieje dodatkowa dostêpna interpretacja: podstawienie wyników procesów (process substitution).

Tylko interpretacja nawiasów, dzielenie na s³owa i rozwiniêcie nazw plików mog± zmieniæ liczbê s³ów interpretowanego wyra¿enia; pozosta³e interpretacje rozwijaj± pojedyncze s³owo w pojedyncze s³owo. Jedynymi wyj±tkami s± interpretacje "$@" i "${nazwa[@]}" wyja¶nione powy¿ej (zobacz PARAMETRY).

Interpretacja nawiasów

Interpretacja nawiasów jest mechanizmem, przez który mog± byæ generowane dowolne ³añcuchy. Mechanizm ten przypomina rozwiniêcia nazw plików, ale generowane nazwy plików nie musz± okre¶laæ plików istniej±cych. Wzorce, maj±ce podlegaæ interpretacji nawiasów maj± postaæ opcjonalnej preambu³y, po której wystêpuj± serie separowanych przecinkami ³añcuchów pomiêdzy par± nawiasów klamrowych, po których nastêpuje opcjonalny dopisek(postscript). Preambu³a stanowi przedrostek dla ka¿dego z ³añcuchów zawartych w nawiasach, a dopisek dodawany jest do ka¿dego ³añcucha wynikowego, przy interpretacji od lewej do prawej.

Interpretacja nawiasów mo¿e byæ zagnie¿d¿ana. Wyniki ka¿dego zinterpretowanego ³añcucha nie s± sortowane; zachowywana jest kolejno¶æ od lewej do prawej. Na przyk³ad, a{d,c,b}e interpretowane jest jako `ade ace abe'.

Interpretacja nawiasów wykonywana jest przed innymi rodzajami interpretacji, a znaki o specjalnym znaczeniu dla innych interpretacji s± zachowywane w wyniku. Jest ¶ci¶le tekstowa. Bash nie stosuje ¿adnej interpretacji sk³adniowej do kontekstu interpretacji czy tekstu pomiêdzy nawiasami.

Poprawnie zbudowana interpretacja nawiasów musi zawieraæ niecytowany nawias otwieraj±cy i zamykaj±cy i co najmniej jeden niecytowany przecinek. Wszelkie niepoprawnie skonstruowane interpretacje nawiasów s± pozostawiane bez zmian. { lub , mo¿na cytowaæ przy pomocy odwrotnego uko¶nika, co chroni je przed przyjmowaniem za czê¶æ wyra¿enia nawiasowego. Dla unikniêcia konfliktu z interpretacj± parametrów, ³añcuch ${ nie jest traktowany jako spe³niaj±cy warunki interpretacji nawiasów.

Typowym zastosowaniem tej konstrukcji jest skrót, wtedy gdy wspólny przedrostek ³añcuchów do utworzenia jest d³u¿szy ni¿ w powy¿ej podanym przyk³adzie, np.:


mkdir /usr/local/src/bash/{old,new,dist,bugs}
lub
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Interpretacja nawiasów wprowadza niewielk± niezgodno¶æ z historycznymi wersjami sh. sh nie traktuje nawiasów otwieraj±cych i zamykaj±cych w specjalny sposób gdy pojawiaj± siê one jako czê¶æ s³owa, i zachowuje je w wyniku. W bash konsekwencj± interpretacji nawiasów jest usuwanie nawiasów ze s³ów. Na przyk³ad, s³owo wprowadzone do sh jako plik{1,2} pojawi siê w identycznej postaci na wyj¶ciu. To samo s³owo po interpretacji przez bash daje plik1 plik2. Je¿eli po¿±dana jest ¶cis³a zgodno¶æ z sh, uruchom bash z opcj± +B lub wy³±cz interpretacjê nawiasów przy pomocy opcji +B polecenia set (zobacz WBUDOWANE POLECENIA POW£OKI poni¿ej).

Interpretacja tyldy

Je¿eli s³owo rozpoczyna siê niecytowanym znakiem tyldy (`~'), to wszystkie znaki poprzedzaj±ce pierwszy niecytowany uko¶nik (lub wszystkie znaki, gdy nie ma uko¶nika) uwa¿ane s± za przedrostek tyldy (tilde-prefix). Je¿eli ¿aden ze znaków w przedrostku tyldy nie jest cytowany, to jego znaki nastêpuj±ce po znaku tyldy traktowane s± jako mo¿liwa nazwa logowania (login name). Je¶li ta nazwa logowania jest ³añcuchem pustym, to tylda zastêpowana jest warto¶ci± parametru pow³oki HOME. Je¿eli HOME nie jest ustawione, to podstawiany jest za nie katalog domowy u¿ytkownika uruchamiaj±cego pow³okê. W przeciwnym wypadku, przedrostek tyldy zastêpowany jest katalogiem domowym skojarzonym z okre¶lon± nazw± logowania.

Je¶li przedrostkiem tyldy jest `~+', to jest on zastêpowany warto¶ci± zmiennej PWDpow³oki. Je¶li przedrostkiem tyldy jest `~-', to jest on zastêpowany warto¶ci± zmiennej pow³oki OLDPWD, je¶li jest ona ustawiona. Je¿eli wystêpuj±ce w przedrostku po tyldzie znaki sk³adaj± siê z liczby N, opcjonalnie poprzedzonej przez `+' lub `-', to przedrostek tyldy zastêpowany jest odpowiednim elementem stosu katalogów, jaki zosta³by wy¶wietlony przez wbudowane dirs, wywo³ane z przedrostkiem tyldy jako argumentem. Je¿eli w przedrostku tyldy znaki wystêpuj±ce po tyldzie sk³adaj± siê z liczby bez pocz±tkowego `+' lub `-', to przyjmowane jest `+'.

Je¶li nazwa logowania jest nieprawid³owa lub interpretacja tyldy nie powiod³a siê, to s³owo z tyld± pozostaje niezmienione.

Ka¿de z przypisañ do zmiennej sprawdzane jest na obecno¶æ niecytowanych przedrostków tyldy wystêpuj±cych bezpo¶rednio po : lub =. W tych przypadkach równie¿ jest wykonywana jest interpretacja tyldy. Na skutek tego, mo¿na pos³ugiwaæ siê nazwami plików z tyldami w przypisaniach do PATH, MAILPATH i CDPATH, a pow³oka przypisze zinterpretowan± warto¶æ.

Podstawianie parametrów

Znak `$' wprowadza podstawianie parametrów, podstawianie wyników poleceñ i interpretacjê wyra¿eñ arytmetycznych. Podlegaj±ca interpretacji nazwa parametru lub symbol mog± byæ ujête w nawiasy klamrowe, które s± opcjonalne, ale s³u¿± do ochrony interpretowanej zmiennej przed znakami, jakie wystêpuj± bezpo¶rednio po niej, a które mog³yby zostaæ zinterpretowane jako czê¶æ nazwy.

Gdy u¿ywane s± nawiasy, pasuj±cym nawiasem koñcz±cym jest pierwszy `}', nie chroniony przez odwrotny uko¶nik, nie znajduj±cy siê wewn±trz cytowanego ³añcucha ani osadzony w wyra¿eniu arytmetycznym, podstawieniu wyniku polecenia czy podstawieniu parametru.

${parametr}
Podstawiana jest warto¶æ parametru. Nawiasy wymagane s± gdy parametr jest parametrem pozycyjnym o wiêcej ni¿ jednej cyfrze, lub gdy po parametrze wystêpuje znak, który nie powinien byæ interpretowany jako czê¶æ jego nazwy.

Je¿eli pierwszym znakiem parametru jest wykrzyknik, to rozpoczyna on poziom zagnie¿d¿enia zmiennej po¶redniej. Bash pos³uguje siê warto¶ci± zmiennej utworzonej z reszty parametru jako nazw± zmiennej; zmienna ta jest nastêpnie interpretowana a w dalszym podstawianiu u¿ywana jest otrzymana warto¶æ zamiast warto¶ci samego parametru. Znane jest to jako interpretacja po¶rednia (indirect expansion). Wyj±tkiem jest tu interpretacja ${!przedrostka*} opisana poni¿ej.

W ka¿dym z poni¿szych przypadków, s³owo podlega interpretacji tyldy, podstawianiu parametrów, podstawianiu wyników poleceñ i interpretacji wyra¿eñ arytmetycznych. Gdy nie przeprowadza interpretacji pod³añcuchów, bash sprawdza czy parametr nie jest pusty lub nieustawiony;

${parametr:-s³owo}
U¿ywa warto¶ci domy¶lnych. Je¿eli parametr jest nieustawiony lub pusty, to podstawiane jest zinterpretowane s³owo. W przeciwnym razie, podstawiana jest warto¶æ parametru.
${parametr:=s³owo}
Przypisuje warto¶ci domy¶lne. Je¿eli parametr jest nieustawiony lub pusty, to jest mu przypisywane zinterpretowane s³owo. Nastêpnie podstawiana jest warto¶æ parametru. Nie mo¿na w ten sposób przypisywaæ warto¶ci parametrom pozycyjnym ani parametrom specjalnym.
${parametr:?s³owo}
Wy¶wietla b³±d je¶li pusty lub nieustawiony. Je¿eli parametr jest nieustawiony lub pusty, to na standardowe wyj¶cie b³êdów zapisywane jest zinterpretowane s³owo (lub komunikat o takim wyniku, je¶li brak s³owa). Je¶li pow³oka nie jest interaktywna, to koñczy pracê. W przeciwnym wypadku, podstawiana jest warto¶æ parametru.
${parametr:+s³owo}
U¿ywa warto¶ci alternatywnej. Je¿eli parametr jest nieustawiony lub pusty, to nic nie jest podstawiane, w przeciwnym razie podstawiane jest zinterpretowane s³owo.
${parametr:offset}
${parametr:offset:d³ugo¶æ}
Interpretacja pod³añcuchów. Interpretuje co najwy¿ej d³ugo¶æ znaków parametru poczynaj±c od znaków okre¶lonych przez offset. Je¶li pominiêto d³ugo¶æ, to interpretuje pod³añcuch parametru poczynaj±c od znaku okre¶lonego przez offset. d³ugo¶æ i offset s± wyra¿eniami arytmetycznymi (zobacz OBLICZANIE WYRA¯EÑ ARYTMETYCZNYCH poni¿ej). d³ugo¶æ musi dawaæ w wyniku liczbê wiêksz± b±d¼ równ± zero. Je¿eli offset daje w wyniku liczbê mniejsz± od zera, to uzyskana warto¶æ u¿ywana jest jako offset liczony od koñca warto¶ci parametru. Je¿eli parametrem jest @, to wynikiem jest d³ugo¶æ parametrów pozycyjnych, pocz±wszy od offset. Je¿eli parametr jest nazw± tablicy indeksowanej przez @ lub *, to wynikiem jest d³ugo¶æ cz³onków tablicy pocz±wszy od ${parametr[offset]}. Indeksowanie pod³añcucha rozpoczyna siê od zera, chyba ¿e u¿ywane s± parametry pozycyjne, wówczas indeksowanie zaczyna siê od 1.
${!przedrostek*}
rozwija siê w listê nazw tych zmiennych, których nazwy rozpoczynaj± siê od przedrostka, rozdzielonych od siebie pierwszym znakiem zmiennej specjalnej IFS.
${#parametr}
Podstawiana jest d³ugo¶æ, w znakach, warto¶ci parametru. Je¿eli parametrem jest * lub @, warto¶æ podstawiana jest liczb± parametrów pozycyjnych. Je¿eli parametr jest nazw± tablicy o indeksowanej przez * lub @, warto¶æ podstawiana jest liczb± elementów tablicy.
${parametr#s³owo}
${parametr##s³owo}
s³owo jest interpretowane tworz±c wzorzec, tak samo jak przy rozwijaniu nazw plików. Je¿eli wzorzec pasuje do pocz±tku warto¶ci parametru, to wynikiem interpretacji jest zinterpretowana warto¶æ parametru z usuniêtym najkrótszym (przypadek ,,#'') lub najd³u¿szym (przypadek ,,##'') pasuj±cym wzorcem. Je¿eli parametrem jest @ lub *, to operacja usuniêcia wzorca stosowana jest do ka¿dego po kolei parametru pozycyjnego, za¶ wynikiem interpretacji jest powsta³a lista. Je¶li parametr jest zmienn± tablicow± indeksowan± przez @ lub *, operacja usuwania wzorca jest przeprowadzana po kolei na ka¿dym elemencie tablicy, za¶ wynikiem interpretacji jest powsta³a lista.
${parametr%s³owo}
${parametr%%s³owo}
s³owo jest interpretowane tworz±c wzorzec, tak samo jak przy rozwijaniu nazw plików. Je¿eli wzorzec pasuje do koñcowej czê¶ci zinterpretowanego parametru, wynikiem interpretacji jest zinterpretowana warto¶æ parametru z usuniêtym najkrótszym (przypadek ,,%'') lub najd³u¿szym (przypadek ,,%%'') pasuj±cym wzorcem. Je¿eli parametrem jest @ lub *, to operacja usuniêcia wzorca stosowana jest do ka¿dego po kolei parametru pozycyjnego, za¶ wynikiem interpretacji jest powsta³a lista. Je¶li parametr jest zmienn± tablicow± indeksowan± przez @ lub *, operacja usuwania wzorca jest przeprowadzana po kolei na ka¿dym elemencie tablicy, za¶ wynikiem interpretacji jest powsta³a lista.
${parametr/wzorzec/³añcuch}
${parametr//wzorzec/³añcuch}
wzorzec jest interpretowany tworz±c wzorzec, tak samo jak przy rozwijaniu nazw plików. Interpretowany jest parametr, a najd³u¿sze dopasowanie wzorca do jego zinterpretowanej warto¶ci zastêpowane jest ³añcuchem. W pierwszej postaci, zastêpowane jest tylko pierwsze dopasowanie. Druga postaæ powoduje zast±pienie wszystkich dopasowañ wzorca ³añcuchem. Je¿eli wzorzec rozpoczyna siê od #, to musi pasowaæ do pocz±tku zinterpretowanej warto¶ci parametru. Je¿eli pattern rozpoczyna siê od %, to musi pasowaæ do koñca zinterpretowanej warto¶ci parametru. Je¶li ³añcuch jest pusty, to dopasowania wzorca s± usuwane a / wystêpuj±ce po wzorcu mo¿na pomin±æ. Je¿eli parametrem jest @ lub *, to operacja podstawiania stosowana jest do ka¿dego po kolei parametru pozycyjnego, za¶ wynikiem interpretacji jest powsta³a lista. Je¶li parametr jest zmienn± tablicow± indeksowan± przez @ lub *, operacja podstawiania jest przeprowadzana po kolei na ka¿dym elemencie tablicy, za¶ wynikiem interpretacji jest powsta³a lista.

Podstawianie wyników poleceñ

Podstawianie wyników poleceñ (command substitution) pozwala na zastêpowanie nazwy polecenia wyj¶ciem (wynikiem) z jego dzia³ania. Posiada dwie postaci:


$(polecenie)
lub
`polecenie`

Bash wykonuje interpretacjê wykonuj±c polecenie i zastêpuj±c podstawiane polecenie jego utworzonym standardowym wyj¶ciem, z usuniêtymi koñcowymi znakami nowej linii. Zawarte wewn±trz wyniku znaki nowej linii nie s± usuwane, ale nog± byæ usuniête podczas podzia³u na s³owa. Podstawienie wyniku polecenia $(cat plik) mo¿na zast±piæ równowa¿nym, ale szybszym $(< plik).

Gdy u¿ywane jest podstawianie w starym stylu, z u¿yciem odwrotnych apostrofów, odwrotny uko¶nik zachowuje swe znaczenie dos³owne, z wyj±tkiem przypadków, gdy poprzedza on $, ` lub \. Pierwszy odwrotny apostrof (`) nie poprzedzony odwrotnym uko¶nikiem koñczy podstawianie wyniku polecenia. Podczas pos³ugiwania siê postaci± $(polecenie), polecenie tworz± wszystkie znaki pomiêdzy nawiasami; ¿aden nie jest traktowany specjalnie.

Podstawianie wyników poleceñ mo¿e byæ zagnie¿d¿ane. W celu zagnie¿d¿enia postaci z odwrotnymi apostrofami zabezpiecz wewnêtrzne przed interpretacj± u¿ywaj±c odwrotnych uko¶ników.

Je¿eli podstawianie pojawia siê wewn±trz cudzys³owów, to na wynikach nie jest przeprowadzany podzia³ na s³owa ani rozwiniêcie nazw plików.

Interpretacja wyra¿eñ arytmetycznych

Interpretacja wyra¿eñ arytmetycznych pozwala na obliczanie wyra¿eñ arytmetycznych i podstawianie wyniku. Format interpretacji arytmetycznej:


$((wyra¿enie))

wyra¿enie traktowane jest tak, jakby by³o ujête w cudzys³owy, ale cudzys³ów wewn±trz nawiasów nie jest traktowany specjalnie. Wszystkie tokeny w wyra¿eniu podlegaj± interpretacji parametrów, interpretacji ³añcuchów, podstawianiu wyników poleceñ i usuwaniu cudzys³owów.

Interpretacja przeprowadzana jest zgodnie z zasadami podanymi poni¿ej w sekcji OBLICZENIAARYTMETYCZNE. Je¿eli wyra¿enie jest nieprawid³owe, bash wypisuje komunikat o niepowodzeniu i nie wystêpuje ¿adne podstawienie.

Podstawianie wyników procesów (Process substitution)

Podstawianie wyników procesów obs³ugiwane jest na systemach obs³uguj±cych potoki nazwane (FIFO) lub metodê /dev/fd nazywania otwartych plików. Przybiera ono postaæ <(lista) lub >(lista). Proces lista uruchamiany jest z wej¶ciem i wyj¶ciem pod³±czonym do FIFO lub jakiego¶ pliku w /dev/fd. W wyniku interpretacji nazwa tego pliku przesy³ana jest jako argument bie¿±cego polecenia. Je¿eli pos³u¿ono siê postaci± >(lista), zapis do pliku bêdzie stanowiæ wej¶cie dla listy. Je¿eli pos³u¿ono siê postaci± <(lista), plik przekazany jako argument powinien zostaæ odczytany w celu uzyskania wyj¶cia listy.

Gdy jest to mo¿liwe, podstawianie wyników procesu wykonywane jest równocze¶nie z interpretacj± parametrów i zmiennych, podstawianiem wyników poleceñ i interpretacj± wyra¿eñ arytmetycznych.

Podzia³ na s³owa

Pow³oka przeszukuje wyniki interpretacji parametrów, podstawiania poleceñ i interpretacji wyra¿eñ arytmetycznych, które nie pojawiaj± siê wewn±trz cudzys³owów, w celu przeprowadzenia podzia³u na s³owa.

Pow³oka traktuje ka¿dy znak IFS jak separator i w miejscu ich wystêpowania dzieli na s³owa wyniki innych interpretacji. Je¿eli IFS nie jest ustawione lub jego warto¶ci± jest dok³adnie <spacja><tab><nowalinia>, warto¶æ domy¶lna, to do podzia³u na s³owa s³u¿y dowolna sekwencja znaków IFS. Je¿eli IFS posiada warto¶æ inn± ni¿ domy¶lna, to sekwencje bia³ych znaków spacji i tabulacji s± ignorowane na pocz±tku i koñcu s³owa, dopóki bia³y znak wystêpuje w warto¶ci IFS (bia³y znak IFS). Inne znaki w IFS nie bêd±ce bia³ymi znakami IFS, ³±cznie z dowolnymi przyleg³ymi bia³ymi znakami IFS, ograniczaj± pole. Sekwencja bia³ych znaków IFS jest równie¿ traktowana jako ogranicznik. Je¶li IFS jest ³añcuchem pustym, to nie wystêpuje podzia³ na s³owa.

Jawnie puste argumenty ("" lub '') s± pozostawiane. Niecytowane argumenty puste niejawnie, wynikaj±ce z interpretacji parametrów nie posiadaj±cych warto¶ci, s± usuwane. Je¶li parametr bez warto¶ci interpretowany jest wewn±trz cudzys³owów, to wynikiem jest argument pusty i jest on zachowywany.

Zauwa¿, ¿e je¶li nie wystêpuje interpretacja, to nie jest równie¿ wykonywany podzia³.

Rozwijanie nazw plików (Pathname Expansion)

Po podziale na s³owa, je¿eli nie ustawiona zosta³a opcja -f, przegl±da ka¿de s³owo w poszukiwaniu znaków *, ? i [. Je¶li pojawia siê jeden z nich, to s³owo uwa¿ane jest za wzorzec i zastêpowane jest posortowan± alfabetycznie list± nazw plików pasuj±cych do wzorca. Je¿eli nie znaleziono pasuj±cych nazw a wy³±czona jest opcja nullglob pow³oki, s³owo pozostawiane jest bez zmian. Je¿eli nullglob jest w³±czone, a nie znaleziono dopasowañ, to s³owo jest usuwane. Je¿eli w³±czona jest opcja nocaseglob pow³oki, to dopasowywanie wzorca wykonywane jest bez zwracania uwagi na wielko¶æ liter. Gdy do rozwiniêcia nazw plików u¿ywa siê wzorca, to znak ,,.'' na pocz±tku nazwy lub bezpo¶rednio po uko¶niku musi zostaæ dopasowany dos³ownie, chyba ¿e ustawiono opcjê dotglob pow³oki. Podczas dopasowywania nazwy pliku znak uko¶nika musi zawsze zostaæ dopasowany dos³ownie. W pozosta³ych przypadkach, kropka ,,.'' nie jest traktowana specjalnie. Zobacz poni¿ej opis shopt w sekcji WBUDOWANEPOLECENIAPOW£OKI, gdzie znajdziesz omówienie opcji pow³oki nocaseglob, nullglob i dotglob.

Do ograniczenia zestawu nazw plików pasuj±cych do wzorca mo¿na wykorzystaæ zmienn± pow³oki GLOBIGNORE. Je¿eli GLOBIGNORE jest ustawione, ka¿da z pasuj±cych nazw plików pasuj±ca równie¿ do jednego ze wzorców w GLOBIGNORE jest usuwana z listy dopasowañ. Nazwy plików ,,.'' i ,,..'' s± zawsze ignorowane, nawet gdy GLOBIGNORE jest ustawione. Jednak¿e, ustawienie GLOBIGNORE skutkuje w³±czeniem opcji dotglob, tak ¿e bêd± dopasowywane wszystkie inne nazwy plików rozpoczynaj±ce siê od kropki. W celu uzyskania starego zachowania, ignoruj±cego nazwy zaczynaj±ce siê ,,.'', jednym ze wzorców w GLOBIGNORE nale¿y zrobiæ ,,.*'' . Opcja dotglob jest wy³±czana, gdy kasowane jest GLOBIGNORE .

Dopasowanie wzorca

Ka¿dy znak pojawiaj±cy siê we wzorcu, ró¿nych od specjalnych znaków wzorca opisanych poni¿ej, dopasowuje sam siebie. Znak NUL nie mo¿e wyst±piæ we wzorcu. Specjalne znaki wzorca musz± byæ cytowane, je¿eli maj± byæ dopasowane dos³ownie.

Specjalne znaki wzorca maj± nastêpuj±ce znaczenie:

*
Dopasowuje dowolny ³añcuch, ³±cznie z ³añcuchem pustym.
?
Dopasowuje dowolny pojedynczy znak.
[...]
Dopasowuje jeden z ujêtych w nawiasy kwadratowe znaków. Para znaków rozdzielona my¶lnikiem opisuje wyra¿enie zakresu; dopasowywany jest nim dowolny znak, który przy sortowaniu leksykalnym, z zastosowaniem bie¿±cego ustawienia locale i zestawu znaków, wypada miêdzy tymi dwoma znakami, w³±cznie z nimi. Je¿eli pierwszym znakiem wystêpuj±cym po [ jest ! lub ^, to dopasowywany jest dowolny znak nie zawarty w nawiasach. Kolejno¶æ sortowania znaków w wyra¿eniach zakresu okre¶lona jest przez bie¿±ce ustawienie locale i warto¶æ zmiennej ¶rodowiskowej LC_COLLATE, je¶li istnieje. Znak - mo¿na dopasowaæ w³±czaj±c go jako pierwszy lub ostatni ze znaków zestawu. Znak ] mo¿na dopasowaæ w³±czaj±c go jako pierwszy znak zestawu.

Wewn±trz [ i ], mo¿na podawaæ klasy znaków (character classes), u¿ywaj±c sk³adni [:klasa:], gdzie klasa jest jedn± z poni¿szych klas zdefiniowanych w standardzie POSIX.2:

alnum alpha ascii blank cntrl digit graph lower print punct space upper xdigit
Klasa znaków dopasowuje dowolny znak nale¿±cy do tej klasy.

Wewn±trz [ i ], mo¿na podaæ klasê równowa¿no¶ci, u¿ywaj±c sk³adni [=z=], która dopasowuje wszystkie znaki o tej samej wadze sortowania (zdefiniowan± w bie¿±cym ustawieniu locale) co znak z.

Wewn±trz [ i ], sk³adnia [.symbol.] dopasowuje symbol sortowania (collating symbol) symbol.

Je¿eli przy pomocy wbudowanego shopt w³±czono opcjê extglob, to rozpoznawane jest kilka rozszerzonych operatorów dopasowania wzorców. W poni¿szym opisie, lista-wzorców jest list± z³o¿on± z jednego lub wiêcej wzorców rozdzielonych znakiem |. Wzorce z³o¿one mo¿na konstruowaæ przy pomocy jednego lub wiêcej poni¿szych pod-wzorców:

?(lista-wzorców)
Dopasowuje zero lub jedno wyst±pienie zadanych wzorców
*(lista-wzorców)
Dopasowuje zero lub wiêcej wyst±pieñ zadanych wzorców
+(lista-wzorców)
Dopasowuje jedno lub wiêcej wyst±pieñ zadanych wzorców
@(lista-wzorców)
Dopasowuje dok³adnie jeden z zadanych wzorców
!(lista-wzorców)
Dopasowuje cokolwiek prócz jednego z zadanych wzorców

Usuniêcie cytowañ

Po poprzednich interpretacjach, wszystkie niecytowane wyst±pienia znaków \, ' i ", które nie wynik³y z jednej z powy¿szych interpretacji, s± usuwane.

PRZEKIEROWANIE

Przed wykonaniem polecenia, jego wej¶cie i wyj¶cie mog± zostaæ przekierowane przy pomocy specjalnej notacji interpretowanej przez pow³okê. Przekierowañ mo¿na te¿ u¿ywaæ do otwierania i zamykania plików dla ¶rodowiska wykonywania bie¿±cej pow³oki. Poni¿sze operatory przekierowania mog± wystêpowaæ przed lub pojawiaæ siê gdziekolwiek wewn±trz polecenia prostego lub wystêpowaæ po poleceniu. Przekierowania przetwarzane s± w kolejno¶ci wystêpowania, od lewej do prawej.

W poni¿szych opisach, je¶li pominiêto deskryptor pliku, a pierwszym znakiem operatora przekierowania jest <, przekierowanie dotyczy standardowego wej¶cia (deskryptor pliku 0). Je¿eli pierwszym znakiem operatora przekierowania jest >, przekierowanie dotyczy standardowego wyj¶cia (deskryptor pliku 1).

S³owo nastêpuj±ce do operatorze przekierowania w poni¿szych opisach podlega, chyba ¿e podano inaczej, interpretacji nawiasów, interpretacji tyldy, interpretacji parametrów, podstawianiu wyników poleceñ, interpretacji wyra¿eñ arytmetycznych, usuwaniu cytowañ, rozwijaniu nazw plików i podzia³owi na s³owa. Je¶li zinterpretowane zostanie jako wiêcej ni¿ jedno s³owo, to bash zg³osi b³±d.

Zauwa¿, ¿e kolejno¶æ przekierowañ jest znacz±ca. Na przyk³ad, polecenie


ls > dirlist 2>&1

kieruje zarówno standardowe wyj¶cie jak i wyj¶cie diagnostyczne (stderr) do pliku dirlist, podczas gdy polecenie


ls 2>&1 > dirlist

kieruje tylko standardowe wyj¶cie do pliku dirlist, gdy¿ wyj¶cie b³êdów zosta³o zduplikowane jako standardowe wyj¶cie przed przekierowaniem wyj¶cia do dirlist.

Bash obs³uguje kilka nazw plików w sposób specjalny gdy s± one u¿yte w przekierowaniach. Opisano to w poni¿szej tablicy:


/dev/fd/fd
Je¿eli fd jest poprawn± liczb± ca³kowit±, to duplikowany jest deskryptor pliku fd.
/dev/stdin
Duplikowany jest deskryptor pliku 0.
/dev/stdout
Duplikowany jest deskryptor pliku 1.
/dev/stderr
Duplikowany jest deskryptor pliku 2.
/dev/tcp/host/port
Je¶li host jest poprawn± nazw± hosta lub adresem internetowym, a port jest liczb± ca³kowit± okre¶laj±c± numer portu lub nazw± us³ugi, to bash usi³uje otworzyæ po³±czenie TCP do odpowiedniego gniazda.
/dev/udp/host/port
Je¶li host jest poprawn± nazw± hosta lub adresem internetowym, a port jest liczb± ca³kowit± okre¶laj±c± numer portu lub nazw± us³ugi, to bash usi³uje otworzyæ po³±czenie UDP do odpowiedniego gniazda.

Nieudane otwarcie lub utworzenie pliku powoduje niepowodzenie przekierowania.

Przekierowanie wej¶cia

Przekierowanie wej¶cia powoduje otwarcie do odczytu pliku, którego nazwa wynika z interpretacji s³owa. Odczyt bêdzie wykonywany z deskryptora pliku n lub standardowego wej¶cia (zerowy deskryptor pliku) je¶li nie podano n.

Ogólny format przekierowania wej¶cia:


[n]<s³owo

Przekierowanie wyj¶cia

Przekierowanie wyj¶cia powoduje otwarcie do zapisu pliku, którego nazwa wynika z interpretacji s³owa. Zapis bêdzie wykonywany z deskryptora pliku n lub standardowego wyj¶cia (deskryptor pliku 1) je¶li nie podano n. Je¿eli plik nie istnieje jest tworzony; je¿eli istnieje obcinany jest do rozmiaru zerowego.

Ogólny format przekierowania wyj¶cia:


[n]>s³owo

Je¿eli operatorem przekierowania jest >, a zosta³a w³±czona opcja noclobber wbudowanego polecenie set, to przekierowanie nie powiedzie siê je¿eli plik o nazwie wynikaj±cej z interpretacji s³owa istnieje i jest zwyk³ym plikiem. Je¿eli operatorem przekierowania jest >|, albo operatorem jest > przy niew³±czonej opcji noclobber, to wykonywana jest próba przekierowania, nawet je¶li plik s³owo istnieje.

Do³±czanie przekierowanego wyj¶cia

Przekierowanie wyj¶cia w ten sposób powoduje, ¿e plik o nazwie wynikaj±cej z interpretacji s³owa zostanie otwarty do do³±czania (append). Do³±czanie bêdzie wykonywane z deskryptora pliku n lub standardowego wyj¶cia (deskryptor pliku 1) je¶li nie podano n. Je¿eli plik nie istnieje jest tworzony.

Ogólny format do³±czania wyj¶cia:


[n]>>s³owo

Przekierowanie standardowego wyj¶cia i wyj¶cia b³êdów

Bash pozwala, przy pomocy tej konstrukcji, przekierowaæ standardowe wyj¶cie (deskryptor pliku 1) i standardowe wyj¶cie b³êdów (deskryptor plików 2) do pliku, którego nazw± jest zinterpretowane s³owo.

Istniej± dwie postaci takiego przekierowania:


&>s³owo
i
>&s³owo

Spo¶ród nich, zalecan± jest pierwsza forma. Jest ona semantycznie równowa¿na


>s³owo 2>&1

Dokumenty w³±czone (Here Documents)

Ten typ przekierowania instruuje pow³okê, by czyta³a wej¶cie z bie¿±cego ¼ród³a a¿ do napotkania wiersza zawieraj±cego tylko s³owo (bez ¿adnych koñcz±cych odstêpów). Wszystkie wiersze przeczytane do tego momentu s± nastêpnie u¿ywane jako standardowe wej¶cie polecenia.

Format dokumentów w³±czonych jest nastêpuj±cy:



<<[-]s³owo

        dokument w³±czony

ogranicznik

Na s³owie nie jest wykonywana interpretacja parametrów, podstawiania wyników poleceñ, rozwijanie nazw plików ani interpretacja wyra¿eñ arytmetycznych. Je¿eli jakie¶ znaki w s³owie s± cytowane, to ogranicznik jest wynikiem usuniêcia cytowañ ze s³owa, a wiersze w dokumencie w³±czonym nie s± interpretowane. Je¿eli s³owo nie jest cytowane, wszystkie wiersze dokumentu w³±czonego podlegaj± interpretacji parametrów, podstawianiu poleceñ i interpretacji wyra¿eñ arytmetycznych. W tym ostatnim przypadku, sekwencja \<nowalinia> jest ignorowana, a do cytowania znaków \, $ i ` musi byæ u¿yte \.

Je¿eli operatorem przekierowania jest <<-, to wszystkie pocz±tkowe znaki tabulacji s± obcinane z wierszy wej¶ciowych i wiersza zawieraj±cego ogranicznik. Pozwala to na ustawienie naturalnych wciêæ dla dokumentów w³±czonych w skryptach pow³oki.

Powielanie deskryptorów plików

Operator przekierowania


[n]<&s³owo

s³u¿y do powielania deskryptorów plików wej¶ciowych. Je¿eli s³owo zinterpretowane zostanie jako jedna lub wiêcej cyfr, to deskryptor pliku oznaczony przez n czyniony jest kopi± tego deskryptora. Je¿eli cyfry w s³owie nie okre¶laj± otwartego dla wej¶cia deskryptora, pojawia siê b³±d przekierowania. Je¿eli s³owo zinterpretowane jest jako -, deskryptor pliku n jest zamykany. Je¿eli n nie zosta³o okre¶lone, to stosowane jest standardowe wej¶cie (deskryptor pliku 0).

Operator


[n]>&s³owo

podobnie, s³u¿y do powielania deskryptorów standardowego wyj¶cia. Je¿eli nie okre¶lono n, stosowane jest standardowe wyj¶cie (deskryptor pliku 1). Je¿eli cyfry w s³owie nie okre¶laj± deskryptora pliku otwartego do wyj¶cia, pojawia siê b³±d przekierowania. W przypadku specjalnym, je¿eli pominiêto n, a s³owo nie jest interpretowane jako jedna lub wiêcej cyfr, to przekierowywane s± standardowe wyj¶cie i standardowe wyj¶cie b³êdów, jak opisano poprzednio.

Otwieranie deskryptorów plików do odczytu i zapisu

Operator przekierowania


[n]<>s³owo

powoduje, ¿e plik o nazwie wynik³ej z interpretacji s³owa zostanie otwarty do odczytu i zapisu. Odczyt i zapis bêd± wykonywane z deskryptora pliku n lub standardowego wej¶cia (deskryptor pliku 0) je¶li nie podano n. Je¿eli plik nie istnieje jest tworzony.

ALIASY

Aliasy (czyli synonimy) pozwalaj± na zast±pienie s³owa ³añcuchem, gdy zostanie ono u¿yte jako pierwsze s³owo w poleceniu prostym. Pow³oka utrzymuje listê aliasów, które mog± byæ ustawiane i uniewa¿niane przy pomocy wbudowanych poleceñ alias i unalias (zobacz poni¿ej WBUDOWANEPOLECENIAPOW£OKI). Dla pierwszego s³owa ka¿dego polecenia, je¶li nie jest cytowane, nastêpuje sprawdzenie, czy posiada ono alias. Je¿eli tak, to s³owo to jest zastêpowane tekstem aliasu. Nazwa aliasu i zastêpuj±cy ja tekst mog± zawieraæ dowolne poprawne wej¶cie pow³oki, ³±cznie z metaznakami podanymi powy¿ej, z wyj±tkiem tego, ¿e nazwy aliasów nie mog± zawieraæ znaku równo¶ci =. Pierwsze s³owo tekstu zastêpuj±cego jest z kolei sprawdzane na aliasy, ale s³owo identyczne z interpretowanym w³a¶nie aliasem nie jest interpretowane powtórnie. Oznacza to, ¿e mo¿na mieæ alias ls do ls -F, na przyk³ad, a bash nie bêdzie usi³owa³ rekurencyjnie interpretowaæ zastêpuj±cego tekstu. je¿eli ostatnim znakiem warto¶ci aliasu jest odstêp, to nastêpne s³owo polecenia wystêpuj±ce po aliasie ma równie¿ sprawdzan± interpretacjê aliasów.

Aliasy s± tworzone i pokazywane poleceniem alias, a usuwane poleceniem unalias.

Nie ma ¿adnego mechanizmu pos³ugiwania siê argumentami w tek¶cie zastêpuj±cym. Je¶li potrzebne s± argumenty, powinna zostaæ u¿yta funkcja pow³oki (zobacz poni¿ej FUNKCJE).

Aliasy nie s± interpretowane, gdy pow³oka nie jest interaktywna, chyba ¿e ustawiono opcjê pow³oki expand_aliases przy pomocy shopt (zobacz opis shopt w sekcji WBUDOWANE POLECENIA POW£OKI poni¿ej).

Regu³y dotycz±ce definiowania i u¿ywania aliasów s± nieco zagmatwane. Bash zawsze czyta co najmniej jeden pe³ny wiersz z wej¶cia przed wykonaniem jakichkolwiek poleceñ tego wiersza. Aliasy interpretowane s± w czasie odczytu polecenia, nie podczas jego wykonywania. Z tego powodu, definicja aliasu wystêpuj±ca w tym samym wierszu, co inne polecenie nie zadzia³a a¿ do przeczytania nastêpnego wiersza wej¶cia. Na polecenia wystêpuj±ce po definicji aliasu, w tym samym wierszu, nowy alias nie ma wp³ywu. Zachowanie to ujawnia siê tak¿e podczas wykonywania funkcji. Aliasy interpretowane s± w czasie odczytu definicji funkcji, nie za¶ podczas jej wykonywania, gdy¿ sama definicja funkcji stanowi polecenie z³o¿one. W skutek tego aliasy zdefiniowane w funkcji nie s± dostêpne, a¿ do chwili po wykonaniu funkcji. Dla bezpieczeñstwa, zawsze umieszczaj definicje aliasów w odrêbnym wierszu i nie u¿ywaj alias w poleceniach z³o¿onych.

Prawie w ka¿dym zastosowaniu aliasy s± wyparte przez funkcje pow³oki.

FUNKCJE

Punkcja pow³oki, zdefiniowana jak opisano powy¿ej, w sekcji GRAMATYKAPOW£OKI, przechowuje szereg poleceñ do pó¼niejszego wykonania. Gdy nazwa funkcji pow³oki u¿ywana jest jako nazwa polecenia prostego, wykonywana jest lista poleceñ zwi±zanych z t± nazw± funkcji. Funkcje wykonywane s± w kontek¶cie bie¿±cej pow³oki; do ich interpretacji nie jest tworzony ¿aden nowy proces (zauwa¿ ró¿nicê w stosunku do wykonania skryptu pow³oki). Podczas wykonywania funkcji, przekazane jej argumenty staj± siê parametrami pozycyjnymi. Aktualizowany jest specjalny parametr #, tak by odzwierciedla³ zmianê. Parametr pozycyjny 0 nie jest zmieniany. Zmienna FUNCNAME podczas wykonywania funkcji ustawiana jest na jej nazwê. Wszystkie inne aspekty ¶rodowiska wykonywania pow³oki s± identyczne miêdzy funkcj± i jej wywo³uj±cym, z wyj±tkiem tego, ¿e nie jest dziedziczona pu³apka (trap) DEBUG (zobacz opis wbudowanego trap poni¿ej, w sekcji WBUDOWANE POLECENIA POW£OKI ).

Zmienne lokalne dla funkcji mog± byæ deklarowane przy pomocy wbudowanego polecenia local. Zwykle zmienne i ich warto¶ci s± wspólne dla funkcji i jej wo³aj±cego.

Je¿eli w funkcji wywo³ywane jest wbudowane polecenie return, funkcja koñczy dzia³anie i wykonywanie wznawiane jest od nastêpnego polecenia po wywo³aniu funkcji. Gdy funkcja koñczy dzia³anie, parametrom pozycyjnym i parametrowi specjalnemu # przywracane s± warto¶ci, jakie posiada³y one przed wykonaniem funkcji.

Listê nazw i definicji funkcji mo¿na uzyskaæ przy pomocy opcji -f wbudowanych poleceñ declare lub typeset. Opcja -F poleceñ declare lub typeset podaje same nazwy funkcji. Funkcje mo¿na eksportowaæ, tak ¿e bêd± one automatycznie zdefiniowane w podpow³okach. Wykonuje siê to przy pomocy opcji -f wbudowanego polecenia export.

Funkcje mog± byæ rekurencyjne. Nie ma narzuconego ograniczenia na liczbê rekurencyjnych wywo³añ.

OBLICZANIE WYRA¯EÑ ARYTMETYCZNYCH

Pow³oka pozwala, pod pewnymi warunkami, na obliczanie warto¶ci wyra¿eñ arytmetycznych (zobacz wbudowane polecenie let i Interpretacja wyra¿eñ arytmetycznych). Obliczenia wykonywane s± na d³ugich liczbach ca³kowitych (long integer), bez kontroli przepe³nienia (overflow), mimo i¿ dzielenie przez 0 jest przechwytywane i oznaczane jako b³±d. Operatory i ich priorytety oraz sposób ich do³±czania s± takie same jak w jêzyku C. Poni¿sza lista operatorów pogrupowana jest w poziomy operatorów o jednakowym priorytecie. Poziomy podano w kolejno¶ci malej±cego priorytetu.
id++ id--
post-inkrementacja i post-dekrementacja zmiennej
++id --id
pre-inkrementacja i pre-dekrementacja zmiennej
- +
jednoargumentowy minus i plus
! ~
negacja logiczna i bitowa
**
potêgowanie
* / %
mno¿enie, dzielenie, reszta z dzielenia
+ -
dodawanie, odejmowanie
<< >>
lewo i prawostronne przesuniêcie bitowe
<= >= < >
porównanie
== !=
równo¶ci i nierówno¶æ
&
bitowa koniunkcja (AND)
^
bitowa alternatywa wy³±czna (XOR)
|
bitowa alternatywa (OR)
&&
logiczna koniunkcja (AND)
||
logiczna alternatywa (OR)
wyra¿?wyra¿:wyra¿
obliczenie warunkowe (conditional evaluation)
= *= /= %= += -= <<= >>= &= ^= |=
przypisanie
wyra¿1 , wyra¿2
przecinek

Jako operandy dozwolone s± zmienne pow³oki; interpretacja parametrów przeprowadzana jest przed obliczeniem wyra¿enia. Wewn±trz wyra¿enia, do zmiennych pow³oki mo¿na siê te¿ odwo³ywaæ przez nazwê, bez u¿ycia sk³adni interpretacji parametrów. Gdy wyst±pi odwo³anie siê do zmiennej, jej warto¶æ obliczana jest jako wyra¿enie arytmetyczne. Zmienna pow³oki nie musi mieæ w³±czonego atrybutu liczby ca³kowitej by mog³a byæ u¿yta w wyra¿eniu.

Sta³e z pocz±tkowym 0 interpretowane s± jako liczby ósemkowe. Pocz±tkowe 0x lub 0X oznacza liczbê szesnastkow±. W pozosta³ych przypadkach liczby maj± postaæ [podstawa#]n, gdzie podstawajest liczb± dziesiêtn± pomiêdzy 2 a 64 reprezentuj±c± podstawê uk³adu pozycyjnego, za¶ n liczb± w uk³adzie o tej podstawie. Je¶li pominiêto podstawa#, to u¿ywana jest podstawa 10. Cyfry wiêksze ni¿ 9 reprezentowane s± przez ma³e litery, wielkie litery, @ i _, w tej kolejno¶ci. Je¿eli podstawa jest mniejsza b±d¼ równa 36, to do zapisu liczb pomiêdzy 10 a 35 mo¿na u¿ywaæ zamiennie ma³ych i wielkich liter.

Operatory interpretowane s± w kolejno¶ci priorytetu. Podwyra¿enia w nawiasach obliczane s± jako pierwsze i mog± uniewa¿niæ podane wy¿ej regu³y priorytetów.

WYRA¯ENIA WARUNKOWE

Wyra¿enia warunkowe u¿ywane s± przez polecenie z³o¿one [[ oraz polecenia wbudowane test i [ do testowania atrybutów pliku i wykonywania porównañ ³añcuchowych i arytmetycznych. Wyra¿enia z³o¿one s± z poni¿szych jedno- i dwuargumentowych sk³adowych. Je¶li który¶ z argumentów plikowych jednej z sk³adowych jest w postaci /dev/fd/n, to sprawdzany jest deskryptor pliku n. Je¿eli argument plik której¶ sk³adowej jest jednym z /dev/stdin, /dev/stdout lub /dev/stderr, to sprawdzany jest, odpowiednio, deskryptor 0, 1 lub 2.
-a plik
Prawda je¶li plik istnieje.
-b plik
Prawda je¶li plik istnieje i jest blokowym plikiem specjalnym.
-c plik
Prawda je¶li plik istnieje i jest znakowym plikiem specjalnym.
-d plik
Prawda je¶li plik istnieje jest katalogiem.
-e plik
Prawda je¶li plik istnieje.
-f plik
Prawda je¶li plik istnieje i jest plikiem zwyk³ym.
-g plik
Prawda je¶li plik istnieje i ma ustawiony bit set-group-id.
-h plik
Prawda je¶li plik istnieje i jest dowi±zaniem symbolicznym.
-k plik
Prawda je¶li plik istnieje i ma ustawiony bit ochrony (sticky bit).
-p plik
Prawda je¶li plik istnieje i jest potokiem nazwanym (FIFO).
-r plik
Prawda je¶li plik istnieje i daje siê czytaæ.
-s plik
Prawda je¶li plik istnieje i ma rozmiar wiêkszy ni¿ zero.
-t fd
Prawda je¶li deskryptor pliku fd jest otwarty i odnosi siê do terminala.
-u plik
Prawda je¶li plik istnieje i ma ustawiony bit set-user-id.
-w plik
Prawda je¶li plik istnieje i daje siê doñ zapisaæ.
-x plik
Prawda je¶li plik istnieje i jest wykonywalny.
-O plik
Prawda je¶li plik istnieje i jego w³a¶cicielem jest efektywny id u¿ytkownika.
-G plik
Prawda je¶li plik istnieje i jego w³a¶cicielem jest efektywny id grupy.
-L plik
Prawda je¶li plik istnieje i jest dowi±zaniem symbolicznym.
-S plik
Prawda je¶li plik istnieje i jest gniazdem.
-N plik
Prawda je¶li plik istnieje i byæ zmieniany od czasu ostatniego jego odczytu.
plik1 -nt plik2
Prawda je¶li plik1 jest nowszy (wed³ug daty modyfikacji) od pliku2.
plik1 -ot plik2
Prawda je¶li plik1 jest starszy ni¿ plik2.
plik1 -ef plik2
Prawda je¶li plik1 i plik2 maj± ten sam numer urz±dzenia i i-wêz³a.
-o nazwa_opcji
Prawda je¶li opcja pow³oki nazwa_opcji jest w³±czona. Zobacz zestawienie opcji w opisie opcji -o wbudowanego set, poni¿ej.
-z ³añcuch
Prawda je¶li d³ugo¶æ ³añcucha wynosi zero.
-n ³añcuch
³añcuch
Prawda je¶li ³añcuch ma d³ugo¶æ niezerow±.
³añcuch1 == ³añcuch2
Prawda je¶li ³añcuchy s± równe. Zamiast == mo¿na u¿yæ =.
³añcuch1 != ³añcuch2
Prawda je¶li ³añcuchy nie s± równe.
³añcuch1 < ³añcuch2
Prawda je¶li ³añcuch1 przy sortowaniu wystêpowa³by przed ³añcuchem2 wed³ug bie¿±cego ustawienia locale.
³añcuch1 > ³añcuch2
Prawda je¶li ³añcuch1 przy sortowaniu wystêpowa³by po ³añcuchu2 wed³ug bie¿±cego ustawienia locale.
arg1 OP arg2
OP jest jednym z -eq, -ne, -lt, -le, -gt lub -ge. Te arytmetyczne operatory dwuargumentowe zwracaj± prawdê je¶li arg1 jest odpowiednio równe (eq), nie równe (ne), mniejsze ni¿ (lt), mniejsze b±d¼ równe (le), wiêksze ni¿ (gt) lub wiêksze b±d¼ równe (ge) arg2. Arg1 i arg2 mog± byæ dodatnimi lub ujemnymi liczbami ca³kowitymi.

INTERPRETACJA POLECEÑ PROSTYCH

Gdy wykonywane jest polecenie proste, pow³oka wykonuje nastêpuj±ce interpretacje, przypisania i przekierowania, od lewej do prawej.
1.
S³owa oznaczone przez analizator sk³adni jako przypisania zmiennych (poprzedzaj±ce nazwê polecenia) i przekierowania zachowywane s± do pó¼niejszego przetworzenia.
2.
S³owa, nie bêd±ce przypisaniami zmiennych ani przekierowaniami s± interpretowane. Je¿eli po interpretacji pozostan± jakie¶ s³owa, to pierwsze z nich przyjmowane jest za nazwê polecenia a pozosta³e za argumenty.
3.
Wykonywane s± przekierowania, jak opisano powy¿ej w sekcji PRZEKIEROWANIE.
4.
W ka¿dym przypisaniu zmiennej tekst po znaku równo¶ci = podlega interpretacji tyldy, interpretacji parametrów, podstawianiu wyników poleceñ, interpretacji wyra¿eñ arytmetycznych i usuwaniu cudzys³owów, zanim zostanie przypisany do zmiennej.

Je¿eli nie otrzymano ¿adnej nazwy polecenia, to przypisania zmienncyh dotycz± ¶rodowiska aktualnej pow³oki. W przeciwnim razie, zmienne s± dodawane do ¶rodowiska wykonywanego polecenia i nie maj± wp³ywu na ¶rodowisko bie¿±cej pow³oki. je¿eli które¶ z przypisañ usi³uje nadaæ warto¶æ zmiennej read-only, pojawia siê b³±d, a polecenie koñczy pracê z niezerowym kodem.

Je¿eli nie otrzymano ¿adnej nazwy polecenia, wykonywane s± przekierowania, ale nie maj± one wp³ywu na bie¿±ce ¶rodowisko pow³oki. B³±d przekierowania powoduje, ¿e polecenie koñczy pracê z niezerowym kodem.

Je¿eli po interpretacji istnieje nazwa polecenia, to wykonywanie odbywa siê jak opisano poni¿ej. W przeciwnym wypadku, polecenie koñczy pracê. Je¿eli jednym z wykonanych kroków by³o podstawienie wyników polecenia, to zwracany kod zakoñczenia jest kodem ostatniego wykonanego podstawienia polecenia. Je¶li nie wyst±pi³o podstawianie poleceñ, to polecenie koñczy pracê z kodem zerowym.

WYKONYWANIE POLECEÑ

Po podziale polecenia na s³owa, je¶li jego wynikiem jest polecenie proste z opcjonaln± list± argumentów, podejmowane s± poni¿sze akcje.

Je¶li polecenie nie zawiera uko¶ników, pow³oka usi³uje je zlokalizowaæ. je¿eli istnieje funkcja pow³oki o tej nazwie, wywo³ywana jest ta funkcja, jak opisano powy¿ej w sekcji FUNKCJE. Je¿eli nazwa nie pasuje do funkcji, pow³oka szuka jej na li¶cie poleceñ wbudowanych. Je¿eli nie znaleziono pasuj±ce, to jest ono wywo³ywane.

Je¿eli nazwa nie jest ani funkcj± pow³oki ani poleceniem wbudowanym i nie zawiera uko¶ników, to bash przeszukuje ka¿dy element z PATH usi³uj±c znale¼æ katalog zawieraj±cy plik wykonywalny o takiej nazwie. Bash pos³uguje siê tablic± mieszaj±c± (hash table) do zapamiêtywania pe³nych nazw plików wykonywalnych (zobacz hash w WBUDOWANE POLECENIA POW£OKI poni¿ej). Pe³ne przeszukiwanie katalogów z PATH wykonywane jest tylko wtedy, gdy polecenia nie znaleziono w tablicy mieszaj±cej. Je¿eli poszukiwanie nie powiod³o siê, pow³oka wypisuje komunikat o b³êdzie i zwraca kod zakoñczenia równy 127.

Je¿eli poszukiwanie by³o pomy¶lne lub je¶li nazwa polecenia zawiera jeden lub wiêcej uko¶ników, pow³oka wykonuje zadany program w odrêbnym ¶rodowisku wykonania. Argumentowi 0 przypisywana jest podana nazwa, a pozosta³ym argumentom polecenia podane argumenty, je¶li by³y takowe.

Je¿eli wykonanie to nie powiedzie siê, gdy¿ plik nie ma formatu wykonywalnego, a nie jest katalogiem, to zak³ada siê, ¿e jest on skryptem pow³oki, plikiem zawieraj±cym polecenia pow³oki. Powo³ywana jest podpow³oka do jego wykonania. Pow³oka ta reinicjuje siê, zatem efekt jest taki, jakby do obs³ugi skryptu zosta³a wywo³ana nowa pow³oka, z wyj±tkiem tego, ¿e po³o¿enia poleceñ zapamiêtane przez rodzica (zobacz hash poni¿ej w WBUDOWANE POLECENIA POW£OKI s± zachowywane przez potomka.

Je¿eli program jest plikiem o zawarto¶ci rozpoczynaj±cej siê od #!, to reszta pierwszego wiersza okre¶la interpreter dla tego programu. Pow³oka uruchamia podany interpreter na systemach operacyjnych, które same nie obs³uguj± tego formatu wykonywalnego. Argumenty dla interpretera sk³adaj± siê z pojedynczego opcjonalnego argumentu wystêpuj±cego po nazwie interpretera w pierwszym wierszu programu, nastêpuj±cej po nim nazwy programu i nastêpuj±cych po niej argumentów polecenia, je¶li by³y takowe.

¦RODOWISKO WYKONYWANIA POLECEÑ

Pow³oka posiada ¶rodowisko wykonywania (execution environment), sk³adaj±ce siê z:
*
otwarte pliki odziedziczone przez pow³okê przy wywo³aniu, zmodyfikowane przez przekierowania przekazane do wbudowanego polecenia exec
*
bie¿±cy katalog roboczy ustawiony przez cd, pushd lub popd, albo odziedziczony przez pow³okê przy wywo³aniu
*
maskê trybut tworzonych plików ustawion± przez umask albo odziedziczon± po rodzicu pow³oki
*
bie¿±ce pu³apki ustawione przez trap
*
parametry pow³oki ustawione przez przypisania zmiennych przy pomocy set albo odziedziczone ze ¶rodowiska rodzica pow³oki
*
funkcje pow³oki zdefiniowane podczas wykonywania lub odziedziczone ze ¶rodowiska rodzica pow³oki
*
opcje w³±czone przy wywo³aniu (albo domy¶lnie albo przy pomocy argumentów wiersza poleceñ) albo przez set
*
opcje w³±czone przez shopt
*
aliasy pow³oki zdefiniowane przy pomocy alias
*
ró¿ne id procesów, ³±cznie z identyfikatorami zadañ t³a, warto¶æ $$ i warto¶æ $PPID

Gdy ma zostaæ wykonane polecenie proste inne ni¿ funkcja pow³oki lub polecenie wbudowane, wywo³ywane jest w odrêbnym ¶rodowisku wykonania, sk³±daj±cych siê z poni¿szych elementów. Je¶li nie podano inaczej, warto¶ci dziedziczone s± z pow³oki.

*
otwarte pliki pow³oki, plus modyfikacje i dodatki okre¶lone przez przekierowania polecenia
*
bie¿±cy katalog roboczy
*
maska trybu tworzonych plików
*
zmienne pow³oki oznaczone do wyeksportowania, razem ze zmiennymi wyeksportowanymi do polecenia, przekazane w ¶rodowisku.
*
pu³apki przechwycone przez pow³okê resetowane s± do warto¶ci odziedziczonych przez ni± od rodzica, a pu³apki ignorowane przez pow³okê s± ignorowane.

Polecenie wywo³ane w odrêbnym ¶rodowisku nie mo¿e wp³ywaæ na ¶rodowisko wykonywania pow³oki.

Podstawienia wyników poleceñ i polecenia asynchroniczne wywo³ywane s± w ¶rodowisku podpow³oki, które jest kopi± ¶rodowiska pow³oki, z wyj±tkiem tego, ¿e pu³apki przechwycone przez pow³okê s± resetowane do warto¶ci, jakie pow³oka odziedziczy³a po rodzicu podczas wywo³ania. Polecenia wbudowane wywo³ywane jako czê¶æ potoku równie¿ wykonywane s± w ¶rodowisku podpow³oki. Zmiany wykonane w ¶rodowisku podpow³oki nie mog± wp³ywaæ na ¶rodowisko wykonywania pow³oki.

Je¿eli po poleceniu wystêpuje &, a nie uaktywniono sterowania zadaniami, to domy¶lnym standardowym wej¶ciem dla tego polecenia jest pusty plik /dev/null. W przeciwnym razie wywo³ywane polecenie dziedziczy deskryptory plików po wo³aj±cej pow³oce, zmodyfikowane przekierowaniami.

¦RODOWISKO

Poczas wywo³ywania program otrzymuje tablicê ³añcuchów zwan± ¶rodowiskiem(environment). jest to lista par nazwa-warto¶æ, o postaci nazwa=warto¶æ.

Pow³oka pozwala na manipulowanie ¶rodowiskiem na kilka sposobów. Przy wywo³aniu, przeszukuje ona w³asne ¶rodowisko i tworzy parametr dla ka¿dej znalezionej nazwy, automatycznie zaznaczaj±c go do wyeksportowania do procesów potomnych. Wykonywane polecenia dziedzicz± ¶rodowisko. Polecenia export i declare -x pozwalaj± na dodawanie i usuwanie ze ¶rodowiska parametrów i funkcji. Je¿eli w ¶rodowisku zmieniana jest warto¶æ parametru, to nowa warto¶æ staje siê czê¶ci± ¶rodowiska, zastêpuj±c star±. ¦rodowisko dziedziczone przez ka¿de wykonywane polecenie sk³ada siê z pocz±tkowego ¶rodowiska pow³oki, którego warto¶ci mog± byæ w pow³oce zmieniane, minus ewentualne pary usuniête poleceniem unset, plus dodane poprzez polecenia export i declare -x.

¦rodowisko dla dowolnego polecenia prostego czy funkcji mo¿e byæ tymczasowo powiêkszone przez poprzedzenie polecenia przypisaniem parametrów, jak opisano powy¿ej w sekcji PARAMETRY. Te instrukcje przypisania maj± wp³yw wy³±cznie na ¶rodowisko postrzegane przez to polecenie.

Je¿eli ustawiona jest opcja -k (zobacz poni¿ej opis wbudowanego polecenia set), to wszystkie przypisania parametrów umieszczane s± w ¶rodowisku polecenia, a nie tylko te, które poprzedzaj± nazwê polecenia.

Gdy bash wywo³uje polecenie zewnêtrzne, zmienna _ ustawiana jest na pe³n± nazwê pliku polecenia i przekazywana temu poleceniu w jego ¶rodowisku.

KOD ZAKOÑCZENIA

Dla celów pow³oki, polecenie, które zakoñczy³o pracê z zerowym kodem zakoñczenia, powiod³o siê. Zerowy kod oznacza powodzenie. Niezerowy kod oznacza niepowodzenie. Gdy polecenie koñczy pracê z b³êdem krytycznym N, bash pos³uguje siê warto¶ci± 128+N jako kodem zakoñczenia.

Je¿eli nie znaleziono polecenia, proces potomny powo³any do jego wykonania zwraca kod 127. Je¿eli polecenie zosta³o znalezione, ale nie jest wykonywalne, kod zakoñczenia wynosi 126.

Je¿eli polecenie nie powiod³o siê z powodu b³êdu podczas interpretacji lub przekierowania, kod zakoñczenia jest wiêkszy od zera.

Wbudowane polecenia pow³oki zwracaj± kod 0 (true prawda) je¶li siê powiod³y, i niezerowy (false fa³sz) je¶li podczas ich wykonywania pojawi³ siê b³±d. Wszystkie polecenia wbudowane zwracaj± kod 2 dla wskazania niepoprawnego u¿ycia.

Sam Bash zwraca kod zakoñczenia ostatniego wykonanego polecenia, chyba ¿e pojawi siê b³±d sk³adni, wówczas koñczy prac± z warto¶ci± niezerow±. Zobacz te¿ poni¿ej polecenie wbudowane exit.

SYGNA£Y

Gdy bash jest interaktywny, przy braku jakichkolwiek pu³apek (przechwytywania sygna³ów), ignoruje on SIGTERM (tak, ¿e kill 0 nie zabija pow³oki interaktywnej), a SIGINT jest przechwytywany i obs³ugiwany (tak, ¿e wbudowane polecenie wait daje siê przerwaæ). We wszystkich przypadkach, bash ignoruje SIGQUIT. Je¿eli dzia³a kontrola zadañ, bash ignoruje SIGTTIN, SIGTTOU i SIGTSTP.

Zadania synchroniczne uruchomione przez bash maj± procedury obs³ugi sygna³ów (signal handlers) ustawione na warto¶ci odziedziczone przez pow³okê po rodzicu. Je¿eli nie pracuje kontrola zadañ, to polecenia asynchroniczne ignoruj± równie¿ SIGINT i SIGQUIT. Polecenia uruchamiane wskutek podstawiania poleceñ ignoruj± generowane z klawiatury sygna³y kontroli zadañ SIGTTIN, SIGTTOU i SIGTSTP.

Pow³oka domy¶lnie koñczy pracê po otrzymaniu SIGHUP. Przed zakoñczeniem, pow³oka interaktywna rozsy³a otrzymany SIGHUP do wszystkich zadañ, pracuj±cych lub zatrzymanych. Do zatrzymanych zadañ wysy³any jest SIGCONT by upewniæ siê, ¿e otrzymuj± SIGHUP. Chc±c unikn±æ wys³ania sygna³u przez pow³okê do konkretnego zadania, nale¿y usun±æ je z tablicy zadañ przy pomocy wbudowanego polecenia disown (zobacz poni¿ej WBUDOWANEPOLECENIAPOW£OKI) lub oznakowaæ, by nie otrzymywa³o SIGHUP, pos³uguj±c siê disown -h.

Je¿eli przy pomocy shopt zosta³a ustawiona opcja huponexit pow³oki, bash wysy³a SIGHUP do wszystkich zadañ, gdy koñczy pracê interaktywna pow³oka zg³oszeniowa.

Gdy bash podczas oczekiwania na ukoñczenie polecenia otrzymuje sygna³, dla którego ustawiono pu³apkê, pu³apka ta nie zostanie wykonana a¿ do zakoñczenia pracy polecenia. Gdy bash oczekuje na polecenie asynchroniczne za po¶rednictwem wbudowanego wait, odbiór sygna³u, dla którego ustawiono przechwytywanie spowoduje, ¿e wbudowane wait natychmiast skoñczy pracê z kodem wiêkszym od 128, po czym natychmiast zostanie wywo³ana pu³apka.

KONTROLA ZADAÑ

Kontrola zadañ odnosi siê do mo¿liwo¶ci selektywnego zatrzymywania (zawieszania - suspend) wykonywania procesów i pó¼niejszej kontynuacji (wznawiania - resume) ich wykonywania. U¿ytkownik zwykle wykorzystuje to udogodnienie za po¶rednictwem interaktywnego interfejsu obs³ugiwanego wspólnie przez systemowy sterownik terminala i bash.

Pow³oka kojarzy z ka¿dym potokiem zadanie. Przechowuje tablicê aktualnie wykonywanych zadañ, któr± mo¿na przegl±daæ za pomoc± polecenia jobs. Gdy bash uruchamia zadanie asynchronicznie (w tle), wypisuje wiersz w rodzaju:


[1] 25647

wskazuj±cy, ¿e zadanie to ma numer 1 a ID ostatniego procesu w potoku zwi±zanym z zadaniem wynosi 25647. Wszystkie procesy w jednym potoku nale¿± do tego samego zadania. Bash pos³uguje siê abstrakcj± (abstraction) zadania jako podstaw± kontroli zadañ.

Dla u³atwienia implementacji interfejsu u¿ytkownika do kontroli zadañ, system operacyjny utrzymuje pojêcie ID grupy procesów bie¿±cego terminala (current terminal process group ID). Elementy tej grupy procesów (procesy, których ID grupy procesów jest równy ID grupy procesów bie¿±cego terminala) otrzymuj± generowane z klawiatury sygna³y, takie jak SIGINT. Mówimy, ¿e procesy te pracuj± pierwszoplanowo. Procesy t³a to takie, których ID grupy procesów ró¿ni siê od terminala; procesy takie s± odporne na sygna³y pochodz±ce z klawiatury. Tylko procesom pierwszoplanowym wolno czytaæ z lub pisaæ na terminalu. Do procesów t³a usi³uj±cych czytaæ (pisaæ) z terminala wysy³any jest przez sterownik terminala sygna³ SIGTTIN(SIGTTOU), który, je¶li nie zostanie przechwycony, wstrzymuje proces.

Je¿eli system operacyjny, na którym dzia³a bash obs³uguje kontrolê zadañ, bash zawiera funkcje do jej wykorzystywania. Naci¶niêcie klawisza wstrzymania (zwykle ^Z, Control-Z) podczas pracy procesu powoduje, ¿e proces ten zostanie zatrzymany a sterowanie zostanie zwrócone do bash. Naci¶niêcie klawisza opó¼nione wstrzymanie (zwykle ^Y, Control-Y) powoduje, ¿e proces zostanie zatrzymywany gdy bêdzie usi³owa³ czytaæ wej¶cie z terminala, a sterowanie powróci do bash. U¿ytkownik mo¿e nastêpnie zmieniaæ stan takiego zadania, pos³uguj±c siê poleceniem bg do kontynuacji zadania w tle, fg do kontynuacji na pierwszym planie lub poleceniem kill do zabicia zadania. ^Z dzia³a natychmiast i ma efekt uboczny: powoduje odrzucenie oczekuj±cego wyj¶cia i wprowadzonych, a nieprzetworzonych naci¶niêæ klawiszy (typeahead).

Istnieje kilka sposobów wskazywania zadania w pow³oce. Znak % poprzedza nazwê zadania. Zadanie numer n mo¿na wskazaæ jako %n. Zadanie mo¿e byæ te¿ okre¶lone przez u¿ycie przedrostka nazwy u¿ytej do jego uruchomienia lub pod³añcucha, jaki wystêpuje w jego wierszu poleceñ. Na przyk³ad, %ce odnosi siê do zatrzymanego zadania ce. Je¶li przedrostek pasuje do wiêcej ni¿ jednego zadania, bash zg³asza b³±d. Z drugiej strony, u¿ycie %?ce, wskazuje na zadanie zawieraj±ce pod³añcuch ce w swym wierszu poleceñ. Je¿eli ³añcuch pasuje do wiêcej ni¿ jednego zadania, bash zg³asza b³±d. Symbole %% i %+ okre¶laj± rozumiane przez pow³okê bie¿±ce zadanie, bêd±ce ostatnim zadaniem zatrzymanym, gdy by³o na pierwszym planie lub uruchomionym w tle. Do poprzedniego zadania mo¿na odwo³ywaæ siê przy pomocy %-. W wyj¶ciu odnosz±cym siê do zadañ (np. wyj¶cie polecenia jobs), bie¿±ce zadanie jest zawsze zaznaczone znakiem +, a zadanie poprzednie -.

Do przywrócenia zadania na pierwszy plan mo¿na pos³u¿yæ siê po prostu jego nazw±: %1 jest synonimem dla ,,fg %1'', przywracaj±cego zadanie 1 z t³a na pierwszy plan. Podobnie, ,,%1 &'' wznawia zadanie 1 w tle, równowa¿nie do ,,bg %1''''.

Pow³oka natychmiast dowiaduje siê czy zadanie zmieni³o stan. Normalnie, bash czeka ze zg³oszeniem zmian do momentu, gdy ma wy¶wietliæ zachêtê, by nie przerywaæ innego wyj¶cia. Je¿eli w³±czono opcjê -b wbudowanego polecenia set, bash zg³asza takie zmiany natychmiast. Dla ka¿dego koñcz±cego pracê procesu potomnego wykonywana jest ewentualna pu³apka przechwytuj±ca SIGCHLD.

Je¿eli wykonano próbê zakoñczenia pracy bash przy istniej±cych zatrzymanych zadaniach, pow³oka wypisuje komunikat ostrzegawczy. Mo¿na wówczas pos³u¿yæ siê poleceniem jobs do sprawdzenia ich stanu. Je¿eli wykonywana jest druga próba zakoñczenia pracy bez wyst±pienia wtr±conego miêdzy nie polecenia, pow³oka nie wypisuje kolejnego ostrze¿enia a zatrzymane zadania s± przerywane.

ZACHÊTA POW£OKI

Przy wykonywaniu interaktywnym bash wy¶wietla g³ówny symbol zachêty (primary prompt) PS1 kiedy jest gotowa na odczyt polecenia, za¶ wtórn± (secondary) zachêtê PS2 kiedy potrzebuje wiêcej danych z wej¶cia do uzupe³nienia polecenia. Bash pozwala na dostosowywanie tych ³añcuchów zachêty poprzez wstawianie pewnej ilo¶ci znaków specjalnych rozpoczynaj±cych siê odwrotnym uko¶nikiem, które s± dekodowane jak nastêpuje:
\a
znak dzwonka ASCII (07)
\d
data w formacie "DzieñTyg Miesi±c Dzieñ" format (np., "Tue May 26")
\e
znak escape ASCII (033)
\h
nazwa hosta do pierwszej kropki `.'
\H
nazwa hosta
\j
liczba zadañ aktualnie obs³ugiwanych przez pow³okê
\l
g³ówna czê¶æ nazwy urz±dzenia terminala pow³oki
\n
znak nowej linii
\r
powrót karetki
\s
nazwa pow³oki, g³ówna czê¶æ nazwy $0 (fragment wystêpuj±cy po ostatnim uko¶niku)
\t
bie¿±cy czas w formacie 24-godzinnym GG:MM:SS
\T
bie¿±cy czas w formacie 12-godzinnym GG:MM:SS
\@
bie¿±cy czas w 12-godzinnym formacie am/pm
\A
bie¿±cy czas w 24-godzinnym formacie GG:MM
\u
nazwa bie¿±cego u¿ytkownika (username)
\v
wersja programu bash (np. 2.00)
\V
wydanie bash, wersja+poziom ³at (np., 2.00.0)
\w
bie¿±cy katalog roboczy
\W
g³ówna czê¶æ nazwy bie¿±cego katalogu roboczego
\!
numer tego polecenia w historii
\#
numer polecenia tego polecenia
\$
Je¿eli efektywnym UID jest 0, to #, w przeciwnym razie $
\nnn
znak odpowiadaj±cy szesnastkowej liczbie nnn
\\
odwrotny uko¶nik
\[
pocz±tek sekwencji znaków niedrukowalnych, która mo¿e s³u¿yæ do osadzenia w zachêcie sekwencji steruj±cych terminalem
\]
koniec sekwencji znaków niedrukowalnych

Numer polecenia i numer w historii s± zwykle ró¿ne: numer polecenia w historii jest jego pozycj± na li¶cie historii, która mo¿e obejmowaæ polecenia odtworzone z pliku historii (zobacz poni¿ej HISTORIA), podczas gdy numer polecenia jest pozycj± w sekwencji poleceñ wykonanych w obecnej sesji pow³oki. Po zdekodowaniu, ³añcuch jest interpretowany poprzez interpretacjê parametrów, podstawianie wyników poleceñ, interpretacjê wyra¿eñ arytmetycznych, interpretacjê ³añcuchów i usuwanie cytowañ, zgodnie z warto¶ci± opcji promptvars pow³oki (zobacz opis polecenia shopt w sekcji WBUDOWANE POLECENIA POW£OKI poni¿ej).

READLINE

Jest to biblioteka obs³uguj±ca odczytywanie wej¶cia podczas pos³ugiwania siê pow³ok± interaktywn±, chyba ¿e przy wywo³aniu pow³oki podano opcjê --noediting. Domy¶lnie, polecenia edycji wiersza s± podobne do wystêpuj±cych w emacsie. Dostêpny jest tak¿e interfejs edycji wiersza w stylu vi. By wy³±czyæ edycjê wiersza po uruchomieniu pow³oki, u¿yj opcji +o emacs lub +o vi wbudowanego polecenia set (zobacz WBUDOWANE POLECENIA POW£OKI poni¿ej).

Notacja Readline

W tej sekcji, do zapisu naci¶niêæ klawiszy u¿ywana jest notacja w stylu emacsa. Klawisze kontrolne zapisywane s± jako C-klawisz, np., C-n oznacza Control-N. Podobnie, meta klawisze zapisywane s± jako M-klawisz, zatem M-x oznacza Meta-X. (Na klawiaturach bez klawisza meta M-x oznacza ESC x, tj. naci¶nij klawisz Escape a nastêpnie klawisz x. Czyni to ESC the przedrostkiem meta (meta prefix). Kombinacja M-C-x oznacza ESC-Control-x, lub naci¶nij klawisz Escape, nastêpnie przytrzymaj klawisz Control podczas naciskania klawisza x.)

Poleceniom readline mo¿na podawaæ numeryczne argumenty, które normalnie dzia³aj± jako licznik powtórzeñ. Czasami jednak, znacz±cy jest znak argumentu. Przekazanie ujemnego argumentu poleceniu, które dzia³a w przód (np. kill-line) powoduje, ¿e bêdzie ono dzia³aæ odwrotnym kierunku (wstecz). Polecenia, których zachowanie z argumentami odbiega od podanego odnotowano poni¿ej.

Gdy polecenie opisano jako usuwaj±ce (killing) tekst, tekst ten jest zachowywany to ewentualnego pó¼niejszego odzyskania (przywo³ania yanking). Kolejne usuniêcia powoduj±, ¿e tekst jest zbierany w jedn± ca³o¶æ, któr± mo¿na odzyskaæ naraz. Polecenia nie usuwaj±ce tekstu oddzielaj± kawa³ki tekstu w stosie usuwania (killing ring).

Inicjalizacja Readline

Readline dostosowywane jest przy pomocy poleceñ umieszczanych w pliku inicjuj±cym (plik inputrc). Nazwa tego pliku brana jest z warto¶ci zmiennej INPUTRC. Je¿eli zmienna ta nie jest ustawiona, domy¶ln± nazw± jest ~/.inputrc. Gdy startuje program u¿ywaj±cy biblioteki readline, odczytywany jest plik inicjuj±cy, po czym ustawiane s± przypisania klawiszy i zmienne. Istnieje tylko kilka podstawowych konstrukcjii dozwolonych w pliki inicjacji readline. Puste wiersze s± ignorowane. Wiersze rozpoczynaj±ce siê od # s± komentarzami. Wiersze rozpoczynaj±ce siê od $ wskazuj± konstrukcje warunkowe. Inne wiersze wyznaczaj± przypisania klawiszy i ustawienia zmiennych.

Domy¶lne przypisania klawiszy mo¿na zmieniæ przy pomocy pliku inputrc. Inne programy pos³uguj±ce siê t± bibliotek± mog± dodawaæ w³asne polecenia i przypisania.

Na przyk³ad, umieszczenie


M-Control-u: universal-argument
lub
C-Meta-u: universal-argument
w inputrc spowodowa³oby, ¿e M-C-u wywo³ywa³oby polecenie readline universal-argument.

Rozpoznawane s± nastêpuj±ce symboliczne nazwy znaków: RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE i TAB.

Oprócz nazw poleceñ readline pozwala przypisywaæ klawisze do ³añcucha. £añcuch ten zostanie wstawiony po naci¶niêciu klawisza (makro).

Przypisania klawiszy Readline

Sk³adnia przypisañ klawiszy steruj±cych w pliku inputrc jest prosta. Wymagana jest wy³±cznie nazwa polecenia lub tekst makra i sekwencja klawiszy, do której powinno byæ przypisane. Klawisze mog± byæ podane na dwa sposoby: jako symboliczna nazwa klawisza, mo¿e byæ z przedrostkami Meta- lub Control-, lub jako sekwencja klawiszy.

Przy u¿yciu postaci nazwa-klaw:nazwa-funkcji lub makro, nazwa-klaw jest nazw± klawisza zapisan± w jêz.angielskim. Na przyk³ad:

Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"

W powy¿szym przyk³adzie, C-u przypisane jest do funkcji universal-argument, M-DEL przypisane jest do funkcji backward-kill-word a C-o przypisane do uruchamiania makra wyra¿onego po prawej (to jest, wstawiania tekstu ,,> output'' w wiersz).

W drugiej postaci, "sekw-klaw":nazwa-funkcji lub makro, sekw-klaw ró¿ni siê od nazwa-klaw powy¿ej tym, ¿e przez umieszczenie sekwencji w cudzys³owach mo¿na podaæ ³añcuchy oznaczaj±ce ca³± sekwencjê klawiszy. Mo¿na pos³u¿yæ siê niektórymi kombinacjami klawiszy w stylu GNU Emacs-a, jak w poni¿szym przyk³adzie, nie s± jednak rozpoznawane symboliczne nazwy znaków:

"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Klawisz funkcyjny 1"

W tym przyk³adzie, C-u jest ponownie przypisane do funkcji universal-argument. C-x C-r przypisane jest do funkcji re-read-init-file, za¶ ESC [ 1 1 ~ przypisane jest do wstawienia tekstu ,,Klawisz funkcyjny 1''. Oto pe³ny zestaw sekwencji specjalnych w stylu GNU Emacs

\C-
przedrostek control
\M-
przedrostek meta
\e
znak escape
\\
odwrotny uko¶nik
\
dos³owny cudzys³ów "
\'
dos³owny apostrof '

Oprócz sekwencji specjalnych w stylu GNU Emacsa, dostêpny jest drugi zestaw sekwencji z u¿yciem odwrotnego uko¶nika:

\a
alarm (dzwonek)
\b
backspace
\d
delete
\f
wysuw strony (form feed)
\n
nowa linia (newline)
\r
powrót karetki (carriage return)
\t
tabulacja pozioma (horizontal tab)
\v
tabulacja pionowa (vertical tab)
\nnn
o¶miobitowy znak, którego warto¶ci± jest ósemkowa liczba nnn (jedna do trzech cyfr)
\xHH
o¶miobitowy znak, którego warto¶ci± jest szesnastkowa liczba nnn (jedna lub dwie cyfry szesnastkowe)

Podczas wprowadzania tekstu makra, do wskazania jego definicji musz± byæ u¿yte pojedyncze lub podwójne cudzys³owy. Zak³ada siê, ¿e tekst niecytowany jest nazw± funkcji. W ciele makra interpretowane s± sekwencje specjalne z u¿yciem odwrotnego uko¶nika opisane powy¿ej. odwrotny uko¶nik cytuje dowolny inny znak w tek¶cie makra, ³±cznie z " i '.

Bash umo¿liwia wy¶wietlanie i zmianê bie¿±cych przypisañ klawiszy readline za pomoc± wbudowanego polecenia bind. Tryb edycji mo¿na prze³±czaæ podczas u¿ywania interaktywnego przez pos³u¿enie siê opcj± -o wbudowanego polecenia set (zobacz poni¿ej WBUDOWANEPOLECENIAPOW£OKI).

Zmienne Readline

Readline posiada zmienne, których mo¿na u¿ywaæ do dodatkowego dostosowania jej zachowania. Zmienna mo¿e byæ ustawiana w pliku inputrc przy pomocy instrukcji postaci


set nazwa-zmiennej warto¶æ

Z wymienionymi ni¿ej wyj±tkami, zmienne readline mog± przyjmowaæ warto¶ci On lub Off. A oto zmienne i ich warto¶ci domy¶lne:

bell-style (audible)
Kontroluje, co dzieje siê gdy readline chce u¿yæ sygna³u d¼wiêkowego terminala. Je¶li ustawiona na none, readline nigdy nie emituje sygna³u. Je¶li ustawiona na visible, readline pos³uguje siê "widzialnym dzwonkiem" (visible bell), je¶li jest dostêpny. Je¿eli ustawiona na audible, readline usi³uje uzyskaæ sygna³ d¼wiêkowy z terminala.
comment-begin (,,#'')
£añcuch wstawiany, gdy wykonywane jest polecenie insert-comment readline. Polecenie to jest przypisane do M-# w trybie emacs, za¶ do # w trybie vi.
completion-ignore-case (Off)
Je¿eli ustawiona na On, readline wykonuje dopasowywanie i uzupe³nianie nazw plików bez rozró¿niania wielko¶ci liter.
completion-query-items (100)
Okre¶la, kiedy u¿ytkownik jest pytany o ogl±danie takiej liczby mo¿liwych uzupe³nieñ tworzonych przez polecenie possible-completions. Mo¿e byæ ustawiona na dowoln± liczbê ca³kowit± wiêksz± lub równ± zero. Je¿eli liczba mo¿liwych uzupe³nieñ jest wiêksza b±d¼ równa warto¶ci tej zmiennej, to u¿ytkownik jest pytany czy chce je ogl±dn±æ; w przeciwnym razie s± one po prostu pokazywane na terminalu.
convert-meta (On)
Je¶li ustawione na On, readline bêdzie zamienia³ znaki z ustawionym ósmym bitem na sekwencje klawiszy ASCII przez obciêcie ósmego bitu i poprzedzenie znakiem escape (w efekcie, u¿ywaj±c escape jako przedrostka meta).
disable-completion (Off)
Je¶li ustawione na On, readline zabroni uzupe³niania s³ów. Znaki uzupe³niania zostan± wstawione w wiersz tak, jakby zosta³y przypisane do self-insert.
editing-mode (emacs)
Kontroluje czy readline rozpoczyna pracê z zestawem przypisañ klawiszy podobnym do emacs czy do vi. editing-mode mo¿e byæ ustawiane albo na emacs albo na vi.
enable-keypad (Off)
Gdy jest ustawione na On, readline bêdzie usi³owaæ w³±czyæ numeryczny blok klawiatury (application keypad) przy wywo³aniu. Niektóre systemy potrzebuj± tego do w³±czenia klawiszy strza³ek.
expand-tilde (Off)
Je¿eli ustawione na on, podczas próby uzupe³niania s³ów readline wykonuje interpretacjê tyldy.
history-preserve-point
Ustawione na on powoduje, ¿e kod obs³ugi historii poleceñ usi³uje w ka¿dym wierszu poleceñ odzyskanym za pomoc± previous-history lub next-history umie¶ciæ punkt (bie¿±c± pozycjê kursora) w tym samym miejscu.
horizontal-scroll-mode (Off)
Ustawione na On powoduje, ¿e readline do wy¶wietlania pos³uguje siê pojedynczym wierszem. Je¶li wej¶cie jest d³u¿sze ni¿ szeroko¶æ ekranu, to jego zawarto¶æ jest wówczas przewijana w poziomie w pojedynczym wierszu ekranu, zamiast zawijania do nastêpnego wiersza.
input-meta (Off)
Je¶li ustawiona na On, readline dopu¶ci o¶miobitowe wej¶cie (to znaczy, nie bêdzie obcinaæ ósmego bitu z odczytywanych znaków), bez wzglêdu na to, co twierdzi terminal o mo¿liwo¶ci obs³ugi. Nazwa meta-flag jest synonimem tej zmiennej.
isearch-terminators (,,C-[C-J'')
£añcuch znaków, który powinien przerywaæ wyszukiwanie krokowe (incremental search) bez pó¼niejszego wykonywania znaku jako polecenia. Je¿eli zmiennej tej nie nadano warto¶ci, to wyszukiwanie krokowe bêd± przerywaæ ESC i C-J.
keymap (emacs)
Ustawia bie¿±ce mapowanie klawiatury readline. Zestawami poprawnych mapowañ s± emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-command i vi-insert. vi jest równowa¿nikiem dla vi-command; emacs jest równowa¿ne emacs-standard. Domy¶ln± warto¶ci± jest emacs; warto¶æ editing-mode równie¿ wp³ywa na domy¶lne mapowanie.
mark-directories (On)
Je¿eli ustawione na On, to uzupe³niane nazwy katalogów maj± do³±czany koñcowy uko¶nik.
mark-modified-lines (Off)
Je¿eli ustawione na On, wiersze historii, które zosta³y zmienione wy¶wietlane s± z poprzedzaj±c± je gwiazdk± (*).
match-hidden-files (On)
Ta zmienna, gdy jest ustawiona na On, powoduje, ¿e readline wykonuj±c uzupe³nianie nazw plików dopasowuje pliki, których nazwy zaczynaj± siê od kropki `.' (pliki ukryte), chyba ¿e u¿ytkownik poda³ tak± pocz±tkow± kropkê w nazwie, jaka ma byæ uzupe³niona.
output-meta (Off)
Je¿eli ustawione na On, readline wy¶wietla znaki z ustawionym ósmym bitem wprost zamiast jako sekwencje specjalne z meta-przedrostkiem.
print-completions-horizontally (Off)
Je¿eli ustawione na On, readline wy¶wietla dopasowane uzupe³nienia w kolejno¶ci alfabetycznej poziomo, zamiast w dó³ ekranu.
show-all-if-ambiguous (Off)
Zmienia to domy¶lne zachowanie funkcji uzupe³niania. Je¿eli jest ustawione na on, to s³owa maj±ce wiêcej ni¿ jedno mo¿liwe uzupe³nienie powoduj±, ¿e natychmiast zostan± podane dopasowania zamiast wyemitowania sygna³u d¼wiêkowego.
visible-stats (Off)
Je¿eli ustawione na On, to przy wy¶wietlaniu mo¿liwych uzupe³nieñ do nazwy pliku zostanie do³±czony znak okre¶laj±cy typ pliku wskazywany przez stat(2).

Konstrukcje warunkowe Readline

Readline implementuje udogodnienie podobne duchem do funkcji kompilacji warunkowej preprocesora C, pozwalaj±ce na wykonywanie przypisañ klawiszy i ustawieñ zmiennych w zale¿no¶ci od wyniku testów. U¿ywane s± cztery dyrektywy analizatora sk³adni.

$if
Konstrukcja $if pozwala na wykonanie przypisañ klawiszy w oparciu o tryb edycji, u¿ywany terminal lub aplikacjê korzystaj±c± z readline. Tekst testu rozci±ga siê do koñca wiersza; do jego wydzielenia nie s± wymagane ¿adne znaki.
mode
Postaæ mode= dyrektywy $if s³u¿y do sprawdzania czy readline jest w trybie emacs czy vi. Mo¿e byæ wykorzystywana, na przyk³ad, w po³±czeniu z poleceniem set keymap, do ustawienia przypisañ w mapowaniach emacs-standard i emacs-ctlx tylko je¶li readline uruchamia siê w trybie emacs.
term
Postaæ term= mo¿na wykorzystywaæ do w³±czenia specyficznych dla terminala przypisañ klawiszy, byæ mo¿e do przypisania wyj¶cia dla sekwencji klawiszy funkcyjnych terminala. S³owo po prawej stronie = sprawdzane jest z zarówno pe³n± nazw± terminala, jaki i czê¶ci± jego nazwy przed pierwszym -. Umo¿liwia to, na przyk³ad, dopasowanie przez sun zarówno sun jak i sun-cmd.
aplikacja
Konstrukcja aplikacja s³u¿y do w³±czania ustawieñ specyficznych dla aplikacji. Ka¿dy program korzystaj±cy z biblioteki readline ustawia nazwê aplikacji (application name), a plik inicjuj±cy mo¿e sprawdziæ czy ma ona jak±¶ szczególn± warto¶æ. Mo¿e to byæ u¿ywane do przypisywania sekwencji klawiszy funkcjom przydatnym w danym programie. Na przyk³ad, poni¿sze polecenie dodaje sekwencjê klawiszy wykonuj±c± w bash cytowanie bie¿±cego lub poprzedniego s³owa:

$if Bash

# Cytuj bie¿±ce lub poprzednie s³owo

"\C-xq": "\eb\"\ef\""

$endif

$endif
Polecenie to, jak widaæ w poprzednim przyk³adzie, koñczy wykonywanie polecenia $if.
$else
Polecenia w tej ga³êzi dyrektywy $if wykonywane s± gdy nie powiedzie siê sprawdzenie warunku.
$include
Dyrektywa ta pobiera jako argument pojedyncz± nazwê pliku i odczytuje polecenia i przypisania z tego pliku. Na przyk³ad, poni¿sza dyrektywa odczyta³aby /etc/inputrc:

$include  /etc/inputrc

Wyszukiwanie

Readline zapewnia polecenia do wyszukiwania w historii poleceñ (zobacz poni¿ej HISTORIA) wierszy zawieraj±cych zadany ³añcuch. Istniej± dwa tryby wyszukiwania: krokowy (incremental) i nie-niekrokowy(non-incremental).

Wyszukiwania krokowe rozpoczynaj± siê przed zakoñczeniem wpisywania przez u¿ytkownika szukanego tekstu. Po wpisaniu ka¿dego znaków szukanego ³añcucha readline wy¶wietla nastêpn± pozycjê historii pasuj±c± do wpisanego do tej pory ³añcucha. Wyszukiwanie krokowe wymaga tylko tylu znaków ile potrzebne jest do znalezienia po¿±danej pozycji historii. Znaki wystêpuj±ce w warto¶ci zmiennej isearch-terminators s³u¿± do przerwania wyszukiwania krokowego. Je¿eli zmienna ta nie ma przypisanej warto¶ci, to wyszukiwanie przerywaj± znaki Escape i Control-J. Control-G porzuca wyszukiwanie krokowe i przywraca pierwotny wiersz. Gdy przerwie siê wyszukiwanie, pozycja historii zawieraj±ca poszukiwany ³añcuch staje siê bie¿±cym wierszem.

W celu odnalezienia innych pasuj±cych pozycji, nale¿y nacisn±æ odpowiednio Control-S lub Control-R. Wyszukuje to wstecz lub w przód kolejn± pasuj±c± do dotychczas wpisanego ³añcucha pozycjê historii. Wszystkie inne sekwencje klawiszy przypisane do polecenia readline przerywaj± wyszukiwanie i wykonuj± zadane polecenie. Na przyk³ad, znak nowej linii przerywa wyszukiwanie i akceptuje wiersz, wykonuj±c skutkiem tego polecenie z listy historii.

Readline pamiêta ³añcuch u¿yty w ostatnim wyszukiwaniu krokowym. Je¿eli Control-R zostanie naci¶niête dwa razy, bez wprowadzenia pomiêdzy naci¶niêciami innych znaków definiuj±cych nowy ³añcuch szukania, to wykorzystywany jest uprzednio zapamiêtany ³añcuch.

Wyszukiwania nie-krokowe czytaj± ca³y szukany ³añcuch przed rozpoczêciem wyszukiwania pasuj±cych wierszy historii. £añcuch mo¿e byæ wpisany przez u¿ytkownika lub byæ czê¶ci± zawarto¶ci bie¿±cego wiersza.

Nazwy poleceñ Readline

Poni¿ej podano listê nazw poleceñ i domy¶lnych sekwencji klawiszy, do których s± one przypisane. Nazwy poleceñ bez towarzysz±cej sekwencji klawiszy s± domy¶lnie nieprzypisane. W poni¿szych opisach, punkt oznacza bie¿±c± pozycjê kursora, za¶ zaznaczenie do pozycji kursora zapamiêtanej przez polecenie set-mark. Tekst pomiêdzy punktem a zaznaczeniem nazywany jest obszarem.

Polecenia ruchu

beginning-of-line (C-a)
Przesuwa na pocz±tek bie¿±cego wiersza.
end-of-line (C-e)
Przesuwa na koniec wiersza.
forward-char (C-f)
Przesuwa o znak w przód.
backward-char (C-b)
Przesuwa o znak wstecz.
forward-word (M-f)
Przesuwa na koniec nastêpnego s³owa. S³owa z³o¿one s± ze znaków alfanumerycznych (liter i cyfr).
backward-word (M-b)
Przesuwa na pocz±tek bie¿±cego, lub poprzedniego, s³owa. S³owa z³o¿one s± ze znaków alfanumerycznych (liter i cyfr).
clear-screen (C-l)
Czy¶ci ekran pozostawiaj±c bie¿±cy wiersz na górze ekranu. Z argumentem, od¶wie¿a bie¿±cy wiersz bez czyszczenia ekranu.
redraw-current-line
Od¶wie¿a bie¿±cy wiersz.

Polecenia operuj±ce na historii

accept-line (Newline, Return)
Akceptuje wiersz bez wzglêdu na to, gdzie znajduje siê kursor. Je¿eli wiersz ten nie jest pusty, to dodaje go do listy historii stosownie do stanu zmiennej HISTCONTROL. Je¿eli wiersz jest zmienionym wierszem historii, to odtwarza wiersz historii do stanu pierwotnego.
previous-history (C-p)
¦prowadza poprzednie polecenie z listy historii, przesuwaj±c siê wstecz listy.
next-history (C-n)
¦ci±ga nastêpne polecenie z listy historii, przesuwaj±c siê do przodu na li¶cie.
beginning-of-history (M-<)
Przesuwa na pierwszy wiersz w historii.
end-of-history (M->)
Przesuwa na koniec historii wprowadzania, tj. obecnie wprowadzanego wiersza.
reverse-search-history (C-r)
Wyszukuje wstecz poczynaj±c od bie¿±cego wiersza i przesuwaj±c siê, w razie potrzeby, 'w górê' historii. Jest to wyszukiwanie krokowe.
forward-search-history (C-s)
Wyszukuje w przód poczynaj±c od bie¿±cego wiersza i przesuwaj±c siê, w razie potrzeby, 'w dó³' historii. Jest to wyszukiwanie krokowe.
non-incremental-reverse-search-history (M-p)
Wyszukuje wstecz poczynaj±c od bie¿±cego wiersza pos³uguj±c siê wyszukiwaniem nie-krokowym podanego przez u¿ytkownika ³añcucha.
non-incremental-forward-search-history (M-n)
Wyszukuje w przód poczynaj±c od bie¿±cego wiersza pos³uguj±c siê wyszukiwaniem nie-krokowym podanego przez u¿ytkownika ³añcucha.
history-search-forward
Wyszukuje w przód w historii ³añcucha znaków pomiêdzy pocz±tkiem bie¿±cego wiersza a punktem. Jest to wyszukiwanie nie-krokowe.
history-search-backward
Wyszukuje wstecz w historii ³añcucha znaków pomiêdzy pocz±tkiem bie¿±cego wiersza a bie¿±c± pozycj± kursora (punkt). Jest to wyszukiwanie nie-krokowe.
yank-nth-arg (M-C-y)
Wstawia pierwszy argument poprzedniego polecenia (zwykle drugie s³owo z poprzedniego wiersza) w punkt (bie¿±c± pozycjê kursora). Z argumentem n, wstawia n-te s³owo poprzedniego polecenia (s³owa w poprzednim poleceniu zaczynaj± siê od s³owa 0). Argument ujemny wstawia n-te s³owo od koñca poprzedniego polecenia.
yank-last-arg (M-., M-_)
Wstawia ostatni argument poprzedniego polecenia (ostatnie s³owo poprzedniej pozycji historii). Z argumentem, zachowuje siê dok³adnie tak, jak yank-nth-arg. Kolejne wywo³ania yank-last-arg przesuwaj± wstecz listy historii, wstawiaj±c po kolei ostatni argument ka¿dego wiersza.
shell-expand-line (M-C-e)
Interpretuj wiersz, jak czyni to pow³oka. Wykonuje to aliasy i interpretacjê historii, jak równie¿ interpretacjê s³ów pow³oki. Zobacz INTERPRETACJA HISTORII poni¿ej.
history-expand-line (M-^)
Wykonuje interpretacjê pow³oki w odniesieniu do bie¿±cego wiersza. Zobacz INTERPRETACJA HISTORII poni¿ej.
magic-space
Wykonuje interpretacjê pow³oki w odniesieniu do bie¿±cego wiersza i wstawia spacjê. Zobacz INTERPRETACJA HISTORII poni¿ej.
alias-expand-line
Wykonuje interpretacjê aliasów w odniesieniu do bie¿±cego wiersza. Zobacz ALIASY powy¿ej.
history-and-alias-expand-line
Wykonuje interpretacjê historii i aliasów w odniesieniu do bie¿±cego wiersza.
insert-last-argument (M-., M-_)
Synonim yank-last-arg.
operate-and-get-next (C-o)
Akceptuje do wykonania bie¿±cy wiersz i ¶ci±ga do edycji nastêpny wzglêdem bie¿±cego wiersz z historii. Argumenty s± ignorowane.

Polecenia zmiany tekstu

delete-char (C-d)
Usuwa znak w punkcie (pod kursorem). Je¿eli punkt jest pocz±tkiem wiersza, nie ma ¿adnych znaków w wierszu, a ostatni wpisany znak zosta³ przypisany do delete-char, to zwraca EOF.
backward-delete-char (Rubout)
Usuwa znak przed kursorem. Je¿eli podano argument numeryczny, zachowuje usuniêty tekst na stosie usuniêæ.
forward-backward-delete-char
Usuwa znak pod kursorem, chyba ¿e kursor znajduje siê na koñcu wiersza, wówczas usuwany jest znak przed kursorem.
quoted-insert (C-q, C-v)
Dodaje nastêpny znak do wiersza dos³ownie. W ten sposób wstawiane s± znaki takie, jak na przyk³ad C-q.
tab-insert (C-v TAB)
Wstawia znak tabulacji.
self-insert (a, b, A, 1, !, ...)
Wstawia wpisany znak.
transpose-chars (C-t)
Zamienia miejscami znak sprzed punktu ze znakiem w punkcie, równocze¶nie przesuwaj±c punkt w przód. Je¿eli punkt jest na koñcu wiersza to zamienia to miejscami dwa znaki przed punktem. Argumenty ujemne nie skutkuj±.
transpose-words (M-t)
Zamienia miejscami s³owo sprzed punktu ze s³owem za punktem, przesuwaj±c równocze¶nie punkt za przesuniête sprzed niego s³owo. Je¿eli punkt jest na koñcu wiersza to zamienia to miejscami dwa ostanie s³owa wiersza.
upcase-word (M-u)
Zamienia na wielkie litery bie¿±ce (lub nastêpne) s³owo. Z argumentem ujemnym zamienia na wielkie litery poprzednie s³owo, ale nie przesuwa punktu.
downcase-word (M-l)
Zamienia na ma³e litery bie¿±ce (lub nastêpne) s³owo. Z argumentem ujemnym zamienia na ma³e litery poprzednie s³owo, ale nie przesuwa punktu.
capitalize-word (M-c)
Zamienia na kapitaliki (pierwsza litera wielka, pozosta³e ma³e) bie¿±ce (nastêpne) s³owo. Z argumentem ujemnym zamienia na kapitaliki poprzednie s³owo, ale nie przesuwa punktu.

Usuwanie i wklejanie

kill-line (C-k)
Usuwa tekst od punktu do koñca wiersza.
backward-kill-line (C-x Rubout)
Usuwa wstecz do pocz±tku wiersza.
unix-line-discard (C-u)
Usuwa wstecz od punktu do pocz±tku wiersza. Usuwany tekst jest zachowywany na stosie usuniêæ.
kill-whole-line
Usuwa wszystkie znaki bie¿±cego wiersza, bez wzglêdu na po³o¿enie punktu.
kill-word (M-d)
Usuwa od punktu do koñca bie¿±cego s³owa, lub je¶li u¿yte pomiêdzy s³owami, do koñca nastêpnego s³owa. Granice s³ów s± takie same, jak u¿ywane przez forward-word.
backward-kill-word (M-Rubout)
Usuwa s³owo sprzed punktu. Granice s³ów s± takie same, jak u¿ywane przez backward-word.
unix-word-rubout (C-w)
Usuwa s³owo sprzed punktu, jako separatora s³ów u¿ywaj±c bia³ych znaków. Usuniêty tekst zachowywany jest na stosie usuniêæ.
delete-horizontal-space (M-\)
Usuwa wszystkie spacje i tabulatory wokó³ punktu.
kill-region
Usuwa tekst w bie¿±cym obszarze.
copy-region-as-kill
Kopiuje tekst obszaru do bufora usuwania.
copy-backward-word
Kopiuje s³owo sprzed punktu do bufora usuwania. Granice s³ów s± takie same, jak dla backward-word.
copy-forward-word
Kopiuje s³owo wystêpuj±ce po punkcie do bufora usuwania. Granice s³ów s± takie same, jak dla forward-word.
yank (C-y)
Wkleja wierzcho³ek stosu usuniêæ do bufora w punkcie (w miejscu kursora).
yank-pop (M-y)
Obraca stos usuniêæ i wkleja nowy wierzcho³ek. Dzia³a tylko nastêpuj±c po yank lub yank-pop.

Argumenty numeryczne

digit-argument (M-0, M-1, ..., M--)
Dodaje tê cyfrê do ju¿ sk³adanego argumentu lub rozpoczyna nowy argument. M-- rozpoczyna argument ujemny.
universal-argument
Jest to inna metoda podawania argumentu. Je¿eli po tym poleceniu wystêpuje jedna lub wiêcej cyfr, z opcjonalnym pocz±tkowym znakiem minus, to cyfry te definiuj± argument. Je¿eli po poleceniu wystêpuj± cyfry, to powtórne wykonanie universal-argument koñczy argument numeryczny, ale w przeciwnym wypadku jest ignorowane. W przypadku specjalnym, je¿eli bezpo¶rednio po tym poleceniu wystêpuje znak nie bêd±cy ani cyfr± ani znakiem minus, to argument licznik dla nastêpnego polecenia mno¿ony jest przez cztery. Argument licznik [zwykle powtórzeñ] wynosi pocz±tkowo cztery, tote¿ wykonanie tej funkcji po raz pierwszy nadaje mu warto¶æ cztery, po raz drugi szesna¶cie, i tak dalej.

Uzupe³nianie

complete (TAB)
Usi³uje przeprowadziæ uzupe³nianie tekstu przed punktem. Bash próbuje uzupe³niania traktuj±c tekst kolejno: jako zmienn± (je¿eli tekst zaczyna siê od $), nazwê u¿ytkownika (je¶li tekst zaczyna siê od ~), nazwê hosta (i je¶li tekst zaczyna siê od @) lub polecenie (³±cznie z aliasami i funkcjami). Je¿eli ¿adne z powy¿szych nie daje dopasowania, to próbowane jest uzupe³nianie nazw plików.
possible-completions (M-?)
Pokazuje mo¿liwe uzupe³nienia tekstu przed punktem.
insert-completions (M-*)
Wstawia przed punktem wszystkie uzupe³nienia tekstu, które zosta³yby wygenerowane przez possible-completions.
menu-complete
Podobne do complete, ale zastêpuje s³owo, jakie ma zostaæ uzupe³nione pojedynczym uzupe³nieniem z listy mo¿liwych. Powtarzane wykonanie menu-complete powoduje krokowe przechodzenie przez listê mo¿liwych uzupe³nieñ i wstawianie ka¿dego z nich po kolei (zamiast uzupe³nianego s³owa). Na koñcu listy uzupe³nieñ emitowany jest sygna³ d¼wiêkowy (zale¿ny od ustawienia bell-style) i przywracany jest pierwotny tekst. Argument n przesuwa n pozycji w przód na li¶cie dopasowañ; do przesuwania siê wstecz mo¿na u¿yæ argumentu ujemnego. Polecenie w zamierzeniu ma byæ przypisane do klawisza TAB, ale domy¶lnie nie jest przypisane.
delete-char-or-list
Usuwa znak pod kursorem, je¶li nie jest to pocz±tek b±d¼ koniec wiersza (jak delete-char). Na koñcu wiersza, zachowuje siê identycznie jak possible-completions. To polecenie jest domy¶lnie nieprzypisane.
complete-filename (M-/)
Usi³uje wykonaæ uzupe³nianie nazw plików na tek¶cie sprzed kursora.
possible-filename-completions (C-x /)
Pokazuje mo¿liwe uzupe³nienia tekstu sprzed kursora, traktuj±c go jak nazwê pliku.
complete-username (M-~)
Usi³uje wykonaæ uzupe³nianie tekstu sprzed kursora, traktuj±c go jak nazwê u¿ytkownika.
possible-username-completions (C-x ~)
Pokazuje mo¿liwe uzupe³nienia tekstu sprzed kursora, traktuj±c go jak nazwê u¿ytkownika.
complete-variable (M-$)
Usi³uje wykonaæ uzupe³nianie tekstu sprzed kursora, traktuj±c go jak zmienn± pow³oki.
possible-variable-completions (C-x $)
Pokazuje mo¿liwe uzupe³nienia tekstu sprzed kursora, traktuj±c go jak zmienn± pow³oki.
complete-hostname (M-@)
Usi³uje wykonaæ uzupe³nianie tekstu sprzed kursora, traktuj±c go jak nazwê hosta.
possible-hostname-completions (C-x @)
Pokazuje mo¿liwe uzupe³nienia tekstu sprzed kursora, traktuj±c go jak nazwê hosta.
complete-command (M-!)
Usi³uje uzupe³niæ tekst sprzed punktu, traktuj±c go jak nazwê polecenia. Uzupe³nianie polecenia próbuje dopasowaæ tekst kolejno do aliasów, s³ów zastrze¿onych, funkcji pow³oki, poleceñ wbudowanych pow³oki i wreszcie nazw plików wykonywalnych.
possible-command-completions (C-x !)
Pokazuje mo¿liwe uzupe³nienia tekstu sprzed kursora, traktuj±c go jak nazwê polecenia.
dynamic-complete-history (M-TAB)
Usi³uje uzupe³niæ tekst sprzed kursora, w celu odnalezienia mo¿liwych uzupe³nieñ porównuj±c go z wierszami listy historii.
complete-into-braces (M-{)
Wykonuje uzupe³nianie nazwy pliku i wstawia listê mo¿liwych uzupe³nieñ ujêt± w nawiasy klamrowe, tak ¿e jest ona dostêpna dla pow³oki (zobacz powy¿ej Interpretacja nawiasów).

Makra klawiaturowe

start-kbd-macro (C-x ()
Rozpoczyna zachowywanie wpisywanych znaków w bie¿±cym makrze klawiaturowym.
end-kbd-macro (C-x ))
Zatrzymuje zachowywanie wpisywanych znaków w bie¿±cym makrze klawiaturowym i przechowuje definicjê.
call-last-kbd-macro (C-x e)
Ponownie wykonuje zdefiniowane makro klawiaturowe, powoduj±c pojawianie siê znaków makra tak, jakby zosta³y wpisane z klawiatury.

Ró¿ne

re-read-init-file (C-x C-r)
Odczytuje zawarto¶æ pliku inputrc i do³±cza wszystkie znalezione tam przypisania klawiszy i zmiennych.
abort (C-g)
Zaniechuje bie¿±cego polecenia edycji i emituje sygna³ d¼wiêkowy terminala (zgodnie z ustawieniami bell-style).
do-uppercase-version (M-a, M-b, M-x, ...)
Je¿eli poprzedzony przedrostkiem meta znak x jest ma³± liter±, uruchamia plecenie, które jest przypisane do odpowiedniej wielkiej litery.
prefix-meta (ESC)
Poprzed¼ przedrostkiem meta nastêpny wpisany znak. ESC f jest równowa¿ne Meta-f.
undo (C-_, C-x C-u)
Krokowe cofniêcie operacji, pamiêtane odrêbnie dla ka¿dego wiersza.
revert-line (M-r)
Cofa wszystkie zmiany wykonane na tym wierszu. Podobne do wykonania polecenia undo wystarczaj±co wiele razy, by przywróciæ wiersz do stanu pocz±tkowego.
tilde-expand (M-&)
Wykonuje interpretacjê tyldy w odniesieniu do bie¿±cego s³owa.
set-mark (C-@, M-<space>)
ustawia znacznik (mark) w bie¿±cym punkcie. Je¿eli podano argument numeryczny, znacznik jest ustawiany na takiej pozycji.
exchange-point-and-mark (C-x C-x)
Zamieñ punkt ze znacznikiem. Aktualna pozycja kursora ustawiana jest na zapamietan±, a dotychczasowa pozycja zachowywana jako znacznik.
character-search (C-])
Odczytywany jest znak a punkt przesuwa siê na nastêpne wyst±pienie tego znaku. Licznik ujemny wyszukuje poprzednie wyst±pienia.
character-search-backward (M-C-])
Odczytywany jest znak a punkt przesuwa siê na poprzednie wyst±pienie tego znaku. Licznik ujemny wyszukuje kolejne wyst±pienia.
insert-comment (M-#)
Na pocz±tek bie¿±ceg wiersza wstawiana jest warto¶æ zmiennej comment-begin readline, a wiersz jest akceptowany tak, jakby wprowadzono znak nowej linii. Domy¶lna warto¶æ comment-begin powoduje, ¿e polecenie to czyni bie¿±cy wiersz komentarzem pow³oki.
glob-expand-word (C-x *)
S³owo sprzed kursora traktowane jest jak wzorzec rozwijania nazw plików i wstawiana jest lista pasuj±cych nazw, zastêpuj±c s³owo-wzorzec.
glob-list-expansions (C-x g)
Wy¶wietlana jest lista rozwiniêæ, jakie zosta³yby utworzone przez glob-expand-word, a wiersz jest ponownie wy¶wietlany.
dump-functions
Wypisuje do strumienia wyj¶ciowego readline wszystkie funkcje i ich przypisania klawiszy. Je¿eli podano argument numeryczny, wyj¶cie jest formatowane w taki sposób, by mo¿na zrobiæ je czê¶ci± pliku inputrc.
dump-variables
Wypisuje do strumienia wyj¶ciowego readline wszystkie ustawialne zmienne readline i ich warto¶ci. Je¿eli podano argument numeryczny, wyj¶cie jest formatowane w taki sposób, by mo¿na zrobiæ je czê¶ci± pliku inputrc.
dump-macros
Wypisuje wszystkie sekwencje klawiszy readline przypisane do makr i ³añcuchy jakie daj± w wyniku. Je¿eli podano argument numeryczny, wyj¶cie jest formatowane w taki sposób, by mo¿na zrobiæ je czê¶ci± pliku inputrc.
display-shell-version (C-x C-v)
Wy¶wietla informacjê o wersji aktualnego egzemplarza bash.

Programowalne uzupe³nianie

Gdy nastêpuje próba uzupe³nienia s³owa dla argumentu polecenia, dla którego zdefiniowano specyfikacjê uzupe³niania (completion specification, compspec) przy pomocy wbudowanego polecenia complete (zobacz WBUDOWANE POLECENIA POW£OKI poni¿ej), wywo³ywane s± us³ugi programowalnego uzupe³niania.

Po pierwsze, identyfikowana jest nazwa polecenia. Je¿eli dla tego polecenia zdefiniowano compspec, to compspec jest u¿ywane do utworzenia listy mo¿liwych uzupe³nieñ s³owa. Je¿eli s³owo polecenia jest pe³n± nazw± ¶cie¿kow±, to najpierw szukane jest compspec dla pe³nej nazwy. Je¶li nie zostanie odnalezione, to nastêpuje próba znalezienia compspec dla czê¶ci wystêpuj±cej po ostatnim uko¶niku.

Po odnalezieniu compspec, jest ono u¿ywane do utworzenia listy pasuj±cych s³ów. Je¿eli compspec nie zosta³o znalezione, to wykonywane jest domy¶lne uzupe³nianie basha, jak opisano powy¿ej w Uzupe³nianie.

Na pocz±tek, u¿ywane s± akcje okre¶lone przez compspec. Zwracane s± wy³±cznie dopasowania poprzedzone dopasowywanym s³owem. Gdy do uzupe³niania nazw plików lub katalogów u¿yto opcji -f lub -d, do filtrowania dopasowañ wykorzystywana jest zmienna pow³oki FIGNORE.

W nastêpnej kolejno¶ci tworzone s± ewentualne uzupe³nienia okre¶lone przez wzorzec rozwiniêcia nazw plików opcji -G. S³owa tworzone przez wzorzec nie musz± pasowaæ do uzupe³nianego s³owa. Zmienna pow³oki GLOBIGNORE nie jest u¿ywana do filtrowania dopasowañ, ale zmienna FIGNORE jest u¿ywana.

Nastêpnie, brany jest pod uwagê ³añcuch podany jako argument opcji -W. £añcuch jest najpierw rozbijany przy zastosowaniu znaków ze zmiennej specjalnej IFS jako separatorów. Honorowane jest cytowanie pow³oki. Pó¼niej ka¿de ze s³ów interpretowane jest z wykorzystaniem interpretacji nawiasów, interpretacji tyld, podstawiania parametrów, interpretacji zmiennych i wyra¿eñ arytmetycznych, podstawiania wyników poleceñ i rozwijania nazw ¶cie¿kowych, jak opisano powy¿ej w sekcji INTERPRETACJA. Wyniki s± rozbijane z zastosowaniem regu³ opisanych powy¿ej w sekcji Podzia³ na s³owa. Wyniki interpretacji s± dopasowywane przedrostkiem z uzupe³nianym s³owem, a pasuj±ce s³owa staj± siê mo¿liwymi uzupe³nieniami.

Po utworzeniu tych dopasowañ, wywo³ywana jest funkcja lub polecenie okre¶lone opcjami -F i -C. Podczas wywo³ywania polecenia czy funkcji, zmiennym COMP_LINE i COMP_POINT przypisywane s± warto¶ci, jak opisano to powy¿ej w sekcji Zmienne pow³oki. Je¿eli wywo³ywana jest funkcja pow³oki, ustawiane s± równie¿ zmienne COMP_WORDS i COMP_CWORD. Kiedy wywo³ywana jest funkcja czy polecenie, pierwszym argumentem staje siê nazwa polecenia, którego argumenty s± uzupe³niane, drugim argumentem -- uzupe³niane s³owo, a trzecim s³owo poprzedzaj±ce w wierszu poleceñ s³owo aktualnie uzupe³niane. Nie jest wykonywane ¿adne filtrowanie utworzonych uzupe³nieñ stosownie do uzupe³nianego s³owa. Funkcja czy polecenie maj± pe³n± swobodê tworzenia dopasowañ.

W pierwszej kolejno¶ci wywo³ywana jest funkcja okre¶lona przez -F. Do tworzenia dopasowañ mo¿e ona korzystaæ z dowolnych mo¿liwo¶ci pow³oki, ³±cznie z opisanym poni¿ej poleceniem wbudowanym compgen. Funkcja musi umie¶ciæ mo¿liwe uzupe³nienia w zmiennej tablicowej COMPREPLY.

Nastêpnie, wywo³ywane jest polecenie okre¶lone opcj± -C, dzia³aj±ce w ¶rodowisku równowa¿nym podstawianiu poleceñ. Powinno ono wypisaæ listê uzupe³nieñ, po jednym w wierszu, na standardowe wyj¶cie. Je¿eli jest to niezbêdne, do utworzenia znaku nowej linii mo¿na u¿yæ odwróconego uko¶nika.

Po utworzeniu wszelkich mo¿liwych uzupe³nieñ, do listy tej stosowany jest filtr okre¶lony opcj± -X. Filtr jest takim wzorcem, jak u¿ywany przy rozwijaniu nazw ¶cie¿kowych. Znak & we wzorcu zastêpowany jest tekstem uzupe³nianego s³owa. Litera³ & mo¿na otrzymaæ poprzedzaj±c go odwrotnym uko¶nikiem; odwrotny uko¶nik zostanie usuniêty przed prób± dopasowania. Wszystkie uzupe³nienia pasuj±ce do wzorca bêd± usuniête z listy. Pocz±tkowy ! daje zaprzeczenie wzorca. Bêd± wówczas usuwane uzupe³nienia nie pasuj±ce do wzorca.

Na koniec, do ka¿dego elementu listy dodawane s± przedrostek i przyrostek okre¶lone opcjami -P i -S, a wynik zwracany jest do kodu uzupe³niania readline jako lista mo¿liwych uzupe³nieñ.

Je¶li poprzednio zastosowane dzia³ania nie utworzy³y ¿adnych dopasowañ, za¶ przy definiowaniu compspec podano opcjê -o dirnames polecenia complete, to dokonywana jest próba uzupe³nienia nazwy katalogu.

Domy¶lnie, je¿eli znaleziono compspec, to cokolwiek ono utworzy zwracane jest do kodu uzupe³niaj±cego jako pe³ny zestaw mo¿liwych uzupe³nieñ. Nie s± próbowane domy¶lne uzupe³nienia bash, a domy¶lne uzupe³nianie nazw ¶cie¿kowych przez readline jest wy³±czone. Je¶li przy definiowaniu compspec podano opcjê -o default polecenia complete, to je¿eli compspec nie utworzy ¿adnych uzupe³nieñ, wykonane zostanie domy¶lne uzupe³nianie z readline.

HISTORIA

Je¿eli w³±czona jest opcja -o history wbudowanego polecenia set, to pow³oka zapewnia dostêp do historii poleceñ, listy poleceñ poprzednio wprowadzonych. Warto¶æ zmiennej HISTSIZE wykorzystywana jest jako liczba poleceñ do zachowania na li¶cie historii. Zachowywany jest tekst ostatnich HISTSIZE poleceñ (domy¶lnie 500. Pow³oka przechowuje ka¿de polecenie na li¶cie przed podstawieniem warto¶ci parametrów i zmiennych (zobacz powy¿ej INTERPRETACJA), ale przed wykonaniem interpretacji historii, w zale¿no¶ci od warto¶ci zmiennych pow³oki HISTIGNORE i HISTCONTROL.

Przy uruchamianiu, historia inicjowana jest z pliku o nazwie wskazanej zmienn± HISTFILE (domy¶lnie ~/.bash_history). Plik o nazwie wziêtej z warto¶ci HISTFILE jest obcinany, je¶li zachodzi potrzeba, by zawiera³ nie wiêcej wierszy ni¿ okre¶lono to warto¶ci± zmiennej HISTFILESIZE. Podczas koñczenia pracy pow³oki interaktywnej, ostatnie $HISTSIZE wierszy kopiowane jest z listy historii do $HISTFILE. Je¿eli w³±czona jest opcja pow³oki histappend (zobacz opis shopt w sekcji WBUDOWANE POLECENIA POW£OKI poni¿ej), to wiersze s± dodawane na koniec pliku historii, w przeciwnym razie plik historii jest nadpisywany. Je¿eli HISTFILE nie jest ustawione lub plik historii nie daje siê zapisaæ, to historia nie jest zachowywana. Po zapisaniu, plik historii jest obcinany, by nie zawiera³ wiêcej ni¿ HISTFILESIZE wierszy. Je¶li HISTFILESIZE nie jest ustawione, to obcinanie nie jest wykonywane.

Do edycji lub ponownego wykonania czê¶ci listy historii mo¿na korzystaæ z wbudowanego polecenia fc (zobacz WBUDOWANE POLECENIA POW£OKI poni¿ej). Wbudowanego polecenia history mo¿na u¿ywaæ do wy¶wietlania lub zmiany listy historii i manipulacji plikiem historii. Podczas pos³ugiwania siê edycj± wiersza poleceñ, w ka¿dym z trybów edycji umo¿liwiaj±cych dostêp do listy historii, dostêpne s± polecenia przeszukiwania.

Pow³oka umo¿liwia kontrolê nad tym, jakie polecenia s± zachowywane na li¶cie. Mo¿na ustawiæ zmienne HISTCONTROL i HISTIGNORE, co spowoduje, ¿e pow³oka bêdzie zachowywaæ tylko podzbiór wprowadzonych poleceñ. Opcja pow³oki cmdhist, je¿eli jest w³±czona, powoduje, ¿e pow³oka bêdzie usi³owaæ zachowaæ ka¿dy wiersz polecenia wielowierszowego w tej samej pozycji historii, dodaj±c, gdzie jest to niezbêdne, ¶redniki, by zachowaæ poprawno¶æ sk³adni. Opcja pow³oki lithist powoduje, ¿e pow³oka bêdzie zachowywaæ polecenia z osadzonymi znakami nowej linii zamiast ¶redników. Zobacz opis wbudowanego shopt poni¿ej, w sekcji WBUDOWANEPOLECENIAPOW£OKI, gdzie znajdziesz informacje o ustawianiu i kasowaniu opcji pow³oki.

INTERPRETACJA HISTORII

Pow³oka obs³uguje funkcjê interpretacji historii, podobn± do interpretacji historii w csh. Ta sekcja opisuje dostêpne mo¿liwo¶ci sk³adni. Funkcja ta jest domy¶lnie w³±czona dla pow³ok interaktywnych i mo¿e byæ wy³±czona przy pomocy opcji +H wbudowanego polecenia set (zobacz poni¿ej WBUDOWANEPOLECENIAPOW£OKI). Pow³oki nie-interaktywne domy¶lnie nie wykonuj± interpretacji historii.

Interpretacja historii wprowadza s³owa z listy historii do strumienia wej¶ciowego, u³atwiaj±c powtarzanie poleceñ lub poprawianie szybkie b³êdów w poprzednich poleceniach.

Interpretacja historii przeprowadzana jest bezpo¶rednio po przeczytaniu pe³nego wiersza, przed jego podzia³em na s³owa przez pow³okê. Odbywa siê w dwu czê¶ciach. Pierwsz± jest okre¶lenie, który wiersz z listy historii ma zostaæ u¿yty podczas podstawiania. Drug± stanowi wybór czê¶ci tego wiersza do w³±czenia w bie¿±cy. Wybrany z historii wiersz jest zdarzeniem (event), a jego czê¶ci na których wykonywane s± dzia³ania s± s³owami. Dostêpne s± ró¿ne modyfikatory do manipulowania wybranymi s³owami. Wiersz rozbijany jest na s³owa w ten sam sposób jak podczas odczytu wej¶cia, tak ¿e kilka s³ów separowanych metaznakami ujêtych w cudzys³owy traktowanych jest jak jedno s³owo. Interpretacja historii wprowadzana s± obecno¶ci± znaku rozwijaj±cego historiê, którym domy¶lnie jest !. Cytowaæ ten znak mog± wy³±cznie odwrotny uko¶nik (\) i pojedyncze cudzys³owy.

Kilka opcji pow³oki ustawianych przy pomocy shopt mo¿e s³u¿yæ do ¶ledzenia dzia³ania interpretacji historii. Je¿eli opcja histverify pow³oki jest w³±czona (zobacz opis wbudowanego shopt) i u¿ywane jest readline, to podstawienia historii nie s± natychmiast przesy³ane do analizatora sk³adni (parsera) pow³oki. Zamiast tego, zinterpretowany wiersz jest ponownie ³adowany do bufora edycyjnego readline w celu dalszej modyfikacji. Je¿eli wykorzystywane jest readline i w³±czona jest opcja histreedit, to zakoñczone niepowodzeniem podstawienie historii zostanie ponownie za³adowane do bufora edycyjnego readline w celu poprawienia. Opcj± -p wbudowanego polecenia history mo¿na pos³u¿yæ siê do ogl±dniêcia, co zrobi interpretacja historii przed jej zastosowaniem. Opcji -s wbudowanego polecenia history mo¿na u¿yæ w celu dodania poleceñ na koniec listy historii bez faktycznego ich wykonania, tak ¿e bêd± dostêpne dla nastêpnych przywo³añ.

Pow³oka pozwala na kontrolowanie ró¿nych znaków stosowanych przez mechanizm interpretacji historii (zobacz opis histchars powy¿ej, w sekcji Zmienne pow³oki).

Desygnatory zdarzeñ (Event Designators)

Desygnator zdarzenia jest odwo³aniem do pozycji wiersza poleceñ na li¶cie historii.

!
Rozpoczyna podstawianie historii, z wyj±tkiem sytuacji, gdy wystêpuje po nim odstêp, znak nowej linii, = lub (.
!n
Wskazuje na n-ty wiersz poleceñ.
!-n
Wskazuje na wiersz poleceñ bie¿±cy minus n.
!!
Wskazuje na poprzednie polecenie. jest to synonim `!-1'.
!³añcuch
Wskazuje na ostatnie poleceniem rozpoczynaj±ce siê od ³añcucha.
!?³añcuch[?]
Wskazuje na ostatnie polecenie zawieraj±ce ³añcuch. Koñcz±ce ? mo¿na pomin±æ je¶li bezpo¶rednio po ³añcuchu wystêpuje znak nowej linii.
^³añcuch1^³añcuch2^
Szybkie podstawianie. Powtarza ostatnie polecenie, wymieniaj±c ³añcuch1 na ³añcuch2. Rónowa¿nik ,,!!:s/³añcuch1/³añcuch/'' (zobacz poni¿ej Modyfikatory).
!#
Ca³y wiersz poleceñ wpisany do tego momentu.

Desygnatory s³ów (Word Designators)

Desygnatory s³ów s³u¿± do wybierania ze zdarzenia ¿±danych s³ów. Dwukropek : oddziela okre¶lenie zdarzenia od desygnatora s³owa. Mo¿e byæ pominiêty je¶li desygnator s³owa rozpoczyna siê od ^, $, *, - lub %. S³owa numerowane s± od pocz±tku wiersza, przy czym pierwsze ma numer 0 (zero). S³owa s± wstawiane do bie¿±cego wiersza, rozdzielane pojedynczymi spacjami.

0 (zero)
S³owo zerowe. Dla pow³oki jest to s³owo polecenia.
n
n-te s³owo.
^
Pierwszy argument. To znaczy, s³owo 1.
$
Ostatni argument.
%
S³owo dopasowane przez ostatnie wyszukanie `?³añcuch?'.
x-y
Zakres s³ów; `-y' jest skróconym `0-y'.
*
Wszystkie s³owa prócz zerowego. jest to synonim dla `1-$'. Nie jest b³êdem u¿ycie * je¶li w zdarzeniu jest tylko jedno s³owo; w tym przypadku zwracany jest ³añcuch pusty.
x*
Skrót od x-$.
x-
Skrót od x-$ podobnie jak x*, ale pomija ostatnie s³owo.

je¶li desygnator s³owa podano bez okre¶lenia zdarzenia, za zdarzenie przyjmowane jest poprzednie polecenie.

Modyfikatory

Po opcjonalnym desygnatorze s³owa mo¿e pojawiæ siê sekwencja jednego lub wiêcej poni¿szych modyfikatorów, ka¿dy poprzedzony dwukropkiem `:'.

h
Usuwa koñcow± sk³adow± nazwy pliku, pozostawiaj±c tylko pocz±tek.
t
Usuwa wszystkie pocz±tkowe sk³adowe nazwy pliku, pozostawiaj±c koniec.
r
Usuwa koñcz±cy przyrostek postaci .xxx, pozostawiaj±c g³ówn± czê¶æ nazwy (basename).
e
Usuwa wszystko prócz koñcowego przyrostka.
p
Wypisuje nowe polecenie, ale go nie wykonuje.
q
Cytuje podstawiane s³owa, zabezpieczaj±c je przed dalszym podstawianiem.
x
Cytuje podstawiane s³owa jak q, ale rozbija na s³owa w miejscach odstêpów i znaków nowej linii.
s/stary/nowy/
Zastêpuje nowym pierwsze wyst±pienie starego w wierszu zdarzenia. Zamiast / mo¿e zostaæ u¿yty dowolny ogranicznik. Koñcowy ogranicznik jest opcjonalny je¿eli jest ostatnim znakiem wiersza zdarzenia. Separator mo¿e byæ cytowany w nowym i starym przy pomocy pojedynczego odwrotnego uko¶nika. Je¿eli w nowym pojawia siê &, to jest zastêpowany starym. Pojedynczy odwrotny uko¶nik bêdzie cytowa³ &. Je¿eli stary jest pusty, to ustawiany jest na ostatni podstawiany stary lub, je¶li nie by³o poprzednich podstawieñ historii, ostatni ³añcuch w wyszukiwaniu !?³añcuch[?].
&
Powtarza poprzednie podstawienie.
g
Powoduje, ¿e zmiany zostan± zastosowane do ca³ego wiersza zdarzenia. U¿ywany w po³±czeniu z `:s' (np. `:gs/old/new/') lub `:&'. Je¶li u¿yty z `:s', to zamiast / mo¿na pos³u¿yæ siê dowolnym separatorem, a ostatni separator jest opcjonalny je¿eli jest ostatnim znakiem wiersza zdarzenia.

WBUDOWANE POLECENIA POW£OKI

Je¶li nie podano inaczej, ka¿de z poleceñ wbudowanych opisanych w niniejszej sekcji jako akceptuj±ce opcje poprzedzone - akceptuje równie¿ symbol -- okre¶laj±cy koniec opcji.

: [argumenty]
Bez efektów; polecenie to nie robi niczego poza interpretacj± argumentów i wykonaniem ewentualnych podanych przekierowañ. Zwracany jest zerowy kod zakoñczenia.
. plik [argumenty]
source plik [argumenty]
Odczytuje i wykonuje polecenia z zadanego pliku w aktualnym ¶rodowisku pow³oki i zwraca kod zakoñczenia ostatniego wykonanego polecenia z tego pliku. Je¿eli nazwa pliku nie zawiera uko¶nika, to do znalezienia katalogu go zawieraj±cego u¿ywana jest zmienna PATH. Plik poszukiwany w PATH nie musi byæ wykonywalny. Je¶li bash nie jest w trybie posix, wówczas je¿eli nie znaleziono pliku w PATH, to przeszukiwany jest katalog bie¿±cy. Je¶li we wbudowanym poleceniu shopt wy³±czona jest opcja sourcepath, to PATH nie jest przeszukiwane. je¶li podano jakie¶ argumenty, to staj± siê one parametrami pozycyjnymi podczas wykonywania pliku. W przeciwnym razie argumenty pozycyjne pozostaj± bez zmian. Kod zakoñczenia jest kodem ostatniego zakoñczonego przez skrypt polecenia (0 je¶li nie wykowano ¿adnego polecenia), a fa³szem je¿eli nie znaleziono pliku lub nie mo¿na go odczytaæ.
alias [-p] [nazwa[=warto¶æ] ...]
Alias bez argumentów b±d¼ z opcj± -p wypisuje na standardowym wyj¶ciu listê aliasów w postaci alias nazwa=warto¶æ. Je¶li nie dostarczono argumenty, to definiowany jest alias (synonim) dla ka¿dej nazwy, dla której podano warto¶æ. Pocz±tkowa spacja w warto¶ci powoduje, ¿e podczas interpretacji aliasu nastêpne s³owo bêdzie sprawdzane na podstawianie aliasów. Dla ka¿dej nazwy z listy argumentów, dla której nie podano warto¶ci, wypisywana jest nazwa i warto¶æ aliasu. Alias zwraca prawdê, chyba ¿e podano nazwê, dla której nie zosta³ zdefiniowany ¿aden alias.
bg [spec_zad]
Wznawia w tle zawieszone zadanie spec_zad, tak jakby zosta³o ono uruchomione z &. Je¶li spec_zad nie wystêpuje, to u¿ywane jest bie¿±ce zadanie, okre¶lone tak, jak je pojmuje pow³oka. bg spec_zad zwraca 0, chyba ¿e uruchomiono je przy wy³±czonej kontroli zadañ (job control) lub uruchomiono z w³±czon± kontrol± zadañ, je¶li nie znaleziono spec_zad lub uruchomiono bez kontroli zadañ.
bind [-m keymap] [-lpsvPSV]
bind [-m keymap] [-q funkcja] [-u funkcja] [-r sekw_klaw]
bind [-m keymap] -f plik
bind [-m keymap] -x sekw_klaw:polec_pow³oki
bind [-m keymap] sekw_klaw:nazwa_funkcji
Wy¶wietla bie¿±ce ustawienia przypisañ (bindings) klawiszy i funkcji readline lub przypisuje sekwencjê klawiszy to funkcji lub makra readline. Sk³adnia tych przypisañ jest identyczna jak dla .inputrc, ale ka¿de z przypisañ musi byæ przes³ane jako osobny argument; np., '"\C-x\C-r": re-read-init-file'. Opcje, je¶li je podano, maj± nastêpuj±ce znaczenie:
-m keymap
Wykorzystuje keymap jako mapê klawiszy, do której maj± byæ zastosowane nastêpne przypisania. Akceptowanymi nazwami map klawiszyemacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command i vi-insert. vi równowa¿ne jest vi-command; emacs jest równowa¿ne emacs-standard.
-l
Podaje nazwy wszystkich funkcji readline.
-p
Wy¶wietla nazwy funkcji i przypisania w taki sposób, ¿e mog± byæ ponownie odczytane.
-P
Podaje bie¿±ce przypisania i nazwy funkcji readline.
-v
Wy¶wietla nazwy i warto¶ci zmiennych readline w taki sposób, ¿e mog± byæ ponownie odczytane.
-V
Podaje bie¿±ce nazwy i warto¶ci zmiennych readline.
-s
Wy¶wietla sekwencje klawiszy readline przypisane do makr i ³añcuchy jakie one wysy³aj± w taki sposób, ¿e mog± byæ ponownie odczytane.
-S
Wy¶wietla sekwencje klawiszy readline przypisane do makr i ³añcuchy jakie one wysy³aj±.
-f plik
Czyta przypisania klawiszy z pliku.
-q funkcja
Podaje, które klawisze wywo³uj± podan± funkcjê.
-u funkcja
Odwo³uje przypisania wszystkich klawiszy przypisanych do danej funkcji.
-r sekw_klaw
Usuwa bie¿±ce przypisania dla sekwencji klawiszy.
-x sekw_klaw:polec_pow³oki
Powoduje, ¿e za ka¿dym naci¶niêciem sekwencji klawiszy zostanie wykonane polecenie pow³oki.

Zwracana jest warto¶æ 0, chyba ¿e podano nierozpoznan± opcjê lub pojawi³ siê b³±d.

break [n]
Opuszcza pêtlê for, while, until lub select. Je¿eli podano n, przerywa dzia³anie do n-tego poziomu. n musi byæ > 1. Je¿eli n jest wiêksze od liczby obejmuj±cych polecenie pêtli, to koñczone s± wszystkie obejmuj±ce pêtle. Warto¶ci± zwracan± jest 0, chyba ¿e pow³oka nie wykonuje pêtli podczas wykonania break.
builtin wbudowane [argumenty]
Wykonuje zadane polecenie wbudowane pow³oki, przesy³aj±c mu argumentyizwracajegokodzakoñczenia. Przydatne podczas definiowania funkcji o nazwie to¿samej z nazw± wbudowanego polecenia pow³oki, zachowuj±c funkcjonalno¶æ polecenia wbudowanego wewn±trz funkcji. Wbudowane cd jest powszechnie redefiniowane w ten sposób. Kodem zakoñczenia jest fa³sz je¶li wbudowane nie jest wbudowanym poleceniem pow³oki.
cd [-LP] [katalog]
Zmienia bie¿±cy katalog roboczy na dir. Zmienna HOME jest domy¶lnym katalogiem. Zmienna CDPATH definiuje ¶cie¿kê przeszukiwañ dla katalogu zawieraj±cego katalog. Alternatywne nazwy katalogów w CDPATH rozdzielane s± dwukropkiem (:)> Pusta nazwa katalogu w CDPATH jest tym samym, co katalog bie¿±cy, tj. ,,.''. Je¿eli katalog rozpoczyna siê uko¶nikiem (/), to CDPATH nie jest u¿ywane. Opcja -P nakazuje u¿ycie fizycznej struktury katalogów zamiast pod±¿ania za dowi±zaniami symbolicznymi (zobacz te¿ opcja -P wbudowanego polecenia set); Opcja -L wymusza pod±¿anie za dowi±zaniami symbolicznymi. Argument - jest równowa¿ny $OLDPWD. Warto¶ci± zwracan± jest prawda je¶li pomy¶lnie zmieniono katalog; w przeciwnym przypadku fa³sz.
command [-pVv] polecenie [arg ...]
Uruchamia polecenie z argumentami zakazuj±c zwyk³ego wyszukiwania funkcji przez pow³okê. Wykonywane s± wy³±cznie polecenia wbudowane i polecenia znalezione w PATH. Je¿eli podano opcjê -p, wyszukiwanie polecenia wykonywane jest przy u¿yciu domy¶lnej PATH, która gwarantuje znalezienie wszystkich standardowych narzêdzi. Je¶li u¿yto albo opcji -V albo -v, to wypisywany jest opis polecenia. Opcja -v powoduje, ¿e zostanie wy¶wietlone pojedyncze s³owo wskazuj±ce polecenie lub nazwê pliku, u¿yte do wywo³ania polecenia; opcja -V tworzy bardziej rozgadany opis. Je¿eli podano opcjê -V lub -v, to kodem zakoñczenia jest 0 gdy odnaleziono polecenie, za¶ 1 gdy nie. Je¶li nie podano ¿adnej z tych opcji i pojawi³ siê b³±d lub nie mo¿na znale¿æ polecenia, to kod zakoñczenia wynosi 127. W przeciwnym wypadku kodem zakoñczenia wbudowanego polecenia command jest kod zakoñczenia polecenia.
compgen [opcja] [s³owo]
Tworzy mo¿liwe dopasowania uzupe³nieñ dla s³owa zgodnie z opcjami, które mog± byæ dowolnymi z opcji akceptowanych przez wbudowane polecenie complete, z wyj±tkiem -p i -r, i wypisuje dopasowania na standardowe wyj¶cie. Przy stosowaniu opcji -F lub -C, ró¿ne zmienne pow³oki ustawiane przez us³ugi programowalnego uzupe³niania, gdy s± dostêpne, nie bêd± mieæ u¿ytecznych warto¶ci.

Dopasowania bêd± tworzone w ten sam sposób, jakby kod uzupe³niania programowalnego tworzy³ je wprost ze specyfikacji uzupe³niania z tymi samymi flagami. Je¿eli podano s³owo, to wy¶wietlone zostan± wy³±cznie uzupe³nienia doñ pasuj±ce.

Warto¶ci± zwracan± jest prawda, chyba ¿e podano niepoprawn± opcjê lub nie zosta³y utworzone ¿adne dopasowania.

complete [-abcdefgjkvu] [-o opcjacomp] [-A akcja] [-G wzglob] [-W listas³ów] [-P przedrostek] [-S przyrostek]
[-X wzfiltr] [-F funkcja] [-C polecenie] nazwa [nazwa ...]
complete -pr [nazwa ...]
Okre¶la, w jaki sposób bêd± uzupe³niane argumenty dla ka¿dej z nazw. Je¿eli podano opcjê -p, lub nie podano ¿adnych opcji, to wypisywane s± istniej±ce specyfikacje uzupe³niania - w sposób, który pozwala na ich ponowne wykorzystanie jako wej¶cia. Opcja -r usuwa specyfikacjê uzupe³niania dla ka¿dej z nazw, lub je¶li nazw nie podano, wszystkie specyfikacje uzupe³niania.

Proces stosowania tych specyfikacji uzupe³nieñ podczas prób uzupe³niania s³ów omówiono powy¿ej w sekcji Programowalne uzupe³nianie.

Pozosta³e opcje, je¶li je podano, maj± ni¿ej opisane znaczenie. Argumenty opcji -G, -W i -X (i, je¶li to niezbêdne, -P i -S) powinny byæ cytowane dla ochrony przed interpretacj± jaka wyst±pi zanim zostanie wywo³ane polecenie complete.

-o opcjacomp
Warto¶æ opcjacomp reguluje kilka aspektów zachowania siê compspec wykraczaj±cych poza zwyk³e tworzenie uzupe³nieñ. opcjacomp przyjmuje jedn± z warto¶ci:
default
Stosuje domy¶lne uzupe³nianie readline je¶li compspec nie utworzy ¿adnych dopasowañ.
dirnames
Wykonuje uzupe³nianie nazw katalogów je¶li compspec nie utworzy ¿adnych dopasowañ.
filenames
Powiadamia readline, ¿e compspec tworzy nazwy plików, zatem mo¿e wykonaæ przetwarzanie specyficzne dla takich nazw (jak dodanie uko¶nika do nazw katalogów czy usuniêcie koñcowych spacji). Zaprojektowane do stosowania z funkcjami pow³oki.
-A akcja
akcja mo¿e byæ jedn± z poni¿szych, tworz±cych listê mo¿liwych dopasowañ:
alias
Nazwy aliasów. Mo¿na te¿ podaæ jako -a.
arrayvar
Nazwy zmiennych tablicowych.
binding
Nazwy przypisañ klawiszy readline.
builtin
Nazwy wbudowanych poleceñ pow³oki. Mo¿na te¿ podaæ jako -b.
command
Nazwy poleceñ. Mo¿na te¿ podaæ jako -c.
directory
Nazwy katalogów. Mo¿na te¿ podaæ jako -d.
disabled
Nazwy wy³±czonych poleceñ wbudowanych pow³oki.
enabled
Nazwy w³±czonych poleceñ wbudowanych pow³oki.
export
Nazwy wyeksportowanych zmiennych pow³oki. Mo¿na te¿ podaæ jako -e.
file
Nazwy plików. Mo¿na te¿ podaæ jako -f.
function
Nazwy funkcji pow³oki.
group
Nazwy grup. Mo¿na te¿ podaæ jako -g.
helptopic
Tematy pomocy akceptowane przez wbudowane polecenie help.
hostname
Nazwy hostów, pobrane z pliku okre¶lonego przez zmienn± pow³oki HOSTFILE.
job
Nazwy zadañ, je¿eli aktywne jest sterowanie zadaniami. Mo¿na te¿ podaæ jako -j.
keyword
Zastrze¿one s³owa pow³oki. Mo¿na te¿ podaæ jako -k.
running
Nazwy dzia³aj±cych zadañ, je¿eli aktywne jest sterowanie zadaniami.
setopt
Dozwolone argumenty opcji -o polecenia wbudowanego set.
shopt
Nazwy opcji pow³oki, takie, jakie akceptuje polecenie wbudowane shopt.
signal
Nazwy sygna³ów.
stopped
Nazwy zatrzymanych zadañ, je¶li aktywne jest sterowanie zadaniami.
user
Nazwy u¿ytkowników. Mo¿na te¿ podaæ jako -u.
variable
Nazwy wszystkich zmiennych pow³oki. Mo¿na te¿ podaæ jako -v.
-G wzglob
Wzorzec rozwijania nazw plików wzglob jest rozwijany, tworz±c listê mo¿liwych uzupe³nieñ.
-W listas³ów
listas³ów jest rozbijana przy zastosowaniu znaków ze zmiennej specjalnej IFS jako separatorów, a ka¿de ze s³ów wynikowych jest interpretowane. Mo¿liwe uzupe³nienia s± elementami listy wynikowej, pasuj±cymi do uzupe³nianego s³owa.
-C polecenie
polecenie wykonywane jest w ¶rodowisku podpow³oki, a jego wyj¶cie u¿ywane jest jako mo¿liwe uzupe³nienia.
-F funkcja
Funkcja pow³oki funkcja wykonywana jest w bie¿±cym ¶rodowisku pow³oki. Po jej zakoñczeniu, mo¿liwe uzupe³nienia pobierane s± z warto¶ci zmiennej tablicowej COMPREPLY.
-X wzfiltr
wzfiltr jest wzorcem u¿ywanym do rozwijania nazw plików. Stosowany jest do listy mo¿liwych uzupe³nieñ utworzonej przez poprzedzaj±ce go opcje i argumenty, a ka¿de pasuj±ce do niego uzupe³nienie jest usuwane z listy. Pocz±tkowy ! w wzfiltr powoduje negacjê wzorca; usuwane s± wówczas uzupe³nienia nie pasuj±ce do wzfiltr.
-P przedrostek
Po zastosowaniu wszystkich innych opcji na pocz±tku ka¿dego mo¿liwego uzupe³nienia jest dodawany przedrostek.
-S przyrostek
Po zastosowaniu wszystkich innych opcji na koñcu ka¿dego mo¿liwego uzupe³nienia jest do³±czany przyrostek.

Warto¶ci± zwracana jest prawda, chyba ¿e podano niepoprawn± opcjê, podano bez argumentu nazwa opcjê inn± ni¿ -p lub -r, usi³owano usun±æ specyfikacjê uzupe³niania dla nazwy, dla której nie istnieje ¿adna specyfikacja, albo te¿ podczas dodawania specyfikacji uzupe³niania wyst±pi³ b³±d.

continue [n]
Wznawia nastêpn± iteracjê obejmuj±cej je pêtli for, while, until lub select. Je¿eli podano n, wznawia n-t± obejmuj±c± pêtlê. n musi byæ > 1. Je¿eli n jest wiêksze ni¿ liczba obejmuj±cych pêtli, to wznawiana jest ostatnia z pêtli (,,najwy¿sza''). Warto¶æ zwracana wynosi 0, chyba ¿e pow³oka nie wykonuje pêtli podczas wykonywania continue.
declare [-afFirx] [-p] [nazwa[=warto¶æ]]
typeset [-afFirx] [-p] [nazwa[=warto¶æ]]
Deklaruje zmienne i/lub nadaje im atrybuty. Je¶li nie podano ¿adnych nazw, wy¶wietla warto¶ci zmiennych. Opcja -p bêdzie wy¶wietlaæ atrybuty i warto¶ci ka¿dej nazwy. Gdy u¿ywane jest -p, ignorowane s± dodatkowe opcje. Opcja -F zabrania wy¶wietlania definicji funkcji; wypisywane s± tylko nazwy i atrybuty funkcji. Opcja -F implikuje -f. Poni¿szych opcji mo¿na u¿yæ do ograniczenia wyników do zmiennych o okre¶lonym atrybucie lub do nadania zmiennym atrybutów:
-a
Ka¿da z nazw jest zmienn± tablicow± (zobacz Tablice powy¿ej).
-f
U¿ywa wy³±cznie nazw funkcji.
-i
Zmienna jest traktowana jak ca³kowita; gdy zmiennej jest przypisywana warto¶æ, wykonywana jest interpretacja wyra¿eñ arytmetycznych (zobacz OBLICZANIEWYRA¯EÑARYTMETYCZNYCH).
-r
Powoduje, ¿e dane nazwy staj± siê tylko-do-odczytu (readonly). Nazwom tym nie mo¿na przypisaæ warto¶ci nastêpnymi poleceniami przypisania. Nie mo¿na te¿ ich usun±æ za pomoc± unset.
-x
Zaznacza nazwê do wyeksportowania przez ¶rodowisko do kolejnych poleceñ.

U¿ycie `+' zamiast `-' wy³±cza atrybut, z wyj±tkiem tego, ¿e +a nie mo¿e byæ u¿ywane do niszczenia zmiennej tablicowej. U¿yte w funkcji, powoduj±, ¿e ka¿da z nazw staje siê lokalna, jak przy pomocy polecenia local. Zwracana jest warto¶æ 0, chyba ¿e napotkano niepoprawn± opcjê, próbê zdefiniowania funkcji przy pomocy ,,-f foo=bar'', przypisania warto¶ci zmiennej readonly, przypisania warto¶ci zmiennej tablicowej bez u¿ycia sk³adni przypisania z³o¿onego (zobacz Tablice powy¿ej), jedna z nazw nie jest poprawn± nazw± zmiennej pow³oki, usi³owano wy³±czyæ status readonly dla zmiennej tylko do odczytu, wy³±czyæ status tablicy dla zmiennej tablicowej albo próbowano wy¶wietliæ nieistniej±c± funkcjê przy pomocy -f.

dirs [-clpv] [+n] [-n]
Bez opcji wy¶wietla listê aktualnie zapamiêtanych katalogów. Domy¶lnie wy¶wietlana jest ona w pojedynczym wierszu, z nazwami katalogów rozdzielonymi spacjami. Katalogi dodawane s± do listy poleceniem pushd polecenie popd usuwa pozycje z listy.
+n
Wy¶wietla nt± pozycjê licz±c od lewej na li¶cie pokazywanej przez dirs przy wywo³aniu bez opcji; pocz±tkow± jest zero.
-n
Wy¶wietla nt± pozycjê licz±c od prawej na li¶cie pokazywanej przez dirs przy wywo³aniu bez opcji; pocz±tkow± jest zero.
-c
Czy¶ci stos katalogów usuwaj±c wszystkie jego pozycje.
-l
Tworzy d³u¿szy listing; domy¶lnie format listingu pos³uguje siê tyld± do oznaczania katalogu domowego.
-p
Wypisuje stos katalogów po jednej pozycji na wiersz.
-v
Wypisuje stos katalogów po jednej pozycji na wiersz, poprzedzaj±c ka¿d± z nich jej pozycj± (indeksem) w stosie.

Warto¶ci± zwracan± jest 0, chyba ¿e podano nieprawid³ow± opcjê lub n wskazuje poza koniec stosu katalogów.

disown [-ar] [-h] [zadanie ...]
Bez opcji, ka¿de z podanych zadañ usuwane jest z tablicy zadañ aktywnych. Je¶li u¿yto opcji -h, ka¿de zadanie nie jest usuwane z tablicy, ale jest jako takie zaznaczane, tak ¿e do zadania nie jest wysy³any sygna³ SIGHUP je¶li pow³oka otrzymuje SIGHUP. Je¶li nie podano zadania i nie u¿yto ani opcji -a ani -r, to u¿ywane jest zadanie bie¿±ce. Je¿eli podano zadanie, opcja -a oznacza usuniêcie lub zaznaczenie wszystkich zadañ; opcja -r bez argumentu zadania ogranicza akcjê do dzia³aj±cych zadañ. Warto¶ci± zwracan± jest 0, chyba ¿e zadanie nie okre¶la poprawnego zadania.
echo [-neE] [argument ...]
Wy¶wietla argumenty, rozdzielone spacjami, zakoñczone znakiem nowej linii. Kodem zakoñczenia jest zawsze 0. Je¿eli podano -n, to nie jest wysy³any koñcz±cy znak nowej linii. Je¿eli podano opcjê -e, w³±czana jest interpretacja podanych ni¿ej znaków specjalnych. Opcja -E wy³±cza interpretacjê tych znaków, nawet na systemach, gdzie s± one domy¶lnie interpretowane. Do dynamicznego sprawdzania, czy echo interpretuje domy¶lnie te znaki, czy nie, s³u¿y opcja pow³oki xpg_echo. echo nie interpretuje -- jako oznaczenia koñca opcji. echo interpretuje nastêpuj±ce sekwencje specjalne:
\a
dzwonek (alert)
\b
backspace
\c
pomiñ koñcz±cy znak nowej linii
\e
znak escape
\f
wysuw strony (form feed)
\n
znak nowej linii (new line)
\r
powrót karetki (carriage return)
\t
tabulacja pozioma (horizontal tab)
\v
tabulacja pionowa (vertical tab)
\\
odwrotny uko¶nik (backslash)
\nnn
o¶miobitowy znak, którego warto¶ci± jest ósemkowa liczba nnn (jedna do trzech cyfr)
\xHH
o¶miobitowy znak, którego warto¶ci± jest szesnastkowa liczba nnn (jedna lub dwie cyfry szesnastkowe)
enable [-adnps] [-f plik] [nazwa ...]
W³±cza i wy³±cza wbudowane polecenia pow³oki. Wy³±czenie poleceñ wbudowanych umo¿liwia wykonanie polecenia dyskowego maj±cego tê sam± nazwê, co wbudowane, bez podawania jego pe³nej nazwy ¶cie¿kowej, mimo i¿ pow³oka normalnie szuka poleceñ wbudowanych przed poleceniami dyskowymi. Je¿eli pos³u¿ono siê opcj± -n, wy³±czana jest ka¿da z nazw; w przeciwnym razie nazwy s± w³±czone. Na przyk³ad, chc±c u¿yæ pliku binarnego test znalezionego przez PATH zamiast wersji wbudowanej w pow³okê, nale¿y uruchomiæ ,,enable -n test''. Opcja -f oznacza za³adowanie nowego polecenia wbudowanego nazwa z obiektu dzielonego (shared object) plik, na systemach obs³uguj±cych dynamiczne ³adowanie. Opcja -d usunie polecenie wbudowane za³adowane poprzednio przez -f. Je¿eli nie podano ¿adnych argumentów nazwa lub je¶li podano opcjê -p, wypisywana jest lista poleceñ wbudowanych pow³oki. Bez innych argumentów opcyjnych, lista ta sk³ada siê ze wszystkich w³±czonych poleceñ wbudowanych. Je¶li podano -n, wypisywane s± tylko wy³±czone polecenia wbudowane. Je¿eli podano -a, wypisywana lista zawiera wszystkie polecenia wbudowane, ze wskazaniem przy ka¿dym czy jest ono w³±czone czy te¿ nie. Je¿eli podano -s, wyj¶cie ograniczone jest do POSIXowych ,,specjalnych'' poleceñ wbudowanych. Warto¶ci± zwracan± jest 0, chyba ¿e nazwa nie jest poleceniem wbudowanym pow³oki lub wyst±pi³ b³±d podczas ³adowania nowego polecenia wbudowanego z obiektu dzielonego.
eval [argument ...]
Argumenty s± czytane i ³±czone w pojedyncze polecenie. Polecenie to jest nastêpnie odczytywane i wykonywane przez pow³okê, za¶ jego kod zakoñczenia jest zwracany jako warto¶æ eval. Je¿eli nie na ¿adnych argumentów, lub wszystkie argumenty s± puste, eval zwraca 0.
exec [-cl] [-a nazwa] [polecenie [argumenty]]
Je¿eli podano polecenie, zastêpuje ono pow³okê. Nie tworzony jest ¿aden nowy proces. Argumenty staj± siê argumentami polecenia. Je¶li podano opcjê -l, umieszcza kreskê na pocz±tku zerowego argumentu przesy³anego do polecenia. Tak samo, jak robi to login(1). Opcja -c powoduje, ¿e polecenie zostanie wykonane z pustym ¶rodowiskiem. Je¿eli podano -a, pow³oka przesy³a do wykonywanego polecenia nazwê jako zerowy argument. Je¿eli polecenie z jakiego¶ powodu nie mo¿e zostaæ wykonane, to pow³oka nie-interaktywna koñczy pracê, chyba ¿e w³±czona jest opcja pow³oki execfail, wówczas zwraca niepowodzenie. Pow³oka interaktywna zwraca niepowodzenie je¶li plik nie mo¿e zostaæ wykonany. Je¿eli nie podano polecenia, przekierowania skutkuj± w bie¿±cej pow³oce, a kodem zakoñczenia jest 0. W przypadku b³êdu przekierowania kod zakoñczenia wynosi 1.
exit [n]
Powoduje, ¿e pow³oka koñczy pracê z kodem równym n. Je¶li pominiêto n, kodem zakoñczenia jest kod ostatniego wykonanego polecenia. Przed koñcem pracy pow³oki wykonywane jest przechwycenie sygna³u EXIT.
export [-fn] [nazwa[=s³owo]] ...
export -p
Podane nazwy zaznaczane s± do automatycznego wyeksportowania do ¶rodowiska nastêpnych wykonywanych poleceñ. Je¶li podano opcjê -f, to nazwy odnosz± siê do funkcji. Je¿eli nie podano ¿adnych nazw lub je¿eli podano opcjê -p, to wypisywana jest lista wszystkich eksportowanych w tej pow³oce nazw. Opcja -n powoduje usuniêcie cechy eksportowania z podanych zmiennych. export zwraca zerowy kod zakoñczenia, chyba ¿e napotkano nieprawid³ow± opcjê, jedna z nazw nie jest poprawn± nazw± zmiennej pow³oki lub podano -f z nazw±, która nie jest funkcj±.
fc [-e nazwa_e] [-nlr] [pierwsze] [ostatnie]
fc -s [wzorzec=zast±pienie] [polecenie]
Polecenie poprawiania (Fix Command). W pierwszej postaci, z listy historii wybierany jest zakres poleceñ od pierwszego do ostatniego. Pierwsze i ostatnie mog± byæ podawane jako ³añcuch (do odnalezienia ostatniego polecenia rozpoczynaj±cego siê tym ³añcuchem) lub jako liczba (indeks w li¶cie historii, gdzie liczba ujemna u¿ywana jest jako offset od numeru bie¿±cego polecenia), Je¿eli nie okre¶lono ostatniego, to jest ono ustawiane na bie¿±ce polecenie w przypadku listowania (tak ¿e ,,fc -l -10'' wypisuje ostatnich 10 poleceñ) i na pierwsze w pozosta³ych przypadkach. Je¿eli nie okre¶lono pierwszego, polecenia to jest ono ustawiane na poprzednie polecenie w przypadku edycji a na -16 przy listowaniu.

Opcja -n wstrzymuje wy¶wietlanie numerów poleceñ podczas listowania. Opcja -r odwraca kolejno¶æ poleceñ. Je¿eli podano opcjê -l, to polecenia listowane s± na standardowym wyj¶ciu. W przeciwnym razie dla pliku zawieraj±cego te polecenia wywo³ywany jest edytor podany przez nazwa_e. Je¿eli nie podano nazwa_e, u¿ywana jest warto¶æ FCEDIT, a warto¶æ EDITOR je¶li nie ustawiono FCEDIT. Je¿eli nie ustawiono ¿adnej z nich u¿ywany, jest vi Po zakoñczeniu edycji, wysy³ane edytowane polecenia s± wy¶wietlane przez echo i wykonywane.

W drugiej postaci, polecenie jest ponownie wykonywane po ka¿dej wymianie wyst±pienia wzorca przez zast±pienie. Przydatnym aliasem do wykorzystania z t± form± jest ,,r=fc -s'', tak, ¿e napisanie ,,r cc'' uruchamia ostatnie polecenie rozpoczynaj±ce siê od ,,cc'' a napisanie ,,r'' ponownie wykonuje ostatnie polecenie.

Je¿eli u¿yta zosta³a pierwsza postaæ, to warto¶ci± zwracan± jest 0, chyba ¿e napotkano nieprawid³ow± opcjê lub pierwszy albo ostatni okre¶laj± wiersze historii spoza zakresu. Je¿eli podano opcjê -e, warto¶ci± zwracan± jest warto¶æ ostatniego wykonanego polecenia lub niepowodzenie je¶li pojawi³ siê b³±d tymczasowego pliku poleceñ. Je¿eli u¿yta zosta³a druga postaæ, to zwracanym kodem jest kod ponownie wykonanego polecenia, chyba ¿e polecenie nie okre¶la poprawnego wiersza poleceñ -- wówczas fc zwraca pora¿kê.

fg [zadanie]
Wznawia zadanie na pierwszym planie i czyni je zadaniem bie¿±cym. Je¿eli nie podano zadania, u¿ywane jest bie¿±ce zadanie w pojêciu pow³oki. Warto¶ci± zwracan± jest warto¶æ polecenia umieszczonego na pierwszym planie, lub pora¿ka je¿eli fb uruchomiono przy wy³±czonej kontroli zadañ, lub uruchomiono je przy w³±czonej kontroli zadañ, ale zadanie nie okre¶la prawid³owego zadania lub zadanie okre¶la zadanie, które zosta³o uruchomione bez kontroli zadañ.
getopts ³añcuch_opcji nazwa [argumenty]
getopts u¿ywane jest przez procedury pow³oki do analizy parametrów pozycyjnych. ³añcuch opcji zawiera znaki opcji, jakie maj± byæ rozpoznawane; je¿eli po znaku wystêpuje dwukropek, to oczekuje siê, ¿e opcja bêdzie posiadaæ argument, który powinien byæ od niej oddzielony bia³ym znakiem. Jako znaki opcji mog± wyst±piæ dwukropek i znak zapytania. Przy ka¿dym wywo³aniu getopts umieszcza nastêpn± opcjê w zmiennej pow³oki nazwa, inicjuj±c nazwê je¶li nie istnia³a. Indeks nastêpnego argumentu do przetwarzania umieszczany jest w zmiennej OPTIND. OPTIND inicjowany jest na 1 za ka¿dym razem, gdy wywo³ywana jest pow³oka lub skrypt pow³oki. Gdy opcja wymaga argumentu, getopts umieszcza go w zmiennej OPTARG. Pow³oka nie resetuje OPTIND automatycznie; musi byæ on resetowany rêcznie pomiêdzy wielokrotnymi odwo³aniami do getopts w tym samym wywo³aniu pow³oki, je¶li u¿ywany ma byæ nowy zestaw parametrów.

Po napotkaniu koñca opcji, getopts koñczy pracê zwracaj±c warto¶æ wiêksz± od zera. OPTIND ustawiane jest na indeks pierwszego argumentu nie bêd±cego opcj±, za¶ nazwa ustawiana jest na ?.

getopts normalnie analizuje parametry pozycyjne, ale je¶li w argumentach, podano wiêcej argumentów, to getopts przetwarza je zamiast parametrów pozycyjnych.

getopts mo¿e zg³aszaæ b³êdy na dwa sposoby. Je¿eli pierwszym znakiem ³añcucha opcji jest dwukropek, to stosowane jest ciche (silent) zg³aszanie b³êdów. Przy zwyk³ej pracy komunikaty diagnostyczne wypisywane s± przy napotkaniu nieprawid³owych opcji lub brakuj±cych argumentów opcji. Je¿eli zmienna OPTERR ustawiona jest na 0, nie bêd± wy¶wietlane ¿adne komunikaty b³êdów, nawet je¶li pierwszym znakiem ³añcucha opcji nie jest dwukropek.

Przy napotkaniu nieprawid³owej opcji getopts umieszcza ? w nazwie i, je¶li nie pracuje w trybie cichym, wypisuje komunikat b³êdu i kasuje OPTARG. Je¿eli getopts pracuje w trybie cichym, to znaleziony znak opcji umieszczany jest w OPTARG i nie jest wypisywany ¿aden komunikat diagnostyczny.

Je¶li nie znaleziono wymaganego argumentu, a getopts nie pracuje w trybie cichym, w nazwa umieszczany jest znak zapytania (?), kasowane jest OPTARG i wy¶wietlany jest komunikat b³êdu. Je¿eli getopts pracuje w trybie cichym, to w nazwie umieszczany jest dwukropek (:), a OPTARG ustawiane jest na znaleziony znak opcji.

getopts zwraca prawdê, je¶li znaleziono okre¶lon± lub nie okre¶lon± opcjê. Zwraca fa³sz je¿eli napotkano koniec opcji lub pojawi³ siê b³±d.

hash [-r] [-p plik] [-t] [nazwa]
Dla ka¿dej nazwy okre¶lana i zapamiêtywana jest pe³na nazwa plikowa polecenia wyszukanego w katalogach $PATH . Je¿eli podano opcjê -p, nie jest wykonywane przeszukanie ¶cie¿ki, a plik u¿ywane jest jako pe³na nazwa pliku polecenia. Opcja -r powoduje, ¿e pow³oka zapomina wszystkie zapamiêtane wcze¶niej miejsca. Je¶li podano opcjê -t, to wypisywana jest odpowiadaj±ca nazwie pe³na nazwa pliku. Je¿eli przy wiêcej ni¿ jednym argumencie nazwy podano -t, to przed ka¿d± przechowywan± pe³n± nazw± wypisywana jest nazwa. Je¿eli nie podano ¿adnych argumentów, to wypisywana jest informacja o zapamiêtanych poleceniach. Kodem zwracanym jest prawda, chyba ¿e nie odnaleziono nazwy lub podano nieprawid³ow± opcjê.
help [-s] [wzorzec]
Wy¶wietla pomocne informacje o poleceniach wbudowanych. Je¿eli podano wzorzec, to help daje szczegó³ow± pomoc dotycz±c± wszystkich poleceñ pasuj±cych do wzorca; w przeciwnym razie wypisywana jest pomoc dla wszystkich poleceñ wbudowanych i struktur steruj±cych pow³oki. Opcja -s ogranicza wy¶wietlan± informacjê do krótkiego opisu sk³adni. Zwracany jest kod 0, chyba ¿e ¿adne z poleceñ nie pasuje do wzorca.
history [n]
history -c
history -d offset
history -anrw [plik]
history -p arg [arg ...]
history -s arg [arg ...]
Bez ¿adnych opcji, wy¶wietla listê historii poleceñ z numerami wierszy. Wiersze ukazane z * zosta³y zmienione. Argument n pokazuje jedynie ostatnich n wierszy. Je¿eli podano plik, to u¿ywany jest on jako nazwa pliku historii; je¶li nie, to u¿ywana jest warto¶æ HISTFILE. Opcje, je¿eli je podano, maj± nastêpuj±ce znaczenie:
-c Czy¶ci listê historii usuwaj±c wszystkie jej pozycje.
-d offset
Usuwa wpis historii z pozycji offset.
-a
Dodaje ,,nowe'' wiersze (wprowadzone od pocz±tku bie¿±cej sesji bash) do pliku historii.
-n
Wczytuje do bie¿±cej listy wiersze jeszcze nie przeczytane z pliku historii. S± to wiersze do³±czone do pliku historii od chwili rozpoczêcia bie¿±cej sesji pracy bash.
-r
Czyta zawarto¶æ pliku historii i pos³uguje siê ni± jako bie¿±c± list± historii.
-w
Zapisuje bie¿±c± listê do pliku historii, nadpisuj±c jego zawarto¶æ.
-p
Na zadanych argumentach wykonuje podstawianie historii (history substitution). Wy¶wietla wyniki na standardowym wyj¶ciu. Nie zachowuje wyników na li¶cie. Ka¿dy z argumentów musi byæ cytowany, by wy³±czyæ normaln± interpretacjê historii.
-s
Zachowuje argumenty na li¶cie historii jako pojedyncz± pozycjê. Przed dodaniem argumentów z listy usuwane jest ostatnie polecenie.

Warto¶ci± zwracan± jest 0, chyba ¿e napotkano nieprawid³ow± opcjê lub podczas odczytu czy zapisu pliku historii pojawi³ siê b³±d, podano niepoprawny argument offset opcji -d, lub nie powiod³a siê interpretacja historii podanej jako argument -p.

jobs [-lnprs] [ zadanie ... ]
jobs -x polecenie [ argumenty ... ]
Pierwsza postaæ podaje aktywne zadania. Opcje maj± nastêpuj±ce znaczenie:
-l
Oprócz zwyk³ej informacji podaje identyfikatory procesów.
-p
Listuje tylko ID procesu lidera grupy procesów zadania.
-n
Wy¶wietla wy³±cznie informacjê o zadaniach, które zmieni³y status od chwili, gdy u¿ytkownik by³ ostatnio powiadamiany o ich statusie.
-r
Ogranicz wyniki do zadañ pracuj±cych.
-s
Ogranicz wyniki do zadañ zatrzymanych.

Je¿eli podano zadanie, wyniki ograniczane s± do informacji o tym zadaniu. Kodem zwracanym jest 0, chyba ¿e napotkano nieprawid³ow± opcjê lub podano nieprawid³owe zadanie.

Je¿eli podano opcjê -x, to jobs zastêpuje wszelkie zadania znalezione w poleceniu lub argumentach odpowiednim ID grupy procesów, wykonuje polecenie przesy³aj±c mu argumenty, i zwraca jego kod zakoñczenia.

kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
kill -l [sigspec | exit_status]
Wysy³a sygna³y okre¶lony przez sigspec lub signum do procesu okre¶lonego przez pid lub jobspec. sigspec jest albo nazw± sygna³u, jak np. SIGKILL albo numerem sygna³u; signum jest numerem sygna³u. Je¿eli sigspec jest nazw± sygna³u, to mo¿e ona zostaæ podana z przedrostkiem SIG lub bez niego. Je¶li nie podano sigspec, to przyjmuje siê SIGTERM. Opcja -l listuje nazwy sygna³ów. Je¿eli przy podanym -l u¿yto jakich¶ argumentów, to listowane s± sygna³y odpowiadaj±ce tym argumentom, a kodem zwracanym jest 0. Argument exit_status opcji -l jest liczb± okre¶laj±c± numer sygna³u lub kod zakoñczenia procesu przerwanego przez sygna³. kill zwraca prawdê, je¶li przynajmniej jeden z sygna³ów zosta³ pomy¶lnie przes³any, lub fa³sz, je¶li pojawi³ siê b³±d lub napotkano niepoprawn± opcjê.
let arg [arg ...]
Ka¿dy argument jest wyra¿eniem arytmetycznym, jakie ma zostaæ zinterpretowane (zobacz OBLICZANIEWYRA¯EÑARYTMETYCZNYCH). Je¿eli ostatni z nich interpretowany jest jako zero, to let zwraca 1; w przeciwnym wypadku zwracane jest 0.
local [opcja] [nazwa[=warto¶æ] ...]
Dla ka¿dego argumentu tworzona jest zmienna lokalna o nazwie nazwa i jest jej przypisywana warto¶æ. Opcj± mo¿e byæ ka¿da z opcji akceptowanych przez declare. Gdy local u¿ywane jest wewn±trz funkcji, powoduje, ¿e zmienna nazwa ma zasiêg widzialno¶ci ograniczony do tej funkcji i jej potomków. Bez operandów, local wysy³a listê zmiennych lokalnych na standardowe wyj¶cie. B³êdem jest u¿ycie local poza funkcj±. Zwracany jest kod 0, chyba ¿e local zostanie u¿yte poza funkcj± lub podano nieprawid³ow± nazwê, albo nazwa jest zmienn± tylko do odczytu.
logout
Koñczy pracê pow³oki zg³oszeniowej.
popd [-n] [+n] [-n]
Usuwa pozycje ze stosu katalogów. Bez argumentów, usuwa katalog z wierzcho³ka stosu i wykonuje cd do nowego katalogu na wierzcho³ku. Argumenty, je¶li wystêpuj±, maj± nastêpuj±ce znaczenie:
+n
Usuwa nt± pozycjê, licz±c od lewej, listy pokazywanej przez dirs, zaczynaj±c od zera. Na przyk³ad ,,popd +0'' usuwa pierwszy katalog, a ,,popd +1'' drugi.
-n
Usuwa nt± pozycjê, licz±c od prawej, listy pokazywanej przez dirs, zaczynaj±c od zera. Na przyk³ad ,,popd -0'' usuwa ostatni katalog, ,,popd -1'' przedostatni.
-n
Nie wykonuje zwyk³ej zmiany katalogu podczas usuwania katalogów ze stosu, tak ¿e zmieniana jest tylko zawarto¶æ stosu.

Je¿eli polecenie popd powiedzie siê, to wykonywane jest równie¿ dirs, a kodem zwracanym jest 0. popd zwraca fa³sz je¶li napotkano nieprawid³ow± opcjê, stos katalogów jest pusty, podano nieistniej±c± pozycjê stosu lub nie uda³a siê zmiana katalogu.

printf format [argumenty]
Zapisuje sformatowane argumenty na standardowe wyj¶cie przy pomocy zadanego formatu. format jest ³añcuchem znakowym zawieraj±cym trzy rodzaje obiektów: zwyk³e znaki, które s± po prostu kopiowane na standardowe wyj¶cie, sekwencje specjalne, które s± konwertowane i kopiowane na standardowe wyj¶cie, i specyfikacje formatu, z których ka¿da powoduje wypisanie nastêpnego kolejnego argumentu. Oprócz standardowych formatów printf(1), %b powoduje, ¿e printf interpretuje sekwencje specjalne w odpowiednim argumencie, za¶ %q powoduje, ¿e printf wysy³a odpowiedni argument w formacie, jaki mo¿e byæ ponownie wykorzystany jako wej¶cie pow³oki.

W razie potrzeby format wykorzystywany jest ponownie, a¿ do obs³u¿enia wszystkich argumentów. Je¿eli format wymaga wiêkszej ilo¶ci argumentów ni¿ podano, to dodatkowe specyfikacje formatu zachowuj± siê tak, jakby dostarczono im odpowiednio warto¶æ zerow± lub ³añcuch pusty. Zwracana jest warto¶æ zero w przypadku powodzenia, niezerowa przy pora¿ce.

pushd [-n] [katalog]
pushd [-n] [+n] [-n]
Dodaje katalog na wierzcho³ek stosu katalogów, albo obraca stos, czyni±c nowy wierzcho³ek stosu bie¿±cym katalogiem roboczym. Bez argumentów, zamienia miejscami dwa najwy¿sze katalogi stosu [wierzcho³ek i nastêpny] i zwraca 0, chyba ¿e stos jest pusty. Argumenty, je¶li je podano, maj± nastêpuj±ce znaczenie:
+n
Obraca stos, tak ¿e nty katalog (licz±c od lewej listy pokazywanej przez dirs, poczynaj±c od zera) staje siê wierzcho³kiem.
-n
Obraca stos, tak ¿e nty katalog (licz±c od prawej listy pokazywanej przez dirs, poczynaj±c od zera) staje siê wierzcho³kiem.
-n
Nie wykonuje zwyk³ej zmiany katalogu podczas dodawania katalogów do stosu, tak ¿e zmieniany jest tylko stos.
katalog
Odk³ada katalog na wierzcho³ek stosu, czyni±c go nowym bie¿±cym katalogiem roboczym.

Je¿eli polecenie pushd powiod³o siê, to wykonywane jest równie¿ dirs. Je¿eli u¿ywana jest pierwsza postaæ pushd, to zwracane jest 0, chyba ¿e nie uda³o siê cd na katalog. Przy drugiej postaci, pushd zwraca 0, chyba ¿e stos katalogów jest pusty, podano nieistniej±cy element stosu lub nie powiod³a siê zmiana katalogu na zadany nowy katalog bie¿±cy.

pwd [-LP]
Wypisuje bezwzglêdn± nazwê pliku bie¿±cego katalogu roboczego. Pokazana nazwa nie zawiera ¿adnych dowi±zañ symbolicznych je¶li podano opcjê -P albo w³±czona jest opcja -o physical wbudowanego polecenia set. Je¶li u¿yto opcji -L, wypisana nazwa ¶cie¿kowa mo¿e zawieraæ dowi±zania symboliczne. Zwracany kod wynosi 0, chyba ¿e podczas odczytu nazwy bie¿±cego katalogu pojawi siê b³±d lub podano nieprawid³ow± opcjê.
read [-ers] [-t timeout] [-a anazwa] [-p zachêta] [-n nznak] [-d sep] [nazwa ...]
Ze standardowego wej¶cia czytany jest pojedynczy wiersz, a jego pierwsze s³owo jest przypisywane do pierwszej nazwy, drugie s³owo do drugiej nazwy i tak dalej, przy czym pozosta³e na koniec s³owa i rozdzielaj±ce je separatory przypisane zostan± do ostatniej nazwy. Je¿eli ze standardowego wej¶cia przeczytano mniej s³ów ni¿ podanych zosta³o nazw, to pozosta³ym nazwom przypisywane s± puste warto¶ci. Do podzia³u wiersza na s³owa wykorzystywane s± znaki z IFS. Znaku odwrotnego uko¶nika (\) mo¿na u¿yæ do usuniêcia specjalnego znaczenia nastêpnego czytanego znaku oraz do oznaczenia kontynuacji wiersza. Opcje, je¶li je podano, maj± nastêpuj±ce znaczenie:
-a anazwa
S³owa s± przypisywane do kolejnych indeksów zmiennej tablicowej anazwa, poczynaj±c od 0. anazwa jest kasowana przed przypisaniem nowych warto¶ci. Inne argumenty nazwa s± ignorowane.
-d sep
Pierwszy znak sep s³u¿y do zakoñczenia wiersza wej¶cia, zamiast znaku nowej linii.
-e
Je¿eli standardowe wej¶cie pochodzi z terminala, to do uzyskania wiersza u¿ywane jest readline (zobacz READLINE powy¿ej).
-n nznak
read powraca po przeczytaniu nznak znaków, zamiast czekaæ na ca³y wiersz wej¶cia.
-p zachêta
Wy¶wietla zachêtê (prompt) na standardowym wyj¶ciu b³êdów, bez koñcz±cego znaku nowej linii, przed prób± odczytu wej¶cia. Zachêta wy¶wietlana jest tylko je¶li wej¶cie pochodzi z terminala.
-r
Odwrotny uko¶nik nie dzia³a jako znak specjalny. Traktowany jest jako czê¶æ wiersza. W szczególno¶ci, para odwrotny uko¶nik-znak nowej linii nie mo¿e byæ wykorzystana jako kontynuacja wiersza.
-s
Tryb cichy. Je¿eli wej¶cie pochodzi z terminala, to znaki nie s± powtarzane (bez echa).
-t timeout
Powoduje, ¿e read zwraca niepowodzenie, je¶li w ci±gu timeout sekund nie zostanie przeczytany pe³ny wiersz wej¶cia. Opcja ta nie dzia³a, je¿eli odczyt nie jest prowadzony z terminala lub potoku.

Je¶li nie podano ¿adnych nazw, odczytany wiersz przypisywany jest zmiennej REPLY. Zwracany kod wynosi 0, chyba ¿e napotkano koniec pliku lub read przekroczy czas oczekiwania.

readonly [-apf] [nazwa ...]
Podane nazwy oznaczane s± jako readonly; warto¶ci tych nazw nie mog± byæ zmieniane nastêpuj±cymi pó¼niej przypisaniami. Je¶¿li podano opcjê -f, oznaczane s± funkcje o nazwach odpowiadaj±cych nazwom. Opcja -a ogranicza zmienne do tablic. Je¶li nie podano argumentów nazw lub je¶li podano opcjê -p, wypisywane jest zestawienie wszystkich nazw o atrybucie readonly. Opcja -p powoduje, ¿e wyniki bêd± wy¶wietlane w formacie, który mo¿e byæ ponownie wykorzystany jako wej¶cie. Zwracany jest kod równy 0, chyba ¿e napotkano nieprawid³ow± opcjê, jedna z nazw nie jest poprawn± nazw± zmiennej pow³oki lub podano -f z nazw±, która nie jest funkcj±.
return [n]
Powoduje, ¿e funkcja koñczy pracê zwracaj±c warto¶æ okre¶lon± przez n. Je¶li pominiêto n, kodem zakoñczenia jest kod ostatniego polecenia wykonanego w ciele funkcji. Je¿eli zostanie u¿yte poza funkcj±, ale podczas wykonywania skryptu przez polecenie . (source), powoduje zatrzymanie wykonywania tego skryptu przez pow³okê i zwrócenie albo n albo kodu zakoñczenia ostatniego wykonanego w skrypcie polecenia. Je¿eli zostanie u¿yte poza funkcj± i nie podczas wykonywania skryptu przez ., zwracany jest fa³sz.
set [--abefhkmnptuvxBCHP] [-o opcja] [arg ...]
Bez opcji, wy¶wietlane s± nazwa i warto¶æ ka¿dej ze zmiennych pow³oki, w formacie który mo¿e byæ ponownie wykorzystany jako wej¶cie. Wyniki s± sortowane zgodnie z bie¿±cymi ustawieniami locale. Gdy podane s± opcje, ustawiaj± one lub kasuj± atrybuty pow³oki. Argumenty pozosta³e po przetworzeniu opcji traktowane s± jako warto¶ci parametrów pozycyjnych i przypisywane, kolejno, do $1, $2, ... $n. Opcje, je¶li je podano, maj± nastêpuj±ce znaczenie:
-a
Automatycznie zaznacza zmienione lub utworzone zmienne i funkcje do wyeksportowania ich do ¶rodowiska kolejnych poleceñ.
-b
Natychmiast podaje status zakoñczonych zadañ drugoplanowych, zamiast czyniæ to przed nastêpn± podstawow± zachêt±. Dzia³a tylko je¶li w³±czona jest kontrola zadañ.
-e
Zakoñcz natychmiast je¶li polecenie proste (zobacz GRAMATYKA POW£OKI powy¿ej) koñczy pracê z kodem niezerowym. Pow³oka nie koñczy pracy, je¶li polecenie, które siê nie powiod³o jest czê¶ci± pêtli until lub while, czê¶ci± instrukcji if, czê¶ci± listy && lub || lub warto¶æ zwrócona przez polecenie zosta³a odwrócona przez !. Przed zakoñczeniem pracy pow³oki wykonywana jest pu³apka na sygna³ ERR, je¶li by³a ustawiona.
-f
Wy³±cza rozwijanie nazw plików.
-h
Zapamiêtuje po³o¿enie poleceñ przy wyszukiwania ich do wykonania. Domy¶lnie w³±czone.
-k
Wszystkie argumenty wystêpuj±ce w postaci instrukcji przypisania umieszczane s± w ¶rodowisku polecenia, nie za¶ tylko te, które poprzedzaj± nazwê polecenia.
-m
Tryb monitorowania. W³±czona jest kontrola zadañ. Opcja ta jest domy¶lnie w³±czona dla pow³ok interaktywnych na systemach j± obs³uguj±cych (zobacz STEROWANIE ZADANIAMI powy¿ej). Procesy drugoplanowe dzia³aj± w odrêbnej grupie procesów a po ich zakoñczeniu wypisywany jest wiersz zawieraj±cy ich kod zakoñczenia.
-n
Odczytuje polecenia, ale nie ich nie wykonuje. Mo¿e byæ wykorzystane do sprawdzenia b³êdów sk³adni w skrypcie pow³oki. Ignorowane przez pow³oki interaktywne.
-o nazwa-opcji
Nazw± opcji mo¿e byæ jedna z poni¿szych:
allexport
To samo, co -a.
braceexpand
To samo, co -B.
emacs
U¿yj interfejsu edycji wiersza poleceñ w stylu emacsa. W³±czone domy¶lnie, je¶li pow³oka jest interaktywna, chyba ¿e zosta³a uruchomiona z opcj± --noediting.
errexit
To samo, co -e.
hashall
To samo, co -h.
histexpand
To samo, co -H.
history
W³±cza historiê poleceñ, jak opisano powy¿ej w sekcji HISTORII. Opcja ta jest domy¶lnie w³±czona w pow³okach interaktywnych.
ignoreeof
Efekt jest taki, jakby zosta³o wykonane polecenie pow³oki ,,IGNOREEOF=10'' (zobacz powy¿ej Zmienne pow³oki).
keyword
To samo, co -k.
monitor
To samo, co -m.
noclobber
To samo, co -C.
noexec
To samo, co -n.
noglob
To samo, co -f.
nolog
Obecnie ignorowane.
notify
To samo, co -b.
nounset
To samo, co -u.
onecmd
To samo, co -t.
physical
To samo, co -P.
posix
Zmienia zachowanie bash tam, gdzie domy¶lne dzia³anie ró¿ni siê od standardu POSIX 1003.2, tak by spe³niaæ standard (tryb posix).
privileged
To samo, co -p.
verbose
To samo, co -v.
vi
U¿ywa interfejsu edycji wiersza poleceñ w stylu vi.
xtrace
To samo, co -x.

Je¿eli podano -o bez nazwy-opcji, to wypisywane s± warto¶ci bie¿±cych opcji. Je¿eli podano +o bez nazwy-opcji, na standardowym wyj¶ciu wy¶wietlana jest seria poleceñ set potrzebnych do odtworzenia aktualnych ustawieñ opcji.

-p
W³±cza tryb uprzywilejowany (privileged). W tym trybie pliki $ENV i $BASH_ENV nie s± przetwarzane, funkcje pow³oki nie s± dziedziczone ze ¶rodowiska, a zmienna SHELLOPTS, je¶li wystêpuje w ¶rodowisku, jest ignorowana. Je¶li pow³oka zosta³a uruchomiona z efektywnym id u¿ytkownika (grupy) ró¿nych od id rzeczywistego a nie podano opcji -p, to podejmowane s± opisane wy¿ej akcje a efektywny id u¿ytkownika jest ustawiany na identyfikator rzeczywisty. Je¿eli przy uruchamianiu podano opcjê -p, to efektywny identyfikator u¿ytkownika nie jest resetowany. Wy³±czenie tej opcji powoduje, ¿e identyfikatory efektywne u¿ytkownika i grupy zostan± ustawione na identyfikatory rzeczywiste.
-t
Koñczy pracê po przeczytaniu i wykonaniu jednego polecenia.
-u
Podczas interpretacji parametrów traktuje nieustawione zmienne jako b³±d. Je¿eli wykonywana jest próba interpretacji nieustawionej zmiennej, to pow³oka wypisuje komunikat o b³êdzie i, je¶li nie jest interaktywna, koñczy pracê z niezerowym kodem.
-v
Wypisuje wiersze wej¶ciowe pow³oki przy ich odczytywaniu.
-x
Po interpretacji ka¿dego polecenia prostego, wy¶wietla zinterpretowan± warto¶æ PS4, po której nastêpuje polecenie i jego zinterpretowane argumenty.
-B
Pow³oka wykonuje interpretacj± nawiasów (zobacz Interpretacja nawiasów powy¿ej). Domy¶lnie w³±czone.
-C
Je¶li w³±czone, bash nie nadpisuje istniej±cego pliku przy u¿yciu operatorów przekierowania >, >& i <>. Mo¿na to omin±æ tworz±c pliki wyj¶ciowe przy u¿yciu operatora przekierowania >| zamiast >.
-H
W³±cza zastêpowanie historii w stylu !. Opcja ta jest domy¶lnie w³±czona dla pow³oki interaktywnej.
-P
Je¿eli jest ustawiona, to pow³oka nie pod±¿a za dowi±zaniami symbolicznymi podczas wykonywania poleceñ zmieniaj±cych bie¿±cy katalog roboczy, jak cd. U¿ywa zamiast tego fizycznej struktury katalogów. Domy¶lnie, bash pod±¿a za logicznym ³añcuchem katalogów podczas wykonywania poleceñ zmieniaj±cych bie¿±cy katalog roboczy.
--
Je¿eli po tej opcji nie wystêpuj± ¿adne argumenty, to parametry pozycyjne s± kasowane. W przeciwnym razie, parametry pozycyjne ustawiane s± na argumenty, nawet je¶li niektóre z nich zaczynaj± siê od znaku -.
-
Sygnalizuje koniec opcji, powoduj±c przypisanie wszystkich pozosta³ych argumentów do parametrów pozycyjnych. Opcje -x i -v s± wy³±czane. Je¿eli nie ma argumentów, to parametry pozycyjne pozostaj± bez zmian.

Opcje s± domy¶lnie wy³±czone, chyba ¿e wskazano inaczej. U¿ycie + zamiast - spowoduje, ¿e opcje te zostan± wy³±czone. Opcje mog± tak¿e zostaæ okre¶lone jako argumenty wywo³ania pow³oki. Bie¿±cy zestaw opcji mo¿na znale¼æ w $-. Zwracanym kodem jest zawsze prawda, chyba ¿e napotkano nieprawid³ow± opcjê.

shift [n]
Parametrom pozycyjne od n+1 ... zmieniaj± nazwy $1 .... parametry reprezentowane przez liczby $# w dó³ do $#-n+1 s± usuwane. n musi byæ liczb± nieujemn± mniejsz± lub równ± $#. Je¿eli n wynosi 0, parametry nie s± zmieniane. Je¿eli nie podano n, zak³ada siê, ¿e wynosi 1. Je¿eli n jest wiêksze od $#, parametry pozycyjne nie s± zmieniane. Kod zakoñczenia jest wiêkszy od zera je¿eli n jest wiêksze od $# lub mniejsze od zera; w przeciwnym wypadku 0.
shopt [-pqsu] [-o] [nazwa_opcji ...]
Prze³±cza warto¶ci zmiennych steruj±cych opcjonalnym zachowaniem pow³oki. Bez ¿adnych opcji, albo z opcj± -p, wy¶wietlana jest lista wszystkich daj±cych siê ustawiæ opcji, ze wskazaniem dla ka¿dej czy jest ona ustawiona czy nie. Opcja -p powoduje, ¿e wyniki bêd± wy¶wietlane w postaci daj±cej siê ponownie wykorzystaæ jako wej¶cie. Pozosta³e opcje maj± nastêpuj±ce znaczenie:
-s
W³±cz (ustaw) ka¿d± nazwê_opcji.
-u
Wy³±cz (usuñ) ka¿d± nazwê_opcji.
-q
Zaniechaj zwyk³ego wy¶wietlania (tryb cichy); zwracany kod wskazuje na to czy nazwa_opcji jest ustawiona czy nie ustawiona. Je¿eli z -q podano wiele argumentów nazw_opcji, to zwracanym kodem jest zero, gdy wszystkie nazwy_opcji s± w³±czone; w przeciwnym razie kod jest niezerowy.
-o
Ogranicza warto¶ci nazwy_opcji do warto¶ci zdefiniowanych dla opcji -o wbudowanego polecenia set.

Je¿eli u¿yto albo -s albo -u bez argumentów nazw_opcji, wy¶wietlanie ogranicza siê do tych opcji, które, odpowiednio, s± ustawione b±d¼ nieustawione. Je¿eli nie wskazano inaczej, opcje shopt s± domy¶lnie wy³±czone (nie ustawione).

Przy listowaniu opcji zwracany jest kod zerowy je¶li wszystkie nazwy_opcji s± w³±czone, niezerowy w przeciwnym wypadku. Przy ustawianiu lub kasowaniu opcji zwracany jest zerowy kod, chyba ¿e nazwa_opcji nie jest poprawn± opcj± pow³oki.

Lista opcji shopt obejmuje:

cdable_vars
Je¶li jest ustawiona, to nie bêd±cy katalogiem argument wbudowanego polecenia cd uwa¿any jest za nazwê zmiennej; warto¶ci± tej zmiennej jest katalog, na który ma nast±piæ zmiana.
cdspell
Je¶li jest ustawiona, to pomniejsze b³êdy w pisowni sk³adowej katalogu w poleceniu cd bêd± poprawiane. Sprawdzenie takich b³êdów obejmuje znaki zamienione miejscami, znaki pominiête i pojedyncze zbêdne znaki. Je¿eli znaleziono poprawkê, wypisywana jest poprawna nazwa pliku a polecenie kontynuuje dzia³anie. Opcja ta jest wykorzystywana tylko przez pow³oki interaktywne.
checkhash
Je¶li jest ustawiona, bash sprawdza przed prób± wykonania polecenia znalezionego w tablicy mieszaj±cej, czy polecenie to istnieje. Je¿eli ju¿ nie istnieje, to wykonywane jest zwyk³e przeszukiwanie ¶cie¿ki.
checkwinsize
Je¿eli jest ustawione, bash sprawdza rozmiar okna po ka¿dym poleceniu i, je¶li zachodzi potrzeba, aktualizuje warto¶æ LINES i COLUMNS.
cmdhist
Je¿eli jest ustawione, bash usi³uje zapisaæ wszystkie wiersze polecenia wielowierszowego w tej samej pozycji historii. Pozwala to na ³atw± ponown± edycjê poleceñ obejmuj±cych wiele wierszy.
dotglob
Je¿eli jest ustawione, to bash do wyników rozwiniêcia nazw plików w³±cza tak¿e nazwy plików rozpoczynaj±ce siê kropk± `.'.
execfail
Je¿eli jest ustawione, to pow³oka nie-interaktywna nie zakoñczy pracy nie mog±c wykonaæ pliku okre¶lonego jako argument wbudowanego polecenia exec. Pow³oka interaktywna nie koñczy pracy, je¶li exec zawiedzie.
expand_aliases
Je¿eli jest ustawiona, aliasy s± interpretowane jak opisano powy¿ej w ALIASY. Opcja ta jest w³±czona domy¶lnie dla pow³ok interaktywnych.
extglob
Je¶li jest w³±czona, w³±czane s± rozszerzone funkcje dopasowywania wzorców opisane powy¿ej w Rozwijanie nazw plików.
histappend
Je¿eli jest ustawiona, to do pliku o nazwie wskazanej zmienn± HISTFILE podczas koñczenia pracy przez pow³okê dodawana jest lista historii, zamiast nadpisywania tego pliku list±.
histreedit
Je¿eli jest ustawione, a u¿ywane jest readline, to u¿ytkownik ma mo¿liwo¶æ ponownej edycji nieudanego podstawienia historii historii.
histverify
Je¿eli jest ustawione, a u¿ywane jest readline, to wyniki podstawiania historii nie s± natychmiast przesy³ane do analizatora pow³oki. Zamiast tego, wiersz wynikowy ³adowany jest do bufora edycyjnego readline, pozwalaj±c na dalsze zmiany.
hostcomplete
Je¿eli jest ustawione, a u¿ywane jest readline, bash bêdzie usi³owaæ wykonaæ uzupe³nianie nazwy hosta podczas uzupe³niania s³owa zawieraj±cego @ (zobacz Uzupe³nianie w READLINE powy¿ej). Domy¶lnie w³±czone.
huponexit
Je¿eli jest ustawione, to bash wy¶le SIGHUP do wszystkich zadañ podczas koñczenia pracy interaktywnej pow³oki zg³oszeniowej.
interactive_comments
Je¶li jest w³±czone, pozwala by s³owo rozpoczynaj±ce siê od # powodowa³o pominiêcie tego s³owa i wszystkich pozosta³ych znaków wiersza w pow³oce interaktywnej (zobacz powy¿ej KOMENTARZE). Opcja domy¶lnie w³±czona.
lithist
Je¶li jest ustawione, a w³±czona jest opcja cmdhist, to polecenia wielowierszowe zachowywane s± w historii w miarê mo¿liwo¶ci z osadzonymi znakami nowej linii zamiast przy u¿yciu ¶redników jako separatorów.
login_shell
Pow³oka ustawia tê opcjê je¶li zostanie uruchomiona jako zg³oszeniowa (zobacz WYWO£ANIE powy¿ej). Ta warto¶æ nie mo¿e byæ zmieniona.
mailwarn
Je¿eli jest ustawione, za¶ do pliku, w którym sprawdza pocztê bash siêgano od czasu ostatniego sprawdzania, to zostanie wy¶wietlony komunikat ,,The mail in plikpoczty has been read'' (Poczta w plikpoczty zosta³a przeczytana).
no_empty_cmd_completion
Je¶li jest ustawione, i stosowane jest readline, to bash nie bêdzie usi³owa³ szukaæ w PATH mo¿liwych uzupe³nieñ, gdy próba uzupe³niania wyst±pi w pustym wierszu.
nocaseglob
Je¶li zosta³o ustawione, to bash przy rozwijaniu nazw plików dopasowuje je nie zwracaj±c uwagi na wielko¶æ liter (zobacz Rozwijanie nazw plików powy¿ej).
nullglob
Je¶li jest ustawione, to, bash pozwala by wzorce nie dopasowuj±ce ¿adnych plików (zobacz Rozwijanie nazw plików powy¿ej) rozwija³y siê w ³añcuch pusty, zamiast na same siebie.
progcomp
Je¿eli jest ustawione, to w³±czone s± us³ugi programowalnego uzupe³niania (zobacz powy¿ej Programowalne uzupe³nianie). Domy¶lnie w³±czone.
promptvars
Je¿eli jest ustawione, to ³añcuchy zachêty podlegaj± interpretacji zmiennych i podstawianiu parametrów po interpretacji zachêty opisanej w ZACHÊTA powy¿ej. Opcja ta jest domy¶lnie w³±czona.
restricted_shell
Pow³oka ustawia tê opcjê je¶li zosta³a uruchomiona w trybie okrojonym (zobacz POW£OKA OKROJONA poni¿ej). Warto¶æ ta nie mo¿e byæ zmieniona. Nie jest ona resetowana podczas odczytu plików startowych, pozwalaj±c im na odkrycie czy pow³oka jest okrojona czy nie.
shift_verbose
Je¿eli jest ustawiona, to wbudowane shift wypisuje komunikat o b³êdzie gdy liczba przesuniêæ (przez shift) przekracza liczbê parametrów pozycyjnych.
sourcepath
Je¶li jest ustawiona, to polecenie wbudowane source (.) pos³uguje siê warto¶ci± PATH do znalezienia katalogu zawieraj±cego plik podany jako argument. Opcja domy¶lnie w³±czona.
xpg_echo
Je¿eli jest ustawiona, to dla wbudowanego polecenia echo w³±czane jest domy¶lne interpretowanie sekwencji specjalnych z odwrotnym uko¶nikiem.
suspend [-f]
Zawiesza wykonywanie tej pow³oki do otrzymania przez ni± sygna³u SIGCONT. Opcja -f mówi, by nie narzekaæ, je¶li u¿yto suspend w pow³oce zg³oszeniowej; po prostu zawiesiæ mimo to. Kodem zwracanym jest 0, chyba ¿e pow³oka jest pow³ok± zg³oszeniow± i nie podano opcji -f, lub gdy nie jest w³±czona kontrola zadañ.
test wyra¿
[ wyra¿ ]
Zwraca kod 0 lub 1 w zale¿no¶ci od interpretacji wyra¿enia warunkowego wyra¿. ka¿dy operator i operand musi byæ odrêbnym argumentem. Wyra¿enia sk³adaj±c siê ze sk³adowych opisanych powy¿ej w WYRA¯ENIAWARUNKOWE.

Wyra¿enia mog± byæ ³±czone przy u¿yciu poni¿szych operatorów, podanych w kolejno¶ci malej±cego priorytetu.

! wyra¿
Prawda je¶li wyra¿ jest fa³szem.
( wyra¿ )
Zwraca warto¶æ wyra¿. Mo¿e byæ stosowane do obej¶cia zwyk³ej kolejno¶ci operatorów.
wyra¿1 -a wyra¿2
Prawda je¶li oba: wyra¿1 i wyra¿2 s± prawdziwe.
wyra¿1 -o wyra¿2
Prawda je¶li wyra¿1 lub wyra¿2 jest prawdziwe.

test i [ interpretuj± wyra¿enia warunkowe pos³uguj±c siê zestawem regu³ opartych o liczbê argumentów.

0 argumentów
Wyra¿enie jest fa³szywe.
1 argument
Wyra¿enie jest prawdziwe wtedy i tylko wtedy gdy argument nie jest pusty (null).
2 argumenty
Je¶li pierwszym argumentem jest !, to wyra¿enie jest prawdziwe wtedy i tylko wtedy gdy drugi argument jest pusty. Je¶li pierwszy argument jest jednym z jednoargumentowych operatorów warunkowych podanych powy¿ej w WYRA¯ENIAWARUNKOWE, to wyra¿enie jest prawdziwe je¿eli test jednoargumentowy jest prawdziwy. Je¿eli pierwszy argument nie jest poprawnym jednoargumentowym operatorem warunkowym, to wyra¿enie ma warto¶æ fa³sz.
3 argumenty
je¿eli drugi argument jest jednym z dwuargumentowych operatorów warunkowych podanych powy¿ej w WYRA¯ENIAWARUNKOWE, to wynik wyra¿enia jest wynikiem dwuargumentowego testu z zastosowaniem pierwszego i trzeciego argumentu jako operandów. Je¶li pierwszym argumentem jest !, to warto¶æ stanowi negacjê testu dwuargumentowego przy u¿yciu drugiego i trzeciego argumentu. Je¶li pierwszym argumentem jest dok³adnie ( a trzecim argumentem dok³adnie ), to wynik jest jednoargumentowym testem drugiego argumentu. W pozosta³ych przypadkach wyra¿enie jest fa³szywe. Operatory -a i -o w tym przypadku uwa¿ane s± za dwuargumentowe.
4 argumenty
Je¶li pierwszym argumentem jest !, to wynik jest negacj± trójargumentowego wyra¿enia z³o¿onego z pozosta³ych argumentów. W przeciwnym wypadku, wyra¿enie jest poddawanie analizie sk³adni i interpretowane zgodnie z priorytetami przy zastosowaniu regu³ podanych powy¿ej.
5 lub wiêcej argumentów
Wyra¿enie jest poddawanie analizie sk³adni i interpretowane zgodnie z priorytetami przy zastosowaniu regu³ podanych powy¿ej.
times
Wypisuje sumaryczne czasy u¿ytkownika i systemu dla pow³oki i procesów z niej uruchomionych. Kodem zwracanym jest 0.
trap [-lp] [argument] [sigspec ...]
Polecenie argument ma zostaæ odczytane i wykonane, gdy pow³oka otrzyma sygna³(y) sigspec. Je¶li nie wystêpuje argument lub jest to -, to wszystkie podane sygna³y resetowane s± do swych warto¶ci pierwotnych (warto¶ci, jakie mia³y przy wej¶ciu do pow³oki). Je¿eli argument jest ³añcuchem pustym, to sygna³ okre¶lony przez ka¿de sigspec jest ignorowany przez pow³okê i polecenia, jakie ona wywo³uje. Je¿eli nie wyst±pi³ argumentu a podano -p, wy¶wietlane s± polecenia zwi±zane z przechwyceniem ka¿dego z sygna³ów sigspec. Je¿eli nie podano ¿adnych argumentów lub je¶li podano tylko -p, to trap wypisuje listê poleceñ zwi±zanych z ka¿dym z numerów sygna³ów. Ka¿de sigspec jest albo nazw± sygna³u zdefiniowan± w <signal.h albo numerem sygna³u. Je¿eli sigspec jest sygna³em EXIT (0), to polecenie argument wykonywane jest przy koñczeniu pracy przez pow³okê. Je¿eli sigspec jest równe DEBUG, to polecenie argument wykonywane jest po ka¿dym poleceniu prostym (zobacz GRAMATYKA POW£OKI powy¿ej). Je¶li sigspec to ERR, wówczas polecenie argument wykonywane jest ka¿dorazowo gdy polecenie proste zwróci niezerowy kod zakoñczenia. Pu³apka zastawiona na ERR nie jest wykonywana gdy polecenie, które zakoñczy³o siê niepowodzeniem jest czê¶ci± pêtli until lub while, czê¶ci± instrukcji if, czê¶ci± listy && lub || albo je¶li warto¶æ zwracana przez to polecenie jest wstawiana za pomoc± !. Opcja -l powoduje, ¿e pow³oka wypisuje zestawienie nazw sygna³ów i odpowiadaj±cych im numerów. Sygna³y ignorowane przy wej¶ciu do pow³oki nie mog± byæ przechwycone ani zresetowane. W procesie potomnym, podczas jego tworzenia, sygna³y przechwycone resetowane s± do swych warto¶ci pierwotnych. Zwracanym kodem jest fa³sz je¶li którykolwiek z sigspec jest nieprawid³owy; w przeciwnym razie trap zwraca true.
type [-atp] nazwa [nazwa ...]
Bez opcji wskazuje, jak powinna byæ interpretowana ka¿da z nazw, je¶li zostanie u¿yta jako nazwa polecenia. Je¿eli u¿yto opcji -t, to type wypisuje ³añcuch bêd±cy jednym z alias, keyword, function, builtin lub file, je¶li nazwa jest odpowiednio aliasem, zastrze¿onym s³owem pow³oki, funkcj±, poleceniem wbudowanym lub plikiem dyskowym. Je¶li nie znaleziono nazwy, to nie jest wypisywane nic i jako kod zakoñczenia zwracany jest fa³sz. Je¶li pos³u¿ono siê opcj± -p to type zwraca albo nazwê pliku dyskowego, który zosta³by wykonany je¶li nazwa zosta³aby podana jako nazwa polecenia, albo nic je¶li ! .if t type -t nazwa ! .if n ,,type -t nazwa'' nie zwróci³oby file. Je¶li polecenie istnieje w tablicy mieszaj±cej, -p wypisuje warto¶æ z tablicy, niekoniecznie plik, który pojawia siê jako pierwszy w PATH. Je¿eli u¿yto opcji -a, to type wypisuje wszystkie miejsca zawierajace wykonywaln± nazwê. Obejmuje to aliasy i funkcje, wtedy i tylko wtedy gdy u¿yto równie¿ opcji -p. Przy u¿yciu -a nie korzysta siê z tablicy mieszaj±cej poleceñ. type zwraca prawdê je¶li znaleziono jakie¶ jego argumenty, fa³sz je¶li nie znaleziono ¿adnych.
ulimit [-SHacdflmnpstuv [limit]]
Zapewnia kontrolê nad zasobami dostêpnymi pow³oce i procesów jakie ona uruchamia, na systemach umo¿liwiaj±cych tak± kontrolê. Opcje -H i -S okre¶laj±, ¿e dla danego zasobu ustawiane jest twarde (hard) lub miêkkie (soft) ograniczenie. Ograniczenie twarde nie mo¿e byæ zwiêkszane po ustawieniu; ograniczenie miêkkie mo¿e byæ zwiêkszane a¿ do warto¶ci ograniczenia twardego. Je¶li nie podano ani -H ani -S, to ustawiane jest zarówno ograniczenie miêkkie jak i twarde. Ograniczenie limit mo¿e byæ liczb± w jednostkach okre¶lonych dla zasobu lub jedn± ze specjalnych warto¶ci: hard, soft lub unlimited, oznaczaj±cych odpowiednio: bie¿±ce twarde ograniczenie, bie¿±ce miêkkie ograniczenie oraz brak ograniczenia. Je¿eli pominiêto limit, wypisywana jest bie¿±ca warto¶æ ograniczenia miêkkiego danego zasobu, chyba ¿e podano opcjê -H. Gdy podano wiêcej ni¿ jedno okre¶lenie zasobu, przed warto¶ci± wypisywana jest nazwa ograniczenia i jednostka miary. Inne opcje interpretowane s± nastêpuj±co:
-a
Podawane s± wszystkie bie¿±ce ograniczenia
-c
Maksymalny rozmiar tworzonych plików core
-d
Maksymalny rozmiar segmentu danych procesu
-f
Maksymalny rozmiar plików tworzonych przez pow³okê
-l
Maksymalny rozmiar, jaki mo¿e zostaæ zablokowany w pamiêci
-m
Maksymalny rozmiar czê¶ci rezydentnej
-n
Maksymalna liczba otwartych deskryptorów pliku (wiêkszo¶æ systemów nie pozwala na ustawianie tej warto¶ci)
-p
Rozmiar potoku w blokach 512-bajtowych (mo¿e nie byæ ustawione)
-s
Maksymalny rozmiar stosu
-t
Maksymalny czas CPU w sekundach
-u
Maksymalna liczba procesów dostêpnych dla pojedynczego u¿ytkownika
-v
Maksymalna wielko¶æ pamiêci wirtualnej dostêpna dla pow³oki

Je¿eli podano limit, to staje siê now± warto¶ci± ograniczenia zadanego zasobu (opcja -a tylko wy¶wietla). Je¿eli nie podano ¿adnej ocpji, to zak³ada siê opcjê -f. Warto¶ci podawane s± przyrostowo co 1024-bajty, z wyj±tkiem -t, podawanego w sekundach, -p, w jednostkach 512-bajtowych bloków, oraz -n i -u, bêd±cych warto¶ciami bez miana. Zwracanym kodem jest 0, chyba ¿e podano nieprawid³ow± opcjê lub argument albo podczas ustawiania nowego ograniczenia wyst±pi³ b³±d.

umask [-p] [-S] [tryb]
Maska praw dostêpu dla plików tworzonych przez u¿ytkownika ustawiana jest na tryb. Je¿eli tryb rozpoczyna siê od cyfry, jest interpretowany jako liczba ósemkowa; w przeciwnym razie interpretowany jest jako maska w trybie symbolicznym, podobnie jak akceptowane przez chmod(1). Je¿eli pominiêto tryb wypisywana jest aktualna warto¶æ maski. Opcja -S powoduje, ¿e maska zostanie wypisana w postaci symbolicznej; domy¶lne wyj¶cie jest w postaci liczby ósemkowej. Je¿eli podano opcjê -p i pominiêto tryb, to wyj¶cie ma postaæ, która mo¿e byæ powtórnie wykorzystana jako wej¶cie. Kodem zwracanym jest 0 je¶li pomy¶lnie zmieniono tryb lub nie podano argumentu tryb, za¶ fa³sz w pozosta³ych sytuacjach.
unalias [-a] [nazwa ...]
Usuwa ka¿d± z nazw z listy zdefiniowanych aliasów. Je¿eli podano -a, to usuwane s± definicje wszystkich aliasów. Zwracanym kodem jest prawda, chyba ¿e podana nazwa nie jest zdefiniowanym aliasem.
unset [-fv] [nazwa ...]
Dla ka¿dej nazwy, usuwa odpowiadaj±c± jej warto¶æ lub funkcjê. Je¿eli nie podano ¿adnych opcji lub podano opcjê -v, to ka¿da z nazw odnosi siê do zmiennej pow³oki. Zmienne read-only nie mog± byæ kasowane. Je¿eli podano -f, to ka¿da z nazw wskazuje na funkcjê pow³oki, a definicja funkcji jest usuwana. Ka¿da z usuniêtych zmiennych lub funkcji usuwana jest ze ¶rodowiska przesy³anego nastêpnym poleceniom. Je¶li usuniêta zostanie która¶ ze zmiennych RANDOM, SECONDS, LINENO, HISTCMD, FUNCNAME, GROUPS, lub DIRSTACK, to traci ona swe specjalne w³a¶ciwo¶ci, nawet je¶li zostanie nastêpnie ponownie ustawiona. Kodem zakoñczenia jest prawda, chyba ¿e nazwa nie istnieje lub jest readonly.
wait [n]
Czeka na okre¶lony proces i zwraca jego kod zakoñczenia. n mo¿e byæ identyfikatorem procesu lub okre¶leniem zadania; je¶li podano okre¶lenie zadania, to nast±pi oczekiwanie na wszystkie procesy w potoku tego zadania. Je¿eli nie podano n, nastêpuje oczekiwanie na wszystkie aktualnie aktywne procesy potomne i zwracany jest kod zerowy. Je¶li n okre¶la nieistniej±cy proces lub zadanie, to zwracany jest kod 127. W pozosta³ych przypadkach zwracany jest kod zakoñczenia ostatniego procesu lub zadania na jakie czekano.

POW£OKA OKROJONA

Je¶li bash uruchomiony jest pod nazw± rbash, lub przy jego wywo³aniu pos³u¿ono siê opcj± -r, to staje siê pow³ok± okrojon± (restricted). Pow³oka okrojona s³u¿y do ustawienia ¶rodowiska lepiej kontrolowanego ni¿ pow³oka standardowa. Zachowuje siê ona identycznie jak bash z wyj±tkiem tego, ¿e poni¿sze nie s± dozwolone lub nie s± wykonywane:

*
zmiana katalogów przy pomocy cd
*
ustawianie lub kasowanie warto¶ci SHELL, PATH, ENV lub BASH_ENV
*
podawanie nazw poleceñ zawieraj±cych /
*
podawanie nazw plików zawieraj±cych / jako argumentu wbudowanego polecenia . (kropka).
*
importowanie definicji funkcji ze ¶rodowiska pow³oki przy uruchamianiu
*
analiza warto¶ci SHELLOPTS ze ¶rodowiska pow³oki przy uruchamianiu
*
przekierowywanie wyj¶cia przy pomocy operatorów >, >|, <>, >&, &> i >>
*
pos³ugiwanie siê wbudowanym poleceniem exec w celu zast±pienia pow³oki innym poleceniem
*
dodawanie lub usuwanie poleceñ przy pomocy opcji -f i -d wbudowanego polecenia enable
*
podawanie opcji -p wbudowanego polecenia command
*
wy³±czanie trybu okrojonego za pomoc± set +r lub set +o restricted.

Powy¿sze ograniczenia wymuszane s± po przeczytaniu plików uruchomieniowych.

Je¶li polecenie do wykonania okazuje siê byæ skryptem pow³oki (zobacz WYKONYWANIE POLECEÑ powy¿ej), to rbash wy³±cza wszelkie ograniczenia w pow³oce zrodzonej do wykonania skryptu.

ZOBACZ TAK¯E

Bash Features, Brian Fox and Chet Ramey
The Gnu Readline Library, Brian Fox and Chet Ramey
The Gnu History Library, Brian Fox and Chet Ramey
Portable Operating System Interface (POSIX) Part 2: Shell and Utilities, IEEE
sh(1), ksh(1), csh(1)
emacs(1), vi(1)
readline(3)

PLIKI

/bin/bash
Plik wykonywalny pow³oki bash
/etc/profile
Ogólnosystemowy plik inicjuj±cy, wykonywany dla pow³ok zg³oszeniowych
~/.bash_profile
Osobisty plik inicjuj±cy, wykonywany dla pow³ok zg³oszeniowych
~/.bashrc
Indywidualny plik startowy dla pow³oki trybu interaktywnego
~/.bash_logout
Indywidualny plik porz±dkuj±cy dla pow³oki zg³oszeniowej, wykonywany podczas koñczenia przez ni± pracy
~/.inputrc
Indywidualny plik inicjuj±cy dla readline

AUTORZY

Brian Fox, Free Software Foundation
bfox@gnu.ai.MIT.Edu

Chet Ramey, Case Western Reserve University
chet@ins.CWRU.Edu

ZG£OSZENIA B£ÊDÓW

Je¶li znajdziesz w bash b³±d, powiniene¶ go zg³osiæ. Ale najpierw powiniene¶ upewniæ siê, ¿e rzeczywi¶cie jest to b³±d i ¿e pojawia siê w naj¶wie¿szej wersji bash jak± masz.

Po ustaleniu, ¿e b³±d faktycznie istnieje, u¿yj polecenia bashbug do wys³ania zg³oszenia b³êdu. Je¶li masz poprawkê usuwaj±c± problem, zachêcamy do przes³ania jej równie¿! Sugestie i `filozoficzne' zg³oszenia b³êdów mog± byæ przesy³ane [w jêzyku angielskim] do bug-bash@gnu.org lub wysy³ane na grupê dyskusyjn± gnu.bash.bug.

WSZYSTKIE zg³oszenia b³êdów powinny zawieraæ:

Numer wersji bash
Sprzêt i system operacyjny
U¿yty kompilator
Opis b³êdnego zachowania
Krótki skrypt lub przepis na uzyskanie b³êdu

bashbug wstawia pierwsze trzy pozycje automatycznie do szablonu jaki udostêpnia w celu wype³nienia zg³oszenia b³êdów.

Komentarze i zg³oszenia b³êdów dotycz±ce tej strony podrêcznika [orygina³u] powinny byæ kierowane na adres chet@ins.CWRU.Edu.

B£ÊDY

Jest za du¿y i zbyt wolny.

Istnieje trochê subtelnych ró¿nic pomiêdzy bash a tradycyjnymi wersjami sh, g³ównie z powodu specyfikacji POSIX.

Aliasy w niektórych zastosowaniach wprawiaj± w zak³opotanie.

Poleceñ wbudowanych pow³oki i funkcji nie mo¿na zatrzymywaæ/wznawiaæ.

Polecenia z³o¿one i sekwencje poleceñ postaci `a ; b ; c' nie s± obs³ugiwane przychylnie przy próbie wstrzymania procesu. Gdy proces jest zatrzymany, pow³oka natychmiast wykonuje nastêpnej polecenie sekwencji. Wystarcza umieszczanie sekwencji poleceñ wewn±trz nawiasów by wymusiæ wykonanie ich przez podpow³okê, która mo¿e byæ zatrzymana jako ca³o¶æ.

Polecenia wewn±trz konstrukcji podstawiania poleceñ $(...) nie s± analizowane do momentu próby podstawienia. Powoduje to opó¼nion± sygnalizacjê b³êdów, pojawiaj±c± siê po up³ywie pewnego czasu od wprowadzenia polecenia.

Zmienne tablicowe nie mog± byæ (na razie) eksportowane.