.de zZ .. .\" .\" MAN PAGE COMMENTS to .\" .\" Chet Ramey .\" Case Western Reserve University .\" chet.ramey@case.edu .\" .\" Last Change: Fri Aug 26 09:45:10 EDT 2016 .\" .\" bash_builtins, strip all but Built-Ins section .de zY .. .de FN \fI\|\\$1\|\fP .. .\" .\" File Name macro. This used to be `.PN', for Path Name, .\" but Sun doesn't seem to like that very much. .\" .if !rzZ .nr zZ 0 \" avoid a warning about an undefined register .\" Number register zZ is defined in bash-builtins(7) .\" Number register zY is defined in rbash(1) .\" This man-page is included in them .if !rzY .nr zY 0 \" avoid a warning about an undefined register .if \n(zZ=1 .ig zZ .if \n(zY=1 .ig zY .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" This file is distributed under the same license as original manpage .\" Copyright of the original manpage: .\" Copyright © 1987-2010 Free Software Foundation, Inc. (GPL-3) .\" Copyright © of Polish translation: .\" Wojtek Kotwica (PTM) , 2000, 2002. .\" Michał Kułach , 2012, 2013, 2014, 2016. .TH BASH 1 "26 sierpnia 2016" "GNU Bash 4.4" .de }1 .ds ]X \&\\*(]B\\ .nr )E 0 .if !"\\$1"" .nr )I \\$1n .}f .ll \\n(LLu .in \\n()Ru+\\n(INu+\\n()Iu .ti \\n(INu .ie !\\n()Iu+\\n()Ru-\w\\*(]Xu-3p \{\\*(]X .br\} .el \\*(]X\h|\\n()Iu+\\n()Ru\c .}f .. .\" .\" There's some problem with having a `@' .\" in a tagged paragraph with the BSD man macros. .\" It has to do with `@' appearing in the }1 macro. .\" This is a problem on 4.3 BSD and Ultrix, but Sun .\" appears to have fixed it. .\" If you're seeing the characters .\" `@u-3p' appearing before the lines reading .\" `possible-hostname-completions .\" and `complete-hostname' down in READLINE, .\" then uncomment this redefinition. .\" .SH NAZWA bash \- GNU Bourne\-Again SHell .SH SKŁADNIA \fBbash\fP [\fIopcje\fP] [\fIłańcuch_polecenia\fP | \fIplik\fP] .SH PRAWA\ AUTORSKIE .if n Bash is Copyright (C) 1989-2016 by the Free Software Foundation, Inc. .if t Bash is Copyright \(co 1989-2016 by the Free Software Foundation, Inc. .SH OPIS \fBBash\fP jest zgodnym z \fBsh\fP 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 \fIKorna\fP i powłoki \fIC\fP (\fBksh\fP i \fBcsh\fP). .PP \fBBash\fP w zamierzeniu jest implementacją zgodną z POSIX\-ową specyfikacją powłok i narzędzi \-\- IEEE POSIX Shell and Utilities specification (IEEE Standard 1003.1). \fBBash\fP może być skonfigurowany w ten sposób, aby był domyślnie zgodny z normą POSIX. .SH OPCJE Oprócz jednoznakowych opcji powłoki udokumentowanych w opisie wbudowanego polecenia \fBset\fP, polecenia wbudowane mogą być użyte jako opcje przy wywołaniu powłoki. Dodatkowo, \fBbash\fP przy wywołaniu interpretuje poniższe opcje: .PP .PD 0 .TP 10 \fB\-c\fP Jeśli występuje opcja \fB\-c\fP, to polecenia odczytywane są z pierwszego argumentu, niebędącego opcją \fIłańcucha_polecenia\fP. Jeżeli po \fIłańcuchu_polecenia\fP istnieją argumenty, to pierwszy jest przypisywany do \fB$0\fP a pozostałe są przypisywane do argumentów pozycyjnych. Przypisanie do \fB$0\fP ustawia nazwę powłoki, co jest wykorzystywane przy ostrzeżeniach i komunikatach z błędami. .TP \fB\-i\fP Jeżeli występuje opcja \fB\-i\fP, to powłoka jest \fIinteraktywna\fP. .TP \fB\-l\fP Program \fBbash\fP będzie działał jakby został wywołany jako powłoka zgłoszeniowa (patrz niżej .SM \fBWYWOŁANIE\fP). .TP \fB\-r\fP Jeżeli występuje opcja \fB\-r\fP, to powłoka staje się powłoką \fIokrojoną\fP (restricted). Patrz poniżej \fBPOWŁOKA OKROJONA\fP. .TP \fB\-s\fP Jeśli występuje opcja \fB\-s\fP 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. .TP \fB\-D\fP Na standardowym wyjściu wypisywana jest lista łańcuchów cytowanych cudzysłowem poprzedzonych znakiem \fB$\fP. Są to łańcuchy będące przedmiotem tłumaczenia języka, gdy bieżącym ustawieniem regionalnym (locale) nie jest \fBC\fP ani \fBPOSIX\fP. Implikuje to opcję \fB\-n\fP; nie zostaną wykonane żadne polecenia. .TP \fB[\-+]O [\fP\fIopcja_shopt\fP\fB]\fP \fIopcja_shopt\fP jest jedną z opcji powłoki akceptowanych przez polecenie wbudowane \fBshopt\fP (zobacz .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP poniżej). Jeśli występuje \fIopcja_shopt\fP, to \fB\-O\fP nadaje wartość tej opcji, zaś \fB+O\fP unieważnia ją. Jeżeli nie podano \fIopcji_shopt\fP, to na standardowym wyjściu wypisywane są nazwy i wartości opcji powłoki akceptowanych przez \fBshopt\fP. Jeśli opcją wywołania jest \fB+O\fP, tworzone wyjście jest formatowane w taki sposób, by można było wykorzystać je jako wejście. .TP \fB\-\-\fP Zapis \fB\-\-\fP sygnalizuje koniec opcji i wyłącza dalsze ich przetwarzanie. Argumenty występujące po \fB\-\-\fP traktowane są jako nazwy plików i argumenty. Argument \fB\-\fP jest równoważnikiem \fB\-\-\fP. .PD .PP \fBBash\fP interpretuje także wiele opcji wieloznakowych. Jeśli mają zostać rozpoznane, opcje te muszą pojawić się w wierszu poleceń przed opcjami jednoznakowymi, .PP .PD 0 .TP \fB\-\-debugger\fP Ustawia profil debuggera do wykonania, przed uruchomieniem powłoki. Włącza rozszerzony tryb debugowania (patrz opis opcji \fBextdebug\fP do wbudowanego polecenia \fBshopt\fP poniżej). .TP \fB\-\-dump\-po\-strings\fP Równoważne \fB\-D\fP, ale wyjście jest w formacie pliku GNU \fIgettext\fP \fBpo\fP (portable object). .TP \fB\-\-dump\-strings\fP Równoważnik \fB\-D\fP. .TP \fB\-\-help\fP Wyświetla na standardowym wyjściu komunikat o użytkowaniu i pomyślnie kończy pracę. .TP \fB\-\-init\-file\fP \fIplik\fP .PD 0 .TP \fB\-\-rcfile\fP \fIplik\fP .PD Wykonuje polecenia z podanego \fIpliku\fP zamiast ze standardowego systemowego pliku inicjującego \fB/etc/bash.bashrc\fP i osobistego pliku inicjującego \fI~/.bashrc\fP, jeśli powłoka jest interaktywna. Zobacz .SM \fBWYWOŁANIE\fP poniżej. .TP \fB\-\-login\fP Równoważne \fB\-l\fP. .TP \fB\-\-noediting\fP Nie używa biblioteki GNU \fBreadline\fP do odczytu wierszy poleceń w trybie interaktywnym. .TP \fB\-\-noprofile\fP Nie odczytuje ani ogólnosystemowego pliku startowego .FN /etc/profile ani żadnego z osobistych plików inicjujących \fI~/.bash_profile\fP, \fI~/.bash_login\fP czy \fI~/.profile\fP. Domyślnie, \fBbash\fP czyta te pliki gdy jest wywołany jako powłoka zgłoszeniowa (zobacz .SM \fBWYWOŁANIE\fP poniżej). .TP \fB\-\-norc\fP Nie odczytuje i nie wykonuje systemowego pliku inicjującego \fI/etc/bash.bashrc\fP oraz osobistego pliku inicjującego \fI~/.bashrc\fP jeśli powłoka jest interaktywna. Opcja ta jest domyślnie włączona, jeżeli powłokę wywołano jako \fBsh\fP. .TP \fB\-\-posix\fP Zmienia zachowanie \fBbash\fP tam, gdzie domyślne działanie różni się od standardu POSIX, tak by spełniać standard (\fItryb posix\fP). Więcej informacji o tym, jak tryb posix wpływa na zachowanie powłoki można znaleźć w dokumencie do którego odsyła .SM \fBZOBACZ TAKŻE\fP. .TP \fB\-\-restricted\fP Powłoka staje się okrojona (zobacz .SM \fBPOWŁOKA OKROJONA\fP poniżej). .TP \fB\-\-verbose\fP Równoważnik opcji \fB\-v\fP. .TP \fB\-\-version\fP Pokazuje na standardowym wyjściu informację o wersji tego egzemplarza \fBbash\fP i pomyślnie kończy pracę. .PD .SH ARGUMENTY Jeśli po przetworzeniu opcji pozostają jakieś argumenty, a nie podano ani opcji \fB\-c\fP ani \fB\-s\fP, to zakłada się, że pierwszy argument jest nazwą pliku zawierającego polecenia powłoki. Jeżeli \fBbash\fP został wywołany w taki sposób, to \fB$0\fP przypisywana jest nazwa pliku z poleceniami, a parametrom pozycyjnym pozostałe argumenty. \fBBash\fP odczytuje i wykonuje polecenia z tego pliku, a następnie kończy pracę. Kod zakończenia \fBbash\fPa jest wówczas kodem zakończenia ostatniego wykonanego polecenia skryptu. Jeśli nie wykonano żadnego polecenia, to kod zakończenia wynosi 0. Najpierw wykonywana jest próba otworzenia pliku w bieżącym katalogu, a następnie, jeśli się ona nie powiedzie, powłoka przeszukuje katalogi w .SM \fBPATH\fP szukając skryptu. .SH WYWOŁANIE \fIPowłoka zgłoszeniowa\fP (login shell) to taka, w której pierwszym znakiem zerowego argumentu jest \fB\-\fP, lub taka, którą uruchomiono z opcją \fB\-\-login\fP. .PP Powłoka \fIinteraktywna\fP to taka, którą uruchomiono bez argumentów innych niż opcje (chyba, że podano \fB\-s\fP) i bez opcji \fB\-c\fP; zarówno jej standardowe wejście jak i wyjście powiązane jest z terminalami (tak jak określiła to funkcja \fIisatty\fP(3)), albo taka, którą uruchomiono z opcją \fB\-i\fP. .SM Jeśli \fBbash\fP jest interaktywny, to ustawiane jest \fBPS1\fP zaś \fB$\-\fP zawiera \fBi\fP; pozwala to skryptowi powłoki lub plikowi startowemu na sprawdzanie tego stanu. .PP Poniższe akapity opisują, jak \fBbash\fP wykonuje swoje pliki startowe. Jeśli któryś z tych plików istnieje, ale nie może być odczytany, to \fBbash\fP zgłasza błąd. Tyldy (~) w nazwach plików interpretowane są według reguł opisanych poniżej w części \fBInterpretacja tyld\fP sekcji .SM \fBINTERPRETACJA\fP. .PP Gdy \fBbash\fP wywoływany jest jako powłoka zgłoszeniowa lub jako powłoka nie\-interaktywna z opcją \fB\-\-login\fP, w pierwszej kolejności czyta i wykonuje polecenia z pliku \fI/etc/profile\fP, jeśli takowy istnieje. Po odczytaniu tego pliku, szuka \fI~/.bash_profile\fP, \fI~/.bash_login\fP i \fI~/.profile\fP, 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ą \fB\-\-noprofile\fP podczas uruchamiania powłoki, by zakazać takiego zachowania. .PP Podczas kończenia interaktywnej powłoki zgłoszeniowej lub gdy nieinteraktywna powłoka zgłoszeniowa wykonuje wbudowane polecenie \fBexit\fP, \fBbash\fP czyta i wykonuje polecenia z pliku \fI~/.bash_logout\fP, jeśli taki istnieje. .PP Jeżeli uruchamiana jest powłoka interaktywna nie będąca powłoką zgłoszeniową, \fBbash\fP czyta i wykonuje polecenia z \fI/etc/bash.bashrc\fP i \fI~/.bashrc\fP, jeśli takie pliki istnieją. Może to być zakazane za pomocą opcji \fB\-\-norc\fP. Opcja \fB\-\-rcfile\fP \fIplik\fP wymusi odczyt i wykonanie poleceń z \fIpliku\fP zamiast z \fI/etc/bash.bashrc\fP i \fI~/.bashrc\fP. .PP Jeśli \fBbash\fP startuje w trybie nie\-interaktywnym, na przykład w celu uruchomienia skryptu powłoki, to szuka w środowisku zmiennej .SM \fBBASH_ENV\fP, interpretuje jej wartość, jeśli ją znalazł, i używa otrzymanej wartości jako nazwy pliku do odczytania i wykonania. \fBBash\fP zachowuje się tak, jakby były wykonane następujące polecenia: .sp .5 .RS .if t \f(CWif [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi\fP .if n if [ \-n "$BASH_ENV" ]; then . "$BASH_ENV"; fi .RE .sp .5 ale do szukania nazwy pliku nie jest używana wartość zmiennej .SM \fBPATH\fP. .PP Jeżeli \fBbash\fP wywołano pod nazwą \fBsh\fP, to próbuje on naśladować zachowanie startowe historycznych wersji \fBsh\fP 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ą \fB\-\-login\fP, usiłuje na początku odczytać i wykonać polecenia z \fI/etc/profile\fP i \fI~/.profile\fP, w tej kolejności. W celu zakazania tego zachowania można użyć opcji \fB\-\-noprofile\fP. Wywołany jako powłoka interaktywna pod nazwą \fBsh\fP, \fBbash\fP poszukuje zmiennej .SM \fBENV\fP, 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 \fBsh\fP nie usiłuje czytać ani wykonywać poleceń z jakichkolwiek innych plików startowych, opcja \fB\-\-rcfile\fP nie ma żadnych skutków. Powłoka nie\-interaktywna wywołana pod nazwą \fBsh\fP nie próbuje czytać żadnych plików startowych. Wywołany jako \fBsh\fP, \fBbash\fP wchodzi w tryb \fIposix\fP po odczycie plików startowych. .PP Gdy \fBbash\fP uruchomiony jest w trybie \fIposix\fP, jak z opcją \fB\-\-posix\fP wiersza poleceń, kieruje się standardem POSIX dla plików startowych. W trybie tym, powłoka interaktywna interpretuje zmienną .SM \fBENV\fP a polecenia odczytywane i wykonywane są z pliku, którego nazwą jest zinterpretowana wartość. Nie są czytane inne pliki startowe. .PP \fBBash\fP usiłuje rozstrzygnąć, czy jest uruchomiony ze standardowym wejściem podpiętym do połączenia sieciowego, przez demona powłoki zdalnej, zwykle \fIrshd\fP lub przez bezpiecznego demona powłoki \fIsshd\fP. Jeżeli stwierdzi, że został uruchomiony w ten sposób, to odczytuje i wykonuje polecenia z \fI~/.bashrc\fP, jeśli plik ten istnieje i daje się czytać. Nie będzie tego robił wywołany jako \fBsh\fP. Można posłużyć się opcją \fB\-\-norc\fP, by zakazać tego zachowania oraz opcją \fB\-\-rcfile\fP, by wymusić czytanie innego pliku, ale ani \fIrshd\fP, ani \fIsshd\fP zazwyczaj nie wywołuje powłoki z tymi opcjami ani nie pozwala na ich podanie. .PP Jeśli powłoka została uruchomiona z efektywnym id użytkownika (grupy) różnym od id rzeczywistego, a nie podano opcji \fB\-p\fP, to nie są odczytywane żadne pliki startowe, funkcje powłoki nie są dziedziczone ze środowiska, zmienne .SM \fBSHELLOPTSP\fP, .SM \fBBASHOPTS\fP, .SM \fBCDPATH\fP, i .SM \fBGLOBIGNORE\fP, jeśli jest takie występują w środowisku, są ignorowane a efektywny identyfikator użytkownika jest ustawiany na jego identyfikator rzeczywisty. Jeśli przy wywołaniu podano opcję \fB\-p\fP, to zachowanie startowe jest takie samo, ale nie jest resetowany efektywny id użytkownika. .SH DEFINICJE .PP W pozostałej części tego dokumentu używane są poniższe definicje. .PD 0 .TP \fBodstęp\fP Spacja lub znak tabulacji. .TP \fBsłowo\fP Sekwencja znaków uważana przez powłokę za pojedynczą jednostkę. Znana też jako \fBtoken\fP. .TP \fBnazwa\fP Jest to \fIsłowo\fP 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 \fBidentyfikator\fP. .TP \fBmetaznak\fP Znak, który, gdy nie jest cytowany, oddziela słowa. Jeden z poniższych: .br .RS .PP .if t \fB| & ; ( ) < > space tab newline\fP .if n \fB| & ; ( ) < > space tab newline\fP .RE .PP .TP \fBoperator sterujący\fP \fItoken\fP pełniący funkcję sterującą. Jest to jeden z poniższych symboli: .RS .PP .if t \fB|| & && ; ;; ;& ;;& ( ) | |& \fP .if n \fB|| & && ; ;; ;& ;;& ( ) | |& \fP .RE .PD .SH "SŁOWA ZASTRZEŻONE" \fISłowa zastrzeżone\fP (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 .SM \fBGRAMATYKA POWŁOKI\fP poniżej) albo trzecie słowo poleceń \fBcase\fP lub \fBfor\fP; .if t .RS .PP .if n \fB! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]\fP .if t \fB! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]\fP .if t .RE .SH "GRAMATYKA POWŁOKI" .SS "Polecenia proste" .PP \fIPolecenie proste\fP jest sekwencją opcjonalnych przypisań zmiennych, po której następują rozdzielane przez \fBodstęp\fP słowa i przekierowania, a zakończoną \fIoperatorem sterującym\fP. 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. .PP Wartością zwracaną \fIpolecenia prostego\fP jest jego kod zakończenia lub 128+\fIn\^\fP jeżeli polecenie przerwane jest sygnałem \fIn\fP. .SS Potoki .PP \fIPotok\fP jest sekwencją jednego lub więcej poleceń rozdzielonych jednym z operatorów kontrolnych \fB|\fP lub \fB|&\fP. Formatem potoku jest: .RS .PP [\fBtime\fP [\fB\-p\fP]] [ ! ] \fIpolecenie\fP [ [\fB|\fP\(bv\fB|&\fP] \fIpolecenie2\fP ... ] .RE .PP Standardowe wyjście z \fIpolecenia\fP połączone jest za pośrednictwem potoku ze standardowym wejściem \fIpolecenia2\fP. Połączenie to wykonywane jest przed możliwymi przekierowaniami podanymi dla polecenia (zobacz poniżej .SM \fBPRZEKIEROWANIE\fP. Jeśli użyte jest \fB|&\fP, to standardowe wyjście błędów \fIpolecenia\fP razem z jego standardowym wyjściem jest połączone ze standardowym wejściem \fIpolecenia2\fP za pomocą potoku; jest to skrócona forma \fB2>&1 |\fP. To bezpośrednie przekierowanie standardowego wyjścia błędów jest przeprowadzane po wszystkich przekierowaniach określonych przez polecenie. .PP Zwracanym kodem zakończenia potoku jest kod zakończenia ostatniego polecenia, chyba że włączono opcję \fBpipefail\fP. W takim przypadku kod zakończenia potoku jest wartością ostatniego (po prawej) polecenia, które zakończyło się kodem niezerowym lub zero, jeśli wszystkie polecenia zakończyły się powodzeniem. Jeżeli potok poprzedza zastrzeżone słowo \fB!\fP, to kod zakończenia takiego potoku jest negacją (NOT) kodu zakończenia ostatniego polecenia, zgodnie z powyższym opisem. Powłoka oczekuje na zakończenie (terminate) wszystkich poleceń w potoku przed zwróceniem wartości. .PP Jeżeli potok jest poprzedzony słowem zastrzeżonym \fBtime\fP, to po jego zakończeniu podawany jest czas wykonywania, jak również czas użytkownika i czas systemu zużyty na wykonanie. Opcja \fB\-p\fP zmienia format tworzonych wyników na określony przez POSIX. Jeśli powłoka znajduje się w \fItrybie posix\fP, to nie rozpoznaje \fBtime\fP jako słowa zastrzeżonego, jeśli kolejny token rozpoczyna się znakiem "\-". Do sformatowania łańcucha określającego, jak powinna być wyświetlana informacja o czasach, można ustawić zmienną .SM \fBTIMEFORMAT\fP; zobacz opis .SM \fBTIMEFORMAT\fP w \fBZmienne powłoki\fP poniżej. .PP Jeśli powłoka znajduje się w \fItrybie posix\fP, to po \fBtime\fP może wystąpić znak nowego wiersza. W takim przypadku, powłoka wyświetla całkowity czas użytkownika i systemu, skonsumowany przez powłokę i jej potomków. Zmienną .SM \fBTIMEFORMAT\fP można określić format informacji o czasie. .PP Każde polecenie w potoku uruchamiane jest jako odrębny proces (tj. w podpowłoce). .SS Listy .PP \fILista\fP jest potokiem lub sekwencją kilku potoków rozdzielonych jednym z operatorów \fB;\fP, \fB&\fP, \fB&&\fP lub \fB\(bv\(bv\fP, i opcjonalnie zakończoną jednym ze znaków \fB;\fP, \fB&\fP lub \fB\fP. .PP Spośród tych operatorów listowych, \fB&&\fP i \fB\(bv\(bv\fP mają ten sam priorytet, następujące po nich \fB;\fP i \fB&,\fP również mają równy między sobą priorytet. .PP W zastępstwie średnika, w \fIliście\fP może pojawić się sekwencja jednego lub więcej znaków nowego wiersza. .PP Jeśli polecenie zakończone jest operatorem sterującym \fB&\fP, to powłoka wykonuje je w \fItle\fP (background) w podpowłoce. Powłoka macierzysta nie oczekuje na zakończenie polecenia, a zwracany kod wynosi 0. Polecenia oddzielane znakiem średnika \fB;\fP 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. .PP Listy AND i OR są sekwencjami jednego lub więcej potoków oddzielonych odpowiednio operatorami sterującymi \fB&&\fP i \fB||\fP. Listy AND i OR są wykonywane z pozostawioną łącznością. Lista AND ma postać .RS .PP \fIpolecenie1\fP \fB&&\fP \fIpolecenie2\fP .RE .PP \fIpolecenie2\fP wykonywane jest wtedy, i tylko wtedy, gdy \fIpolecenie1\fP zwraca zerowy kod zakończenia. .PP Lista OR ma postać .RS .PP \fIpolecenie1\fP \fB\(bv\(bv\fP \fIpolecenie2\fP .PP .RE .PP \fIpolecenie2\fP jest wykonywane wtedy, i tylko wtedy, gdy \fIpolecenie1\fP zwraca niezerowy kod zakończenia. Kod zwracany przez listy AND i OR jest kodem zakończenia ostatniego wykonanego polecenia listy. .SS "Polecenia złożone" .PP \fIPolecenie złożone\fP jest jednym z poniższych. W większości przypadków \fIlista\fP w opisie polecenia może być oddzielona od reszty polecenie jedną lub więcej znakami nowego wiersza, a po niej zamiast średnika może wystąpić znak nowego wiersza. .TP (\fIlista\fP) \fILista\fP wykonywana jest w podpowłoce (patrz .SM \fBŚRODOWISKO\fP \fBWYKONYWANIA\fP \fBPOLECEŃ\fP poniżej). 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 \fIlisty\fP. .TP { \fIlista\fP; } \fILista\fP jest po prostu wykonywana w bieżącym środowisku powłoki. \fILista\fP musi być zakończona znakiem nowej linii lub średnika. Nazywane jest to \fIpoleceniem grupowania\fP. Zwracanym kodem jest kod zakończenia \fIlisty\fP. Należy pamiętać, że w przeciwieństwie do metaznaków \fB(\fP i \fB)\fP, \fB{\fP i \fB}\fP są \fIsłowami zastrzeżonymi\fP 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 \fIlisty\fP za pomocą białego znaku lub innego metaznaku powłoki. .TP ((\fIwyrażenie\fP)) \fIWyrażenie\fP interpretowane jest zgodnie z zasadami opisanymi poniżej w sekcji .SM \fBOBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH\fP. Jeśli wartość wyrażenia jest niezerowa, to kodem zwracanym jest 0; w przeciwnym razie kodem zwracanym jest 1. Jest to ściśle równoważne konstrukcji \fBlet "\fP\fIwyrażenie\fP\fB"\fP. .TP \fB[[\fP \fIwyrażenie\fP \fB]]\fP Zwraca kod 0 lub 1 w zależności od interpretacji wyrażenia warunkowego \fIwyrażenie\fP. Wyrażenia złożone są ze składowych (primaries) opisanych poniżej w opcji .SM \fBWYRAŻENIA WARUNKOWE\fP. Na słowach pomiędzy \fB[[\fP a \fB]]\fP 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ń. Operatory warunkowe, takie jak \fB\-f\fP, nie mogą być cytowane, jeśli mają zostać rozpoznane jako składowe. .if t .sp 0.5 .if n .sp 1 Operatory \fB<\fP i \fB>\fP, gdy są używane z \fB[[\fP, sortują zgodnie z porządkiem leksykograficznym, używając bieżącego ustawienia locale. .PP Proszę zapoznać się z wbudowanym poleceniem \fItest\fP (rozdział WBUDOWANE POLECENIA POWŁOKI poniżej), aby dowiedzieć się jak obsługiwane są parametry (np. sytuacja gdy ich nie podano). .if t .sp 0.5 .if n .sp 1 Jeśli używane są operatory \fB==\fP i \fB!=\fP, to łańcuch po prawej stronie operatora jest wzorcem i jest dopasowany zgodnie z opisanymi poniżej regułami \fBDopasowania wzorca\fP, jakby włączono opcję powłoki \fBextglob\fP. Operator \fB=\fP jest równoważny \fB==\fP. Jeśli włączono opcję powłoki \fBnocasematch\fP, to przy dopasowaniu ignorowana jest wielkość liter. Zwracaną wartością jest 0 gdy łańcuch pasuje (\fB==\fP) lub nie pasuje (\fB!=\fP) i 1 w przeciwnym wypadku. Każda część wzorca może być cytowana, aby wymusić jej dopasowanie jako łańcuch. .if t .sp 0.5 .if n .sp 1 Dostępny jest dodatkowy operator dwuargumentowy \fB=~\fP, który ma ten sam priorytet co \fB==\fP i \fB!=\fP. Gdy zostanie użyty, łańcuch po prawej stronie operatora jest rozszerzonym wyrażeniem regularnym i jest odpowiednio dopasowywany (jak przez \fIregex\fP(3)). Zwracaną wartością jest 0 gdy łańcuch pasuje do wzorca i 1 w przeciwnym wypadku. Jeśli wyrażenie regularne ma nieprawidłową składnię, zwracane jest 2. Jeśli włączono opcję powłoki \fBnocasematch\fP, to przy dopasowaniu ignorowana jest wielkość liter. Każda część wzorca może być cytowana, aby wymusić jej dopasowanie jako łańcuch. Wyrażenia w nawiasach będące częścią wyrażeń\ regularnych muszą\ być traktowane z dużą ostrożnością, ponieważ zwykłe znaki cytowania trasą\ swe znaczenie między nawiasami. Jeśli wzorzec jest przechowywany w zmiennej powłoki, zacytowanie go wymusza dopasowanie całego wzorca jako łańcucha. Podłańcuch dopasowany przez podwyrażenie ujęte w nawiasy wewnątrz wyrażenia regularnego, jest zapisywany w zmiennej tablicowej .SM \fBBASH_REMATCH\fP. Element .SM \fBBASH_REMATCH\fP z indeksem 0 jest częścią łańcucha pasującą do całego wyrażenia regularnego. Element tej zmiennej z indeksem \fIn\fP jest częścią łańcucha pasującą do \fIn\fP\-tego podwyrażenia ujętego w nawiasy. .if t .sp 0.5 .if n .sp 1 Wyrażenia można łączyć przy pomocy następujących operatorów, wymienionych w kolejności malejącego priorytetu: .if t .sp 0.5 .if n .sp 1 .RS .PD 0 .TP \fB( \fP\fIwyrażenie\fP\fB )\fP Zwraca wartość \fIwyrażenia\fP. Może służyć do unieważnienia zwykłej kolejności operatorów. .TP \fB! \fP\fIwyrażenie\fP Prawda jeżeli \fIwyrażenie\fP jest fałszywe. .TP \fIwyrażenie1\fP \fB&&\fP \fIwyrażenie2\fP Prawda jeśli zarówno \fIwyrażenie1\fP jak i \fIwyrażenie2\fP są prawdziwe. .TP \fIwyrażenie1\fP \fB||\fP \fIwyrażenie2\fP Prawda jeśli choć jedno spośród \fIwyrażenie1\fP lub \fIwyrażenie2\fP jest prawdziwe. .PD .LP Operatory \fB&&\fP i \fB||\fP nie wykonują \fIwyrażenia2\fP jeżeli wartość \fIwyrażenia1\fP wystarcza do określenia wartości, jaka zostanie zwrócona przez całe wyrażenie warunkowe. .RE .TP \fBfor\fP \fInazwa\fP [ [ \fBin\fP [ \fIsłowo ...\fP ] ] ; ] \fBdo\fP \fIlista\fP ; \fBdone\fP Interpretowane są słowa następujące po \fBin\fP, tworząc listę elementów. Zmiennej \fInazwa\fP nadawana jest kolejno wartość każdego elementu tej listy i każdorazowo wykonywana jest \fIlista\fP poleceń. Jeżeli pominięto \fBin\fP \fIsłowo\fP, to polecenie \fBfor\fP wykonuje \fIlistę\fP po jednym razie dla każdego ustawionego parametru pozycyjnego (zobacz .SM \fBPARAMETRY\fP poniżej). Zwracanym kodem jest kod zakończenia ostatniego wykonanego polecenia. Jeśli interpretacja elementów następujących po \fBin\fP daje w wyniku pustą listę, to nie są wykonywane żadne polecenia i zwracany jest kod 0. .TP \fBfor\fP (( \fIwyr1\fP ; \fIwyr2\fP ; \fIwyr3\fP )) ; \fBdo\fP \fIlista\fP ; \fBdone\fP Na początku obliczane jest wyrażenie arytmetyczne \fIwyr1\fP, zgodnie z zasadami opisanymi poniżej w .SM \fBOBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH\fP. Następnie wielokrotnie obliczane jest \fIwyr2\fP, aż do osiągnięcia przez nie wartości zero. Każdorazowo gdy obliczone \fIwyr2\fP jest niezerowe, wykonywana jest \fIlista\fP i obliczane jest wyrażenie arytmetyczne \fIwyr3\fP. 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 \fIlisty\fP, lub fałsz jeśli któreś z wyrażeń jest niepoprawne. .TP \fBselect\fP \fInazwa\fP [ \fBin\fP \fIsłowo\fP ] ; \fBdo\fP \fIlista\fP ; \fBdone\fP Interpretowana jest lista słów następujących po \fBin\fP, tworząc listę elementów. Zestaw zinterpretowanych słów wypisywany jest na standardowym wyjściu, każde poprzedzone liczbą kolejną. Jeśli pominięto \fBin\fP \fIsłowo\fP, to wypisywane są parametry pozycyjne (zobacz .SM \fBPARAMETRY\fP poniżej). Następnie wyświetlany jest znak zachęty .SM \fBPS3\fP 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 \fInazwa\fP 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 \fInazwie\fP zostanie przypisany łańcuch pusty. Odczytany wiersz zachowywany jest w zmiennej .SM \fBREPLY\fP. \fIlista\fP wykonywana jest po każdym wyborze, dopóki nie zostanie wykonane polecenie \fBbreak\fP. Kodem zakończenia \fBselect\fP jest kod zakończenia ostatniego wykonanego polecenia \fIlisty\fP lub zero jeśli nie wykonano żadnych poleceń. .TP \fBcase\fP \fIsłowo\fP \fBin\fP [ [(] \fIwzorzec\fP [ \fB|\fP \fIwzorzec\fP ] ... ) \fIlista\fP ;; ] ... \fBesac\fP Polecenie \fBcase\fP najpierw interpretuje \fIsłowo\fP i próbuje dopasować uzyskany wynik każdego z \fIwzorców\fP po kolei, posługując się tymi samymi regułami dopasowywania, co dla rozwijania nazw ścieżkowych (zobacz \fBRozwijanie nazw ścieżkowych\fP poniżej). \fISłowo\fP jest interpretowane zgodnie z interpretacją tyldy, podstawianiem parametrów i zmiennych, interpretacji wyrażeń arytmetycznych, wyników poleceń i wyników procesów oraz usunięciem cytowań. Każdy sprawdzany \fIwzorzec\fP podlega interpretacji tyldy, podstawianiu parametrów i zmiennych, interpretacji wyrażeń arytmetycznych, wyników poleceń i wyników procesów. Jeśli włączono opcję powłoki \fBnocasematch\fP, to dopasowanie jest przeprowadzane bez uwzględniania wielkości liter. Gdy znalezione zostanie dopasowanie, wykonywana jest odpowiadająca mu \fIlista\fP. Jeśli użyto operatora \fB;;\fP, nie przeprowadza się próby kolejnego dopasowania po znalezieniu pierwszego pasującego wzorca. Użycie \fB;&\fP w miejsce \fB;;\fP powoduje kontynuowanie wykonywania z powiązaną \fIlistą\fP, z następnym zestawem wzorców. Jeśli użyje się w zamian \fB;;&\fP, to powłoka sprawdza następną listę wzorców twierdzenia (jeśli istnieje) i wykonuje każdą powiązaną \fIlistę\fP w przypadku pomyślnego dopasowania. Jeżeli żaden ze wzorców nie pasuje, to kodem zakończenia jest zero. W przeciwnym razie jest on równy kodowi zakończenia ostatniego z wykonanych poleceń \fIlisty\fP. .TP \fBif\fP \fIlista\fP; \fBthen\fP \fIlista\fP; [ \fBelif\fP \fIlista\fP; \fBthen\fP \fIlista\fP; ] ... [ \fBelse\fP \fIlista\fP; ] \fBfi\fP Wykonywana jest \fIlista\fP występująca po \fBif\fP. Jeżeli jej kod zakończenia jest zerowy, to wykonywana jest \fIlista\fP klauzuli \fBthen\fP. W przeciwnym wypadku, wykonywana jest \fIlista\fP każdego \fBelif\fP po kolei; jeśli kod zakończenia którejś wynosi 0, to wykonywana jest \fIlista\fP \fBthen\fP i polecenie jest kończone. Jeżeli nie wystąpił żaden z powyższych przypadków, to wykonywana jest \fIlista\fP występująca po klauzuli \fBelse\fP, 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. .TP \fBwhile\fP \fIlista\-1\fP; \fBdo\fP \fIlista\-2\fP; \fBdone\fP .PD 0 .TP \fBuntil\fP \fIlista\-1\fP; \fBdo\fP \fIlista\-2\fP; \fBdone\fP .PD Polecenie \fBwhile\fP wykonuje listę \fIlista\-2\fP w sposób ciągły dopóty, dopóki ostatnie polecenie listy \fIlista\-1\fP nie zwróci kodu zakończenia równego zero. Polecenie \fBuntil\fP działa podobnie do polecenia \fBwhile\fP, a jedyną różnicą jest to, że test jest zanegowany: \fIlista\-2\fP jest wykonywana tak długo, aż ostatnie polecenie \fIlisty\-1\fP nie zwróci kodu zakończenia różnego od zera. Kod wyjścia poleceń \fBwhile\fP i \fBuntil\fP jest kodem zakończenia ostatniego polecenia wykonanego z \fIlisty\-2\fP lub zerem, jeśli żadne z nich nie zostało wykonane. .SS "Koprocesy (współprocesy)" .PP \fIKoproces\fP jest poleceniem powłoki poprzedzonym słowem zastrzeżonym \fBcoproc\fP. Jest on wykonywany w podpowłoce w sposób asynchroniczny, jeśli polecenie zostało zakończone operatorem kontrolnym \fB&\fP, z ustawionym dwustronnym potokiem pomiędzy wykonującą go powłoką a koprocesem. .PP Format koprocesu jest następujący: .RS .PP \fBcoproc\fP [\fINAZWA\fP] \fIpolecenie\fP [\fIprzekierowania\fP] .RE .PP W ten sposób tworzy jest koproces o nazwie \fINAZWA\fP. Jeśli nie podano \fINAZWY\fP, domyślną jest \fBCOPROC\fP. \fINAZWA\fP nie może zostać podana, jeśli \fIpolecenie\fP jest \fIpoleceniem prostym\fP (patrz powyżej), w przeciwnym wypadku jest interpretowane jako pierwsze słowo polecenia prostego. Gdy koproces jest wykonywany, powłoka tworzy zmienną tablicową (patrz \fBTablice\fP poniżej) o nazwie \fINAZWA\fP w kontekście wykonywanej powłoki. Standardowe wyjście \fIpolecenia\fP jest połączone potokiem z deskryptorem pliku wykonywanej powłoki, a ten jest przypisany do \fINAZWA\fP[0]. Standardowe wejście \fIpolecenia\fP jest połączone potokiem z deskryptorem pliku wykonywanej powłoki, a ten jest przypisany do \fINAZWA\fP[1]. Ten potok jest ustawiany przed wszystkimi przekierowaniami podanymi z poleceniem (patrz .SM \fBPRZEKIEROWANIE\fP poniżej). Deskryptory pliku mogą zostać użyte jako argumenty do poleceń powłoki i przekierowań, korzystając ze standardowych interpretacji słów. Deskryptory plików nie są dostępne w podpowłokach. Identyfikator procesu powłoki utworzonej do wykonania koprocesu jest dostępny jako wartość zmiennej \fINAZWA\fP_PID. Do czekania na zakończenie koprocesu można użyć wbudowanego polecenia \fBwait\fP. .PP Ponieważ koproces jest tworzony jako polecenie asynchroniczne, polecenie \fBcoproc\fP zawsze zwróci powodzenie. Zwracanym statusem koprocesu jest kod zakończenia \fIpolecenia\fP. .SS "Definiowanie funkcji powłoki" .PP Funkcja powłoki jest obiektem wywoływanym podobnie jako polecenie proste i wykonującym polecenie złożone z nowym zestawem parametrów pozycyjnych. Funkcje powłoki deklaruje się w następujący sposób: .TP \fInazwa\fP () \fIpolecenie\-złożone\fP [\fIprzekierowanie\fP] .PD 0 .TP \fBfunction\fP \fInazwa\fP [()] \fIpolecenie\-złożone\fP [\fIprzekierowanie\fP] .PD W ten sposób definiowana jest funkcja o nazwie \fInazwa\fP. Słowo zastrzeżone \fBfunction\fP jest opcjonalne. Jeśli je podano, to nawiasy są opcjonalne. \fICiałem\fP funkcji jest polecenie złożone \fIpolecenie\-złożone\fP (patrz \fBPolecenia złożone\fP powyżej). Polecenie jest zwykle \fIlistą\fP poleceń objętych nawiasami klamrowymi { i }, ale może to być dowolne z poleceń wypisanych powyżej w rozdziale \fBPolecenia złożone\fP, z jednym wyjątkiem: jeśli użyje się słowa kluczowego \fBfunction\fP bez nawiasów, nawiasy klamrowe są\ obowiązkowe. \fIPolecenie\-złożone\fP jest wykonywane ilekroć podano \fInazwę\fP jako nazwę polecenia prostego. W \fItrybie_posix\fP \fInazwa\fP nie może być taka sama, jak jedno ze specjalnych \fIsłów wbudowanych\fP POSIX. Wszystkie przekierowania (patrz .SM \fBPRZEKIEROWANIE\fP poniżej) podane podczas definiowania funkcji są wykonywane gdy funkcja jest wykonywana. Kod zakończenia definicji funkcji wynosi zero, chyba że wystąpił błąd składni, lub istnieje już funkcja tylko do odczytu o tej samej nazwie. Podczas wykonywania, kodem wyjścia funkcji jest kod zakończenia ostatniego polecenia wykonanego w jej ciele. Patrz również .SM \fBFUNKCJE\fP poniżej. .SH KOMENTARZE W powłoce nie\-interaktywnej lub w powłoce interaktywnej, w której włączono opcję \fBinteractive_comments\fP do opcji wbudowanych \fBshopt\fP (zobacz .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP poniżej) słowo rozpoczynające się od znaku \fB#\fP powoduje, że słowo to i wszystkie pozostałe znaki w tym wierszu będą ignorowane. Powłoka interaktywna bez włączonej opcji \fBinteractive_comments\fP nie pozwala na komentarze. Opcja \fBinteractive_comments\fP jest domyślnie włączona w powłokach interaktywnych. .SH CYTOWANIE \fICytowanie\fP 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. .PP Każdy z \fImetaznaków\fP podanych powyżej w .SM \fBDEFINICJACH\fP posiada dla powłoki specjalne znaczenie i musi być cytowany, jeśli ma oznaczać samego siebie. .PP Gdy używane są funkcje interpretacji historii poleceń (patrz .SM \fBINTERPRETACJA HISTORII\fP), znak \fIinterpretacji historii\fP, zwykle \fB!\fP, musi być cytowany, jeśli chce się uniknąć interpretacji historii. .PP Istnieją trzy mechanizmy cytowania: \fIznak specjalny\fP (escape character), apostrofy (pojedyncze cudzysłowy) i cudzysłowy zwykłe (podwójne). .PP Niecytowany odwrotny ukośnik (\fB\e\fP) jest \fIznakiem specjalnym\fP. Chroni on przed interpretacją dosłowną wartość następującego po nim znaku, z wyjątkiem . Jeśli pojawi się para \fB\e\fP 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). .PP 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. .PP Ujęcie znaków w cudzysłowy chroni dosłowne wartości każdego z nich, za wyjątkiem \fB$\fP, \fB`\fP i \fB\e\fP oraz, gdy włączone jest dopełnianie z historii, \fB!\fP. Gdy powłoka działa w \fItrybie posix\fP, \fB!\fP nie ma specjalnego znaczenia wewnątrz podwójnych cudzysłowów, nawet gdy włączone jest dopełnianie z historii. Znaki \fB$\fP i \fB`\fP 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: \fB$\fP, \fB`\fP, \^\fB"\fP\^, \fB\e\fP lub \fB\fP. Cudzysłów może być cytowany wewnątrz cudzysłowów przez poprzedzenie go odwrotnym ukośnikiem. Jeśli dopełnianie z historii jest włączone, to będzie wykonane, chyba że znak \fB!\fP jest ujęty w cudzysłowy lub cytowany odwrotnym ukośnikiem. Odwrotny ukośnik poprzedzający \fB!\fP nie jest usuwany. .PP Parametry specjalne \fB*\fP i \fB@\fP posiadają specjalne znaczenie wewnątrz cudzysłowów (zobacz .SM \fBPARAMETRY\fP poniżej). .PP Słowa postaci \fB$\fP'\fIłańcuch\fP' traktowane są specjalnie. Słowo takie interpretowane jako \fIłańcuch\fP, 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: .RS .PD 0 .TP \fB\ea\fP alarm (dzwonek) .TP \fB\eb\fP backspace .TP \fB\ee\fP .TP \fB\eE\fP znak escape .TP \fB\ef\fP znak wysuwu strony (form feed) .TP \fB\en\fP znak nowego wiersza (new line) .TP \fB\er\fP powrót karetki (carriage return) .TP \fB\et\fP tabulacja pozioma (horizontal tab) .TP \fB\ev\fP tabulacja pionowa (vertical tab) .TP \fB\e\e\fP odwrotny ukośnik (backslash) .TP \fB\e\(aq\fP apostrof .TP \fB\e"\fP cudzysłów .TP \fB\e?\fP znak zapytania .TP \fB\e\fP\fInnn\fP ośmiobitowy znak, którego wartością jest ósemkowa liczba \fInnn\fP (jedna do trzech cyfr) .TP \fB\ex\fP\fIHH\fP ośmiobitowy znak, którego wartością jest szesnastkowa liczba \fInnn\fP (jedna lub dwie cyfry szesnastkowe) .TP \fB\eu\fP\fIHHHH\fP znak Unicode (ISO/IEC 10646) o wartości szesnastkowej \fIHHHH\fP (jedna do czterech cyfr szesnastkowych) .TP \fB\eU\fP\fIHHHHHHHH\fP znak Unicode (ISO/IEC 10646) o wartości szesnastkowej \fIHHHHHHHH\fP (jedna do ośmiu cyfr szesnastkowych) .TP \fB\ec\fP\fIx\fP znak kontrolny \fIx\fP .PD .RE .LP Przetłumaczony wynik jest pojedynczo cytowany, tak jakby nie było znaku dolara. .PP Ujęty w cudzysłowy łańcuch poprzedzony znakiem dolara (\fB$\fP"\fIłańcuch\fP") spowoduje, że łańcuch zostanie zinterpretowany zgodnie z bieżącymi ustawieniami regionalnymi (locale). Jeśli ustawione są one na \fBC\fP lub \fBPOSIX\fP, to znak dolara jest ignorowany. Jeżeli łańcuch jest tłumaczony i zamieniany, to zastąpienie jest podwójnie cytowane. .SH PARAMETRY \fIParametr\fP jest elementem przechowującym wartości. Może on być \fInazwą\fP, liczbą lub jednym ze znaków specjalnych podanych poniżej w sekcji \fBParametry specjalne\fP. Dla celów powłoki \fIzmienna\fP jest parametrem oznaczanym przez \fInazwę\fP. Zmienna posiada \fIwartość\fP i zero lub więcej \fIatrybutów\fP. Wartość atrybutom przypisuje się za pomocą polecenia wbudowanego \fBdeclare\fP (zobacz opis tego polecenia poniżej, w sekcji .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP). .PP 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 \fBunset\fP (zobacz poniżej .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP ). .PP Do \fIzmiennej\fP można wykonać przypisanie przy pomocy instrukcji postaci .RS .PP \fInazwa\fP=[\fIwartość\fP] .RE .PP Jeżeli nie podano \fIwartości\fP, to zmiennej przypisywany jest łańcuch pusty. Wszystkie \fIwartości\fP przechodzą przez interpretację tyld, podstawianie parametrów, interpretację zmiennych, podstawianie wyników poleceń, interpretację wyrażeń arytmetycznych i usuwanie cytowań (zobacz poniżej .SM \fBINTERPRETACJA\fP). Jeżeli zmienna ma ustawiony atrybut \fBinteger\fP (całkowita), to \fIwartość\fP podlega interpretacjom wyrażeń arytmetycznych, nawet jeśli nie użyto interpretacji $((...)). Zobacz poniżej \fBInterpretacja wyrażeń arytmetycznych\fP. Nie jest wykonywane dzielenie na słowa, z wyjątkiem \fB"$@"\fP, jak wyjaśniono to poniżej w sekcji \fBParametry specjalne\fP. Nie jest wykonywane rozwijanie nazw plików. Instrukcje przypisania mogą się też pojawiać jako argumenty poleceń wbudowanych \fBalias\fP, \fBdeclare\fP, \fBtypeset\fP, \fBexport\fP, \fBreadonly\fP i \fBlocal\fP (poleceń \fIdeklarujących\fP). W \fItrybie posix\fP te słowa wbudowane mogą wystąpić w poleceniu po jednym lub większej liczby wystąpień polecenia wbudowanego \fBcommand\fP i zachowują właściwości instrukcji przypisania. .PP W kontekście, w którym instrukcja przypisania przypisuje wartość do zmiennej powłoki lub do tablicy indeksowanej, operator += może posłużyć do dołączenia lub dodania do poprzedniej wartości zmiennej. Obejmuje to argumenty do poleceń wbudowanych takich jak \fBdeclare\fP, które akceptują instrukcje przypisania (poleceń \fIdeklarujących\fP). Gdy += jest stosowane do zmiennej z ustawionym atrybutem \fIliczby całkowitej\fP, to wartość jest obliczana jako wyrażenie arytmetyczne i dodawana do bieżącej wartości zmiennej, która również jest obliczana. Gdy += jest stosowane do zmiennej tablicowej używając przypisania złożonego (patrz \fBTablice\fP poniżej), wartość zmiennej nie jest niszczona (jak to ma miejsce przy użyciu =), a nowe wartości są dołączane do tablicy poczynając od indeksu większego o jeden on maksymalnego indeksu tablicy (w przypadku tablic indeksowanych) lub jest dodawana jako dodatkowa para klucz\-wartość (w przypadku tablic asocjacyjnych). Gdy += jest stosowane do zmiennej łańcuch\-wartość, to \fIwartość\fP jest interpretowana i dołączana do wartości zmiennej. .PP Zmiennej można przypisać atrybut \fInazwa referencyjna\fP (ang. nameref) za pomocą opcji \fB\-n\fP przekazanej poleceniom wbudowanym \fBdeclare\fP lub \fBlocal\fP (zob. opisy \fBdeclare\fP i \fBlocal\fP niżej) aby utworzyć \fInazwę referencyjną\fP lub odniesienie do innej zmiennej. Pozwala to na pośrednie operowanie na zmiennych. Gdy zmienna nazwy referencyjnej jest przywoływana, przypisywana, usuwana lub modyfikowane są jej atrybuty (inne niż użycie lub zmiana samej \fInazwy referencyjnej\fP), operacja ta jest w rzeczywistości wykonywana na zmiennej określonej wartością zmiennej nazwy odniesienia. Nazwa referencyjna jest często używana aby odnieść się do zmiennej, której nazwa jest przekazywana jako argument do funkcji. Przykładowo nazwa zmiennej jest przekazywana do funkcji powłoki w pierwszym argumencie, wykonując .sp .5 .RS .if t \f(CWdeclare -n ref=$1\fP .if n declare -n ref=$1 .RE .sp .5 wewnątrz funkcji tworzącej zmienną nazwy referencyjnej \fBref\fP, której wartością jest nazwa zmiennej przekazana jako pierwszy argument. Odniesienie lub przypisanie \fBref\fP oraz zmiana jej atrybutów są traktowane jako odniesienie lub przypisania do zmiennej oraz zmiana atrybutów zmiennej której nazwę przekazano jako \fB$1\fP. Jeśli zmienna kontrolujące pętle \fBfor\fP ma atrybut nazwy referencyjnej, lista słów może być\ listą zmiennych powłoki, a nazwa zostanie przypisana za każdemu słowu z listy, w kolejności, przy wykonywaniu pętli. Zmienne tablicowe nie mogą otrzymać atrybutu \fBnameref\fP, jednak do zmiennych nazw referencyjnych mogą odnosić się zmienne tablicowe i wskaźniki zmiennych tablicowych. Nazwy referencyjne można usunąć stosując opcję \fB\-n\fP do polecenia wbudowanego \fBunset\fP. W przeciwnym razie, gdy \fBunset\fP jest wykonywane z nazwą referencyjną jako argument, zmienna do której odnosi się nazwa referencyjna zostanie usunięta. .SS "Parametry pozycyjne" .PP \fIParametr pozycyjny\fP 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 \fBset\fP. 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 .SM \fBFUNKCJE\fP). .PP Jeżeli interpretowany jest parametr pozycyjny określany więcej niż jedną cyfrą, to musi być ujęty w nawiasy (zobacz poniżej .SM \fBINTERPRETACJA\fP). .SS "Parametry specjalne" .PP 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. .PD 0 .TP \fB*\fP Interpretowane jest jako parametry pozycyjne, począwszy od pierwszego. Gdy interpretacja nie pojawia się wewnątrz cudzysłowów, każdy parametr pozycyjny jest interpretowany jako oddzielne słowo. W kontekście w jakim występują, te słowa ulegają\ kolejnemu podziałowi na słowa i rozwijaniu ścieżek. 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 .SM \fBIFS\fP. To znaczy, "\fB$*\fP" jest równoważne "\fB$1\fP\fIc\fP\fB$2\fP\fIc\fP\fB...\fP", gdzie \fIc\fP jest pierwszym znakiem wartości zmiennej .SM \fBIFS\fP. Jeżeli .SM \fBIFS\fP nie jest ustawione, to parametry oddzielane są spacjami. Jeśli .SM \fBIFS\fP jest łańcuchem pustym, to parametry są ze sobą połączone bez rozdzielających je separatorów. .TP \fB@\fP 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, "\fB$@\fP" jest równoważne "\fB$1\fP" "\fB$2\fP" ... Jeśli wewnątrz słowa zachodzi interpretacja (ujęta w cudzysłowy), to pierwszy zinterpretowany parametr jest łączony z początkiem oryginalnego słowa, a interpretacja ostatniego parametru jest łączona z końcem oryginalnego słowa. Jeśli nie ma żadnych parametrów pozycyjnych, "\fB$@\fP" i \fB$@\fP interpretowane są jako nic (tj. są usuwane). .TP \fB#\fP Interpretowane jako liczba parametrów pozycyjnych, podana dziesiętnie. .TP \fB?\fP Interpretowane jako kod zakończenia ostatnio wykonanego potoku pierwszoplanowego. .TP \fB\-\fP Interpretowane jako bieżące flagi opcji, takie jakie zostały podane podczas wywołania, ustawione przy pomocy wbudowanego polecenia \fBset\fP lub ustawione przez samą powłokę (tak jak opcja \fB\-i\fP). .TP \fB$\fP Interpretowany jest jako identyfikator procesu powłoki. W podpowłoce (), interpretowany jest jako ID procesu bieżącej powłoki, nie zaś podpowłoki. .TP \fB!\fP Interpretowany jako ID procesu ostatnio wykonywanego polecenia tła, gdy jest wykonywane jako polecenie asynchroniczne lub używając słowa wbudowanego \fBbg\fP (zob. niżej .SM \fBKONTROLA ZADAŃ\fP). .TP \fB0\fP Interpretowany jako nazwa powłoki lub skryptu powłoki. Ustawiane jest to na etapie inicjowania powłoki. Jeżeli \fBbash\fP wywoływany został z plikiem poleceń, to \fB$0\fP ustawiane jest na nazwę tego pliku. Jeśli \fBbash\fP został uruchomiony z opcją \fB\-c\fP, to \fB$0\fP 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 \fBbash\fP, jaką podaje argument zerowy. .TP \fB_\fP 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. .PD .SS "Zmienne powłoki" .PP Powłoka ustawia następujące zmienne: .PP .PD 0 .TP \fBBASH\fP Interpretowane jako pełna nazwa pliku użyta do wywołania tego przebiegu \fBbash\fP. .TP \fBBASHOPTS\fP Oddzielana dwukropkiem lista włączonych opcji powłoki. Każde słowo na liście jest poprawnym argumentem do opcji \fB\-s\fP wbudowanego polecenia \fBshopt\fP (patrz .SM \fBWBUDOWANE\ POLECENIA\ POWŁOKI\fP poniżej). Opcje pojawiające się w .SM \fBBASHOPTS\fP są tymi, które są raportowane jako \fIwłączone\fP (on) przez \fBshopt\fP. Jeśli ta zmienna występuje w środowisku podczas uruchamiania \fBbash\fP, to każda opcja powłoki z listy będzie włączona przed odczytaniem plików startowych. Ta zmienna jest tylko do odczytu. .TP \fBBASHPID\fP Zmienna przechowuje identyfikator bieżącego procesu \fBbash\fP. W określonych przypadkach, takich jak sytuacja, gdy podpowłoki nie wymagają ponownej inicjalizacji \fBbash\fP, różni się od \fB$$\fP. .TP \fBBASH_ALIASES\fP Zmienna tablicy asocjacyjnej, której wpisy odpowiadają wewnętrznej liście aliasów zarządzanych przez wbudowane polecenie \fBalias\fP. Elementy dodawane do tablicy pojawiają się na liście aliasów, jednak usunięcie elementów tablicy obecnie nie powoduje usunięcie aliasów z listy aliasów. Jeśli \fBBASH_ALIASES\fP zostanie skasowana, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowana. .TP \fBBASH_ARGC\fP Zmienna tablicowa, której wartościami są liczby parametrów każdej ramki w bieżącym stosie wywołania \fBbash\fP. Liczba parametrów bieżącego podprogramu (funkcji powłoki lub skryptu wykonywanego przez \fB.\fP lub \fBsource\fP) znajduje się na górze stosu. Gdy podprogram jest wykonywany, liczba przekazanych parametrów jest przypisywana do .SM \fBBASH_ARGC\fP. Powłoka ustawia .SM \fBBASH_ARGC\fP wyłącznie w rozszerzonym trybie debugowania (patrz opis opcji \fBextdebug\fP wbudowanego polecenie \fBshopt\fP poniżej). .TP \fBBASH_ARGV\fP Zmienna tablicowa zawierająca wszystkie parametry bieżącego stosu wywołania \fBbash\fP. Ostatni parametr ostatniego wywołania podprogramu jest umieszczony na wierzchołku stosu, natomiast pierwszy parametr pierwszego wywołania na spodzie. Gdy podprogram jest wykonywany, liczba przekazanych parametrów jest przypisywana do .SM \fBBASH_ARGV\fP. Powłoka ustawia .SM \fBBASH_ARGV\fP wyłącznie w rozszerzonym trybie debugowania (patrz opis opcji \fBextdebug\fP wbudowanego polecenie \fBshopt\fP poniżej). .TP \fBBASH_CMDS\fP Zmienna tablicy asocjacyjnej, której wpisy odpowiadają wewnętrznej liście skrótów poleceń, zarządzanej przez wbudowane polecenie \fBhash\fP. Elementy dodawane do tablicy pojawiają się na liście skrótów, jednak usunięcie elementów tablicy obecnie nie powoduje powoduje usunięcia ich z tablicy skrótów. Jeśli \fBBASH_CMDS\fP zostanie skasowana, traci swoje specjalne właściwości, nawet jeśli zostanie później zresetowana. .TP \fBBASH_COMMAND\fP Aktualnie wykonywane polecenie lub polecenie przeznaczone do wykonania, chyba że powłoka wykonuje aktualnie polecenie będące wynikiem zadziałania pułapki \- wówczas jest to polecenie wykonywane w czasie zadziałania pułapki. .TP \fBBASH_EXECUTION_STRING\fP Argument polecenia do opcji wywołania \fB\-c\fP. .TP \fBBASH_LINENO\fP Zmienna tablicowa, której wartościami są numery wierszy plików źródłowych, w których przywołano każdy odpowiednik ze zmiennej .SM \fBFUNCNAME\fP. \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP jest numerem wiersza w pliku źródłowym (\fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP), gdzie przywołano \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP (lub \fB${BASH_LINENO[\fP\fI$i\-1\fP\fB]}\fP, jeśli odnosi się do innej funkcji powłoki). Proszę użyć .SM \fBLINENO\fP, aby pobrać bieżący numer wiersza. .TP \fBBASH_LOADABLES_PATH\fP Lista rozdzielonych dwukropkami katalogów, w których powłoka szuka dynamicznie ładowalnych poleceń wbudowanych podanych przez polecenie \fBenable\fP. .TP \fBBASH_REMATCH\fP Zmienna tablicowa, której wartości są przypisywane operatorem dwuargumentowym \fB=~\fP do polecenia warunkowego \fB[[\fP. Element o indeksie 0 jest częścią łańcucha pasującego do całego wyrażenia regularnego. Element o indeksie \fIn\fP jest częścią łańcucha pasującego do \fIn\fP\-tego podwyrażenia ujętego w nawiasy. Zmienna jest tylko do odczytu. .TP \fBBASH_SOURCE\fP Zmienna tablicowa, której wartościami są nazwy plików źródłowych, w których zdefiniowano odpowiadające nazwy funkcji powłoki w zmiennej tablicowej .SM \fBFUNCNAME\fP. Funkcja powłoki \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP jest zdefiniowana w pliku \fB${BASH_SOURCE[\fP\fI$i\fP\fB]}\fP i wywoływana z \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}.\fP. .TP \fBBASH_SUBSHELL\fP Zwiększana o jeden, wewnątrz każdej powłoki lub środowiska podpowłoki, gdy powłoka rozpoczyna wykonywanie w tym środowisku. Wartością początkową jest 0. .TP \fBBASH_VERSINFO\fP Zmienna tablicowa tylko do odczytu, której elementy zawierają informacje o wersji uruchomionego \fBbash\fP. Wartości przypisane elementom tablicy są następujące: .sp .5 .RS .TP 24 \fBBASH_VERSINFO[\fP0\fB]\fP Główny numer wersji, wydanie (\fIrelease\fP). .TP \fBBASH_VERSINFO[\fP1\fB]\fP Poboczny numer wersji (\fIversion\fP). .TP \fBBASH_VERSINFO[\fP2\fB]\fP Poziom łat (patch level). .TP \fBBASH_VERSINFO[\fP3\fB]\fP Wersja kompilatu (build version). .TP \fBBASH_VERSINFO[\fP4\fB]\fP Status wydania (np. \fIbeta1\fP). .TP \fBBASH_VERSINFO[\fP5\fB]\fP Wartość .SM \fBMACHTYPE\fP. .RE .TP \fBBASH_VERSION\fP Interpretowane jako łańcuch opisujący wersję uruchomionego \fBbash\fP. .TP \fBCOMP_CWORD\fP Indeks w \fB${COMP_WORDS}\fP 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 \fBProgramowalne uzupełnianie\fP). .TP \fBCOMP_KEY\fP Klawisz (lub ostatni klawisz w sekwencji klawiszy) użyty do wywołania bieżącej funkcji uzupełniania. .TP \fBCOMP_LINE\fP 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 \fBProgramowalne uzupełnianie\fP). .TP \fBCOMP_POINT\fP 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 \fB${#COMP_LINE}\fP. 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 \fBProgramowalne uzupełnianie\fP). .TP \fBCOMP_TYPE\fP Ustawiana na wartość całkowitą odpowiadającą typowi uzupełnienia, którego próbę przeprowadzono, które spowodowało wywołanie funkcji uzupełnienia: \fITAB\fP, do normalnego uzupełnienia, \fI?\fP, do wypisywania uzupełnień po udanej tabulacji, \fI!\fP, do wypisywania alternatyw częściowego uzupełnienia słowa, \fI@\fP, do wypisania uzupełnień, jeśli słowo nie zostało zmodyfikowane lub \fI%\fP, do uzupełnienia menu. Zmienna ta jest dostępna tylko w funkcjach powłoki i zewnętrznych poleceniach wywołanych przez narzędzia programowalnego uzupełnienia powłoki (patrz poniżej \fBProgramowalne uzupełnienie\fP). .TP \fBCOMP_WORDBREAKS\fP Zestaw znaków traktowanych przez bibliotekę \fBreadline\fP jako separatory słów, podczas przeprowadzania uzupełnień słów. Jeśli unieważniono .SM \fBCOMP_WORDBREAKS\fP, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawiona. .TP \fBCOMP_WORDS\fP Zmienna tablicowa (patrz \fBTablice\fP poniżej) składająca się z pojedynczych słów z aktualnego wiersza poleceń. Wiersz jest dzielony na słowa tak, jak podzieliłby go \fBreadline\fP, używając .SM \fBCOMP_WORDBREAKS\fP, zgodnie z opisem powyżej. Zmienna ta jest dostępna wyłącznie w funkcjach powłoki wywołanych przez usługi programowalnego uzupełniania (zobacz poniżej \fBProgramowalne uzupełnianie\fP). .TP \fBCOPROC\fP Zmienna tablicowa (patrz poniżej \fBTablice\fP) tworzona do zatrzymania deskryptorów plików z wyjścia lub wejścia nienazwanych koprocesów (zobacz \fBKoprocesy (współprocesy)\fP powyżej). .TP \fBDIRSTACK\fP Zmienna tablicowa (zobacz \fBTablice\fP 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 \fBdirs\fP. Przypisanie do elementów tej zmiennej 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 \fBpushd\fP i \fBpopd\fP. Przypisanie wartości tej zmiennej nie zmieni bieżącego katalogu. Jeśli .SM \fBDIRSTACK\fP jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione. .TP \fBEUID\fP Interpretowane jako efektywny identyfikator bieżącego użytkownika, inicjowane przy uruchamianiu powłoki. Zmienna ta jest tylko do odczytu. .TP \fBFUNCNAME\fP Zmienna tablicowa zawierająca nazwy wszystkich funkcji powłoki obecnych w stosie wywołań. Element z indeksem 0 jest nazwą aktualnie wykonywanej funkcji powłoki. Najniższy element (tzn. z najwyższym numerem indeksu) to .if t \f(CW"main"\fP. .if n "main". Zmienna istnieje tylko gdy wykonywana jest funkcja powłoki. Przypisania do .SM \fBFUNCNAME\fP nie odnoszą skutku. Jeśli .SM \fBFUNCNAME\fP jest unieważniona, to traci swe specjalne właściwości, nawet jeśli jest następnie ponownie ustawiona. .if t .sp 0.5 .if n .sp 1 Zmienna ta może zostać użyta razem z \fBBASH_LINENO\fP i \fBBASH_SOURCE\fP. Każdy element \fBFUNCNAME\fP ma swój odpowiednik w \fBBASH_LINENO\fP i \fBBASH_SOURCE\fP opisujący stos wywołania. Na przykład, \fB${FUNCNAME[\fP\fI$i\fP\fB]}\fP została wywołana z pliku \fB${BASH_SOURCE[\fP\fI$i+1\fP\fB]}\fP w wierszu o numerze \fB${BASH_LINENO[\fP\fI$i\fP\fB]}\fP. Wbudowane polecenie \fBcaller\fP wyświetla bieżący stos wywołania używając tej informacji. .TP \fBGROUPS\fP Zmienna tablicowa zawierająca listę grup, których członkiem jest bieżący użytkownik. Próby przypisywania wartości do .SM \fBGROUPS\fP nie odnoszą efektu. Jeżeli .SM \fBGROUPS\fP jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione. .TP \fBHISTCMD\fP Licznik historii (indeks na liście historii poleceń) bieżącego polecenia. Jeżeli .SM \fBHISTCMD\fP jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione. .TP \fBHOSTNAME\fP Automatycznie ustawiane na nazwę aktualnego hosta. .TP \fBHOSTTYPE\fP Automatycznie ustawiane na łańcuch unikalnie opisujący typ maszyny, na której jest wykonywany \fBbash\fP. Wartość domyślna zależy od systemu. .TP \fBLINENO\fP 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 .SM \fBLINENO\fP jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione. .TP \fBMACHTYPE\fP Automatycznie ustawiane na łańcuch w pełni opisujący typ systemu, na którym jest wykonywany \fBbash\fP, w standardowym formacie GNU \fIcpu\-firma\-system\fP. Wartość domyślna zależy od systemu. .TP \fBMAPFILE\fP Zmienna tablicowa (patrz \fBTablice\fP poniżej) tworzona do zatrzymania tekstu odczytywanego przez wbudowane polecenie \fBmapfile\fP, gdy nie podano nazwy zmiennej. .TP \fBOLDPWD\fP Poprzedni katalog roboczy ustawiony poleceniem \fBcd\fP. .TP \fBOPTARG\fP Wartość ostatniego, będącego opcją, argumentu przetworzonego przez wbudowane polecenie \fBgetopts\fP (zobacz poniżej .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP). .TP \fBOPTIND\fP Numer (indeks) następnego argumentu, jaki ma zostać przetworzony przez wbudowane polecenie \fBgetopts\fP (zobacz poniżej .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP). .TP \fBOSTYPE\fP Automatycznie ustawiane na łańcuch opisujący system operacyjny, w którym jest wykonywany \fBbash\fP. Wartość domyślna zależy od systemu. .TP \fBPIPESTATUS\fP Zmienna tablicowa (zobacz \fBTablice\fP poniżej) zwierająca listę kodów zakończenia z procesów w ostatnio wykonywanym potoku pierwszoplanowym (który może zawierać pojedyncze polecenie). .TP \fBPPID\fP Identyfikator procesu macierzystego powłoki. Zmienna ta jest tylko do odczytu. .TP \fBPWD\fP Bieżący katalog roboczy, ustawiony poleceniem \fBcd\fP. .TP \fBRANDOM\fP 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 .SM \fBRANDOM\fP. Jeżeli .SM \fBRANDOM\fP jest unieważniona, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawiona. .TP \fBREADLINE_LINE\fP Zawartość bufora wiersza \fBrealine\fP, do użycia z .if t \f(CWbind -x\fP .if n "bind -x" (patrz .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP poniżej). .TP \fBREADLINE_POINT\fP Pozycja punktu wprowadzania w buforze wiersza \fBreadline\fP, do użycia z .if t \f(CWbind -x\fP .if n "bind -x" (patrz .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP poniżej). .TP \fBREPLY\fP Ustawiona na wiersz wejścia odczytany wbudowanym poleceniem \fBread\fP jeśli nie podano żadnych jego argumentów. .TP \fBSECONDS\fP 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 .SM \fBSECONDS\fP zostanie przypisana wartość, to wartość zwracana przez kolejne odwołania jest równa liczbie sekund od czasu przypisania plus przypisana wartość. Jeżeli .SM \fBSECONDS\fP jest unieważnione, to traci swe specjalne właściwości, nawet jeżeli jest następnie ponownie ustawione. .TP \fBSHELLOPTS\fP Lista, rozdzielonych dwukropkami, włączonych opcji powłoki. Każde słowo listy jest poprawnym argumentem opcji \fB\-o\fP wbudowanego polecenia \fBset\fP (zobacz .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP poniżej). Opcje pojawiające się w .SM \fBSHELLOPTS\fP to te, które są zgłaszane jako włączone (\fIon\fP) przez \fBset \-o\fP. Jeśli zmienna ta istnieje w środowisku podczas uruchamiania \fBbash,\fP 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. .TP \fBSHLVL\fP Inkrementowana każdorazowo, gdy uruchamiane jest kolejne wystąpienie \fBbash\fP. .TP \fBUID\fP Interpretowane jako identyfikator bieżącego użytkownika, inicjowane przy uruchamianiu powłoki. Zmienna ta jest tylko do odczytu. .PD .PP Poniższe zmienne są używane przez powłokę. W niektórych przypadkach \fBbash\fP przypisuje im domyślne wartości; przypadki te są odnotowane niżej. .PP .PD 0 .TP \fBBASH_COMPAT\fP Wartość używana do ustawienia poziomu kompatybilności powłoki. Opis różnych poziomów kompatybilności i ich skutki znajduje się przy poleceniu wbudowanym \fBshopt\fP w rozdziale \fBWBUDOWANE POLECENIA POWŁOKI\fP. Wartość może być liczbą dziesiętną (np. 4.2) lub całkowitą (np. 42) określającą\ dany poziom kompatybilności. Jeśli \fBBASH_COMPAT\fP jest nieustawione, lub przypisano mu łańcuch pusty, to poziom kompatybilności jest ustawiony na domyślny dla bieżącej\ wersji. Jeśli \fBBASH_COMPAT\fP ustawiono na wartość niebędącą poprawnym poziomem kompatybilności, to powłoka wypisze komunikat o błędzie i ustawi poziom kompatybilności na domyślny dla bieżącej wersji. Poprawne poziomy kompatybilności są takie jak opcje kompatybilności akceptowane przez polecenie wbudowane \fBshopt\fP opisane poniżej (np. \fBcompat42\fP oznacza, że poprawnymi wersjami są 4.2 i 42). Bieżąca wersja również jest poprawną\ wartością. .TP \fBBASH_ENV\fP Jeżeli parametr ten jest ustawiony podczas wykonywania przez \fBbash\fP skryptu, to jego wartość interpretowana jest jako nazwa pliku zawierającego polecenia do zainicjowania powłoki, jak w \fI~/.bashrc\fP. Wartość .SM \fBBASH_ENV\fP podlega interpretacji parametrów, podstawianiu wyników poleceń i interpretacjom wyrażeń arytmetycznych przed interpretacją jej jako nazwy pliku. Zmienna .SM \fBPATH\fP nie jest używana do znalezienia pliku o powstałej w ten sposób nazwie. .TP \fBBASH_XTRACEFD\fP Jeśli ustawiono liczbę całkowitą odpowiadającą poprawnemu deskryptorowi pliku, to \fBbash\fP zapisze wyjście stosu wygenerowane gdy .if t \f(CWset -x\fP .if n \fIset -x\fP jest włączone do tego deskryptora pliku. Deskryptor pliku jest zamykany gdy .SM \fBBASH_XTRACEFD\fP jest usuwana lub przy przypisaniu nowej wartości. Usunięcie .SM \fBBASH_XTRACEFD\fP lub przypisanie jej łańcucha pustego powoduje wysłanie stosu na standardowe wyjście błędów. Proszę zauważyć, że ustawienie .SM \fBBASH_XTRACEFD\fP na 2 (deskryptor pliku wyjścia błędów), a następnie usunięcie jej spowoduje zamknięcie standardowego wyjścia błędów. .TP \fBCDPATH\fP Ścieżka wyszukiwania dla polecenia \fBcd\fP. Jest to lista rozdzielonych dwukropkami katalogów, w których powłoka szuka katalogów docelowych podanych przez polecenie \fBcd\fP. Przykładową wartością jest .if t \f(CW".:~:/usr"\fP. .if n ".:~:/usr". .TP \fBCHILD_MAX\fP Ustawia liczbę wartości kodów wyjścia zakończonych procesów potomnych, które ma zapamiętać powłoka. Bash nie pozwoli na zmniejszenie tej wartości poniżej minimum określonego normą POSIX, istnieje również wartość maksymalna (obecnie 8192), której nie można przekroczyć. Minimalna wartość jest zależna od systemu. .TP \fBCOLUMNS\fP Używana przez polecenie wbudowane \fBselect\fP do wyznaczenia szerokości terminala przy wypisywaniu list wyboru. Ustawiana automatycznie, gdy włączono opcję \fBcheckwinsize\fP oraz w powłoce interaktywnej po otrzymaniu .SM \fBSIGWINCH\fP. .TP \fBCOMPREPLY\fP Zmienna tablicowa, z której \fBbash\fP czyta możliwe uzupełnienia tworzone przez funkcję powłoki wywołaną przez usługę programowalnego uzupełniania (zobacz poniżej \fBProgramowalne uzupełnianie\fP). Każdy element tablicy zawiera jedno możliwe uzupełnienie. .TP \fBEMACS\fP Gdy \fBbash\fP znajdzie opisywaną zmienną w środowisku podczas uruchamiania powłoki, z wartością ustawioną na .if t \f(CWt\fP, .if n "t", to przyjmuje, że powłoka działa w buforze powłoki Emacsa i wyłącza edycję wiersza. .TP \fBENV\fP Podobnie jak .SM \fBBASH_ENV\fP; używana gdy powłoka jest wywołana w trybie POSIX. .TP \fBEXECIGNORE\fP Lista oddzielonych dwukropkami wzorców powłoki (zob. \fBDopasowanie wzorca\fP) definiujących listę nazw plików ignorowanych przy szukaniu poleceń za pomocą\ \fBPATH\fP. Pliki których pełna ścieżka pasuje do jednego z tych wzorców nie są\ traktowane jako pliki wykonywalne dla dopełniania i wykonywania poleceń przez \fBPATH\fP. Nie wpływa to na zachowanie poleceń \fB[\fP, \fBtest\fP oraz \fB[[\fP. Pełne ścieżki w liście skrótów poleceń nie są\ przedmiotem \fBEXECIGNORE\fP. Tę zmienną\ należy używać do ignorowania plików bibliotek współdzielonych, które mają\ ustawione prawo wykonywania, ale nie są\ plikami wykonywalnymi. Dopasowanie wzorców przestrzega ustawień opcji powłoki \fBextglob\fP. .TP \fBFCEDIT\fP Domyślny edytor dla wbudowanego polecenia \fBfc\fP. .TP \fBFIGNORE\fP Lista rozdzielonych dwukropkami przyrostków, jakie mają być ignorowane podczas uzupełniania nazw plików (zobacz .SM \fBREADLINE\fP poniżej). Nazwa pliku o przyrostku pasującym do jednej z pozycji .SM \fBFIGNORE\fP wyłączana jest z listy dopasowanych nazw plików. Przykładową wartością jest .if t \f(CW".o:~"\fP. .if n ".o:~" (cytowanie jest niezbędne przy przypisywaniu do tej zmiennej wartości zawierającej tyldy). .TP \fBFUNCNEST\fP Gdy jest ustawiona na wartość numeryczną większą od zera, definiuje maksymalny poziom zagnieżdżenia funkcji. Wywołania funkcji przekraczające określony poziom będą powodowały przerwanie bieżącego polecenia. .TP \fBGLOBIGNORE\fP 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 .SM \fBGLOBIGNORE\fP, to jest on usuwany z listy dopasowanych. .TP \fBHISTCONTROL\fP Lista rozdzielonych dwukropkami wartości, określającymi sposób zapisywania w liście historii. Jeżeli posiada wartość \fIignorespace\fP, to wiersze rozpoczynające się od znaku \fBspacji\fP nie są wprowadzane do listy historii. Jeśli posiada wartość \fIignoredups\fP, to wiersze pasujące do ostatniego wiersza historii nie są wprowadzane. Wartość \fIignoreboth\fP łączy obie te możliwości. Wartość \fIerasedups\fP powoduje usunięcie z historii wszystkich wcześniejszych wierszy, pasujących do bieżącego, przed zapisaniem listy. Wszystkie wartości poza wymienionymi powyżej są ignorowane. 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 \fBHISTIGNORE\fP. Drugi i kolejne wiersze złożonego polecenia wielowierszowego nie są sprawdzane i są dodawane do historii bez względu na wartość .SM \fBHISTCONTROL\fP. .TP \fBHISTFILE\fP Nazwa pliku, w którym zachowywana jest historia poleceń (zobacz .SM \fBHISTORIA\fP poniżej). Wartością domyślną jest \fI~/.bash_history\fP. Jeśli ustawienie tej zmiennej zostanie skasowane, to historia poleceń nie będzie zachowana po zakończeniu pracy powłoki. .TP \fBHISTFILESIZE\fP 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, przez usunięcie najstarszych wpisów. Plik historii jest także obcinany do tego rozmiaru po zapisaniu go w czasie kończenia pracy przez powłokę. Jeśli wartość wynosi 0, plik historii jest obcinany do zera. Wartości nienumeryczne i wartości numeryczne mniejsze niż zero wstrzymują obcinanie. Powłoka ustawia wartość domyślną do wartości \fBHISTSIZE\fP po odczytaniu plików początkowych powłoki. .TP \fBHISTIGNORE\fP 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 `\fB*\fP'). Każdy z wzorców sprawdzany jest z bieżącym wierszem po wykonaniu kontroli określonych przez .SM \fBHISTCONTROL\fP. Oprócz zwykłych znaków dopasowywania wzorców używanych przez powłokę, `\fB&\fP' dopasowuje poprzedni wiersz historii. Literał `\fB&\fP' 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ść \fBHISTIGNORE\fP. Dopasowanie wzorców honoruje ustawienia opcji powłoki \fBextglob\fP. .TP \fBHISTSIZE\fP Liczba poleceń do zapamiętania w historii poleceń (zob. .SM \fBHISTORIA\fP poniżej). Jeśli wartość wynosi 0, polecenia nie są zachowywane w historii. Wartości numeryczne mniejsze niż zero powodują, że każde polecenie jest zapamiętywane w historii (znosi limit). Powłoka ustawia wartość domyślną 500 po odczytaniu plików początkowych powłoki. .TP \fBHISTTIMEFORMAT\fP Gdy ta zmienna jest ustawiona i nie jest pusta, jej wartość jest użyta jak format łańcucha do \fIstrftime\fP(3), w celu wyświetlenia pieczątki czasowej związanej z każdym wpisem historii, wyświetlanym przez wbudowane polecenie \fBhistory\fP. Gdy zmienna jest ustawiona, pieczątki czasowe są zapisywane do pliku historii, dzięki czemu mogą być zachowywane między sesjami powłoki. Używany jest wówczas znak komentarza historii, aby odróżnić pieczątki czasowe od pozostałych wierszy historii. .TP \fBHOME\fP Katalog domowy bieżącego użytkownika; domyślny argument wbudowanego polecenia \fBcd\fP. Wartość tej zmiennej wykorzystywana jest też przy wykonywaniu interpretacji tyld. .TP \fBHOSTFILE\fP Zawiera nazwę pliku o tym samym formacie co .FN /etc/hosts który powinien 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 \fBbash\fP dodaje zawartość nowego pliku do już istniejącej listy. Jeżeli .SM \fBHOSTFILE\fP jest ustawione, ale nie posiada wartości, \fBbash\fP usiłuje uzyskać listę możliwych uzupełnień nazw hostów czytając .FN /etc/hosts Gdy .SM \fBHOSTFILE\fP jest unieważniane, lista hostów jest czyszczona. .TP \fBIFS\fP Wewnętrzny Separator Pól (\fIInternal Field Separator\fP) używany do podziału na słowa po interpretacjach i dzieleniu wierszy na słowa we wbudowanym poleceniu \fBread\fP. Jego domyślną wartością jest ,,\*(rq. .TP \fBIGNOREEOF\fP Steruje działaniem powłoki interaktywnej przy otrzymaniu przez nią znaku .SM \fBEOF\fP jako jedynego znaku wejścia. Jeżeli jest ustawiona, to jej wartość jest liczbą kolejnych znaków .SM \fBEOF\fP jakie muszą być wpisane jako pierwsze znaki wiersza wprowadzania przed zakończeniem pracy przez \fBbash\fP. 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 .SM \fBEOF\fP wskazuje powłoce koniec wprowadzanych danych. .TP \fBINPUTRC\fP Nazwa pliku startowego dla \fBreadline\fP, unieważniająca domyślny plik .FN ~/.inputrc (zobacz .SM \fBREADLINE\fP poniżej). .TP \fBLANG\fP Służy do wyznaczania kategorii locale dla wszystkich kategorii nie wyszczególnionych przez zmienne rozpoczynające się od znaków \fBLC_\fP. .TP \fBLC_ALL\fP Zmienna ta unieważnia wartość .SM \fBLANG\fP i wszelkich innych zmiennych \fBLC_\fP określających kategorie locale. .TP \fBLC_COLLATE\fP 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. .TP \fBLC_CTYPE\fP Ta zmienna decyduje o interpretacji znaków i zachowaniu się klas znaków wewnątrz rozwijania nazw plików i dopasowywania wzorców. .TP \fBLC_MESSAGES\fP Ta zmienna decyduje o ustawieniu locale używanym do tłumaczenia ujętych w cudzysłowy łańcuchów poprzedzonych znakiem \fB$\fP. .TP \fBLC_NUMERIC\fP Ta zmienna określa kategorię locale używaną do formatowania liczb. .TP \fBLC_TIME\fP Ta zmienna określa kategorię locale używaną do formatowania daty i czasu. .TP \fBLINES\fP Używana przez polecenie wbudowane \fBselect\fP do wyznaczenia długości kolumn przy wypisywaniu list wyboru. Ustawiana automatycznie gdy włączono opcję \fBcheckwinsize\fP oraz w powłoce interaktywnej po otrzymaniu po otrzymaniu .SM \fBSIGWINCH\fP. .TP \fBMAIL\fP Jeżeli parametrowi temu jest przypisana nazwa pliku, a nie jest ustawiona zmienna .SM \fBMAILPATH\fP, to \fBbash\fP informuje użytkownika o nadejściu poczty do podanego pliku lub katalogu w formacie Maildir. .TP \fBMAILCHECK\fP Określa jak często (w sekundach) \fBbash\fP 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 lub jest ustawiona na wartość nie większą od zera lub zero, to powłoka wyłącza sprawdzanie poczty. .TP \fBMAILPATH\fP 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, \fB$_\fP interpretowane jest jako nazwa bieżącego pliku pocztowego. Przykład: .RS .PP \fBMAILPATH\fP=\(aq/var/mail/bfox?"You have mail":~/shell\-mail?"$_ has mail!"\(aq .PP \fBBash\fP można skonfigurować, aby zapewnił tej zmiennej wartość domyślną (domyślnie jej nie posiada), ale położenie plików pocztowych użytkownika, jakim się posługuje zależy od systemu (np. /var/mail/\fB$USER\fP). .RE .TP \fBOPTERR\fP Jeżeli ustawiono na wartość 1, \fBbash\fP wyświetla komunikaty o błędach generowanych przez wbudowane polecenie \fBgetopts\fP (zobacz .SM \fBWBUDOWANE\fP \fBPOLECENIA\fP \fBPOWŁOKI\fP poniżej). .SM \fBOPTERR\fP inicjowane jest na 1 każdorazowo, gdy wywoływana jest powłoka lub wykonywany jest skrypt powłoki. .TP \fBPATH\fP Ścieżka wyszukiwania poleceń. Jest to lista rozdzielanych dwukropkami katalogów, w których powłoka szuka poleceń (zobacz .SM \fBWYKONYWANIE\fP \fBPOLECEŃ\fP poniżej). Nazwa katalogu zerowej długości (pusta) oznacza katalog bieżący. Pusty katalog można podać jako dwa złączone dwukropki lub początkowy albo końcowy dwukropek. Domyślna ścieżka zależy od systemu i ustawiana jest przez administratora instalującego \fBbash\fP. Powszechną wartością jest .na .if t \f(CW/usr/local/bin:\:/usr/local/sbin:\:/usr/bin:\:/usr/sbin:\:/bin:\:/sbin\fP. .if n ``/usr/local/bin:\:/usr/local/sbin:\:/usr/bin:\:/usr/sbin:\:/bin:\:/sbin''. .ad .TP \fBPOSIXLY_CORRECT\fP Jeśli podczas uruchamiania \fBbash\fP w środowisku istnieje ta zmienna, to powłoka przed odczytem plików startowych wchodzi w \fItryb posix\fP, tak jakby przy jej wywołaniu podano opcję \fB\-\-posix\fP. Jeśli zmienna ta zostanie ustawiona podczas pracy powłoki, to \fBbash\fP włącza \fItryb posix\fP, tak jakby zostało wykonane polecenie .if t \f(CWset -o posix\fP .if n \fIset -o posix\fP .TP \fBPROMPT_COMMAND\fP Jeżeli jest ustawiona, to jej wartość jest wykonywana jako polecenie przed każdym wysłaniem zachęty głównej. .TP \fBPROMPT_DIRTRIM\fP Gdy jest ustawiona na liczbę większa od zera, jej wartość jest używana jako liczba początkowych składowych katalogów do usunięcia podczas interpretowania sekwencji specjalnych łańcucha zachęty \fB\ew\fP i \fB\eW\fP (patrz poniżej .SM \fBZACHĘTA POWŁOKI\fP). Usuwane znaki są zastępowane wielokropkiem. .TP \fBPS0\fP Wartość tego parametru jest interpretowana (zobacz poniżej .SM \fBZACHĘTA\fP) i wyświetlana przez powłokę interaktywną po odczytaniu polecenia, a przed jego wykonaniem. .TP \fBPS1\fP Wartość tego parametru jest interpretowana (zobacz poniżej .SM \fBZACHĘTA\fP) i używana jako główny łańcuch zachęty. Jego wartością domyślną jest "\fB\es\-\ev\e$ \fP". .TP \fBPS2\fP Wartość tego parametru jest interpretowana jak .SM \fBPS1\fP i używana jako wtórny (secondary) łańcuch zachęty. Domyślnie jest to "\fB> \fP". .TP \fBPS3\fP Wartość tego parametru służy jako zachęta w poleceniu \fBselect\fP (zobacz powyżej .SM \fBGRAMATYKA POWŁOKI\fP). .TP \fBPS4\fP Wartość tego parametru interpretowana jest jak .SM \fBPS1\fP i wypisywana przed każdym poleceniem wyświetlanym przez \fBbash\fP podczas śledzenia wykonywania. Pierwszy znak .SM \fBPS4\fP, w razie potrzeby, powtarzany jest wielokrotnie, by wskazać wiele poziomów zagnieżdżenia. Domyślnie jest to "\fB+ \fP". .TP \fBSHELL\fP Pełna ścieżka powłoki jest przechowywana w tej zmiennej środowiskowej. Jeśli nie jest ustawiona podczas uruchamiania powłoki, \fBbash\fP przypisuje jej wartość pełnej ścieżki powłoki zgłoszeniowej bieżącego użytkownika. .TP \fBTIMEFORMAT\fP 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 \fBtime\fP. Znak \fB%\fP 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. .sp .5 .RS .PD 0 .TP 10 \fB%%\fP Dosłowny znak \fB%\fP. .TP \fB%[\fP\fIp\fP\fB][l]R\fP Czas, jaki upłynął, w sekundach. .TP \fB%[\fP\fIp\fP\fB][l]U\fP Liczba sekund, jakie CPU zużył w trybie użytkownika. .TP \fB%[\fP\fIp\fP\fB][l]S\fP Liczba sekund, jakie CPU zużył w trybie systemowym. .TP \fB%P\fP Procent wykorzystania CPU, liczony jako (%U + %S) / %R. .PD .RE .IP Opcjonalne \fIp\fP jest cyfrą określającą \fIdokładność\fP (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 \fIp\fP większe od 3 zmieniane są na 3. Jeżeli nie podano \fIp\fP, to używana jest wartość 3. .IP Opcjonalne \fBl\fP określa dłuższy (longer) format wyników, zawierający minuty, w postaci \fIMM\fPm\fISS\fP.\fIFF\fPs. O tym, czy występuje ułamkowa część sekund decyduje wartość \fIp\fP. .IP Jeżeli zmienna ta nie jest ustawiona, to \fBbash\fP działa tak, jakby miała ona wartość \fB$\(aq\enreal\et%3lR\enuser\et%3lU\ensys\et%3lS\(aq\fP. 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. .PD 0 .TP \fBTMOUT\fP Jeśli ustawione na wartość większą od zera, to .SM \fBTMOUT\fP jest interpretowane jako domyślny czas oczekiwania wbudowanego \fBread\fP. Polecenie \fBselect\fP kończy się, jeśli dane nie zostaną wprowadzone po liczbie .SM \fBTMOUT\fP sekund, jeżeli wejście pochodzi z terminala. W przypadku powłok interaktywnych, wartość jest interpretowana jako liczba sekund określającą czas, przez jaki powłoka ma czekać na wprowadzenie wiersza danych po wyświetleniu głównej zachęty. \fBBash\fP kończy pracę po odczekaniu tego czasu jeśli pełen wiersz danych nie pojawił się. .TP \fBTMPDIR\fP Jeśli jest ustawiona, \fBbash\fP używa jej wartości jako nazwy katalogu w którym tworzy pliki tymczasowe do użytku powłoki. .TP \fBauto_resume\fP 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. \fINazwa\fP zatrzymanego zadania, w tym kontekście, jest wierszem poleceń użytym do jego uruchomienia. Jeśli posiada wartość \fIexact\fP, to podany łańcuch musi pasować dokładnie do nazwy zatrzymanego zadania; Jeśli jest ustawione na \fIsubstring\fP, to podany łańcuch powinien pasować do podłańcucha nazwy zatrzymanego zadania. Wartość \fIsubstring\fP zapewnia funkcjonalność analogiczną do identyfikatora zadania \fB%?\fP (zobacz .SM \fBSTEROWANIE ZADANIAMI\fP poniżej). Jeśli ustawiono inną wartość, to podany łańcuch musi być przedrostkiem nazwy zatrzymanego zadania; zapewnia to funkcjonalność analogiczną do identyfikatora zadania \fB%\fP. .TP \fBhistchars\fP Dwa lub trzy znaki sterujące interpretacją historii i podziałem na leksemy (zobacz poniżej .SM \fBINTERPRETACJA HISTORII\fP). Pierwszy znak jest znakiem \fIinterpretacji historii\fP, sygnalizującym początek interpretacji historii, zwykle `\fB!\fP'. Drugi znak jest znakiem \fIszybkiego podstawiania\fP, ("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 `\fB^\fP'. 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 `\fB#\fP'. 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. .PD .SS Tablice \fBBash\fP udostępnia indeksowane i asocjacyjne zmienne tablicowe jednowymiarowe. Jako tablica może zostać użyta dowolna zmienna; wbudowane \fBdeclare\fP jawnie zadeklaruje tablicę. Nie ma maksymalnego rozmiaru tablic, ani wymagania, by wszystkie jej elementy były indeksowane czy przypisywane w sposób ciągły. Do tablic indeksowanych można się odwołać przy pomocy liczb całkowitych (w tym wyrażeń arytmetycznych), począwszy od zera; natomiast tablice asocjacyjne używają konkretnych łańcuchów. Jeśli nie zaznaczono inaczej, indeksy tablic indeksowanych muszą być nieujemnymi liczbami całkowitymi. .PP Tablica indeksowana tworzona jest automatycznie jeśli wykonywane jest przypisanie do jakiejś zmiennej przy pomocy składni \fInazwa\fP[\fIwskaźnik\fP]=\fIwartość\fP. \fIWskaźnik\fP tablicy traktowany jest jako wyrażenie arytmetyczne, które musi po interpretacji dać liczbę. Chcąc jawnie zadeklarować tablicę indeksowaną, użyj \fBdeclare \-a \fP\fInazwa\fP (zobacz .SM \fBWBUDOWANE\fP \fBPOLECENIA\fP \fBPOWŁOKI\fP poniżej). \fBdeclare \-a \fP\fInazwa\fP\fB[\fP\fIwskaźnik\fP\fB]\fP jest również akceptowane; \fIwskaźnik\fP jest wówczas ignorowany. .PP Tablice asocjacyjne są tworzone za pomocą konstrukcji \fBdeclare \-A \fP\fInazwa\fP. .PP Atrybuty mogą być podane do zmiennej tablicy przy użyciu \fBdeclare\fP i \fBreadonly\fP. Każdy z atrybutów stosowany jest do wszystkich elementów tablicy. .PP Przypisania do tablic wykonywane są przy pomocy przypisań złożonych postaci \fInazwa\fP=\fB(\fPwartość\fI1\fP ... wartość\fIn\fP\fB)\fP, gdzie każda \fIwartość\fP ma postać [\fIwskaźnik\fP]=\fIłańcuch\fP. Przypisania tablic indeksowanych nie wymagają niczego oprócz \fIłańcucha\fP. Jeżeli podano opcjonalne nawiasy i wskaźnik, to wartość jest przypisywana wskazanemu elementowi tablicy indeksowanej; w przeciwnym wypadku wartość przypisywana jest elementowi o indeksie o jeden większym od ostatniego elementu z przypisaną wartością. Indeks jest liczony od zera. .PP Przy przypisywaniu do tablicy asocjacyjnej konieczne jest podanie wskaźnika. .PP Składnia ta jest akceptowana także przy poleceniu wbudowanym \fBdeclare\fP. Pojedyncze elementy tablicy można przypisać za pomocą składni \fInazwa\fP[\fIwskaźnik\fP]=\fIwartość\fP wprowadzonej powyżej. Jeśli \fIwskaźnik\fP da po interpretacji liczbę mniejszą od zera, to jest używany jako przesunięcie od maksymalnego indeksu tablicy plus jeden (wskaźnik \-1 odnosi się więc do ostatniego elementu tablicy). .PP Do elementu tablicy można odwoływać się używając ${\fInazwa\fP[\fIwskaźnik\fP]}. Nawiasy są wymagane, by uniknąć konfliktów z rozwijaniem nazw plików. Jeśli \fIwskaźnikiem\fP jest \fB@\fP lub \fB*\fP, to powyższe słowo interpretowane jest jako wszystkie elementy \fInazwy\fP. 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 ${\fInazwa\fP[*]} interpretowane jest jako pojedyncze słowo o wartości wszystkich elementów tablicy rozdzielonych pierwszym znakiem zmiennej specjalnej .SM \fBIFS\fP, zaś ${\fInazwa\fP[@]} interpretuje każdy z elementów \fInazwa\fP jako odrębne słowo. Jeśli brak jest elementów tablicy, to ${\fInazwa\fP[@]} interpretowane jest jako nic. Jeśli wewnątrz słowa zachodzi interpretacja (ujęta w cudzysłowy), to pierwszy zinterpretowany parametr jest łączony z początkiem oryginalnego słowa, a interpretacja ostatniego parametru jest łączona z końcem oryginalnego słowa. Jest to zachowanie analogiczne do interpretacji parametrów specjalnych \fB*\fP i \fB@\fP (zobacz powyżej \fBParametry specjalne\fP). ${#\fInazwa\fP[\fIwskaźnik\fP]} interpretowane jest jako długość ${\fInazwa\fP[\fIwskaźnik\fP]}. Jeśli \fIwskaźnikiem\fP jest \fB*\fP lub \fB@\fP, to interpretacją jest liczba elementów w tablicy. Jeśli \fIwskaźnik\fP da po interpretacji liczbę mniejszą od zera, to jest używany jako przesunięcie od maksymalnego indeksu tablicy plus jeden (wskaźnik \-1 odnosi się więc do ostatniego elementu tablicy). .PP Odwoływanie się do zmiennej tablicowej bez podania wskaźnika jest równoważne odwołaniu do elementu numer zero. Każde odwołanie do zmiennej przy podaniu prawidłowego wskaźnika jest poprawne; \fBbash\fP utworzy tablicę jeśli będzie to konieczne. .PP Zmienna tablicowa jest ustawiona, jeśli do wskaźnika przypisano wartość. Łańcuch pusty jest poprawną wartością. .PP Można pozyskać zarówno Klucze (wskaźniki) tablicy jak i wartości. ${\fB!\fP\fInazwa\fP[\fI@\fP]} i ${\fB!\fP\fInazwa\fP[\fI*\fP]} są interpretowane jako wskaźniki przypisane do zmiennej \fInazwa\fP tablicy. expand to the indices assigned in array variable \fIname\fP. Gdy zastosowany jest cudzysłów, powłoka zachowuje się podobnie jak w przypadku interpretacji specjalnych parametrów \fI@\fP i \fI*\fP w cudzysłowach. .PP Do niszczenia tablic służy wbudowane polecenie \fBunset\fP. \fBunset\fP \fInazwa\fP[\fIwskaźnik\fP] niszczy element tablicy o indeksie \fIwskaźnik\fP. Ujemne wskaźniki tablic indeksowany są interpretowane zgodnie z opisem powyżej. Konieczne jest zachowanie wzmożonej uwagi, aby zapobiec niechcianym skutkom rozwijania nazw plików. Polecenie \fBunset\fP \fInazwa\fP, gdzie \fInazwa\fP jest tablicą, lub \fBunset\fP \fInazwa\fP[\fIwskaźnik\fP], gdzie \fIwskaźnikiem\fP jest \fB*\fP lub \fB@\fP, usuwa całą tablicę. .PP Każde z wbudowanych \fBdeclare\fP, \fBlocal\fP i \fBreadonly\fP akceptuje opcję \fB\-a\fP do określania tablic indeksowanych i opcję \fB\-A\fP do określania tablic asocjacyjnych. Jeśli podano obie opcje, to pierwszeństwo ma \fB\-A\fP. Polecenie \fBread\fP akceptuje opcję \fB\-a\fP do przypisywania tablicy listy słów przeczytanych ze standardowego wejścia. \fBset\fP i \fBdeclare\fP wyświetlają wartości tablicowe w sposób umożliwiający ponowne ich użycie w przypisaniach. .SH INTERPRETACJA Interpretacja wykonywana jest na wierszu poleceń po jego podziale na słowa. Istnieje siedem rodzajów wykonywanych interpretacji: \fIinterpretacja nawiasów\fP (brace expansion), \fIinterpretacja tyld\fP (tilde expansion), \fIpodstawianie parametrów i interpretacja zmiennych\fP (parameter and variable expansion), \fIpodstawienie wyników poleceń\fP (command substitution), \fIinterpretacja wyrażeń arytmetycznych\fP (arithmetic expansion), \fIpodział na słowa\fP (word splitting) i \fIrozwinięcie nazw plików\fP (pathname expansion). .PP Kolejność interpretacji: interpretacja nawiasów, interpretacja tyld, interpretacja parametrów i zmiennych, interpretacja wyrażeń arytmetycznych i podstawianie wyników poleceń (wykonywane od lewej do prawej), podział na słowa i rozwijanie nazw ścieżek. .PP Na systemach potrafiących to obsłużyć, istnieje dodatkowa dostępna interpretacja: \fIpodstawienie wyników procesów\fP (process substitution). Jest to przeprowadzane w tym samym czasie, jak interpretacja tyld, parametrów, zmiennych i wyrażeń\ arytmetycznych oraz poleceń. .PP Po przeprowadzeniu tych interpretacji znaki cytowania obecne w pierwotnym słowie są usuwane, chyba że same zostały zacytowane (\fIusunięcie cytowań\fP). .PP 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 "\fB$@\fP" i "\fB${\fP\fInazwa\fP\fB[@]}\fP" wyjaśnione powyżej (zobacz .SM \fBPARAMETRY\fP). .SS "Interpretacja nawiasów" .PP \fIInterpretacja nawiasów\fP jest mechanizmem, przez który mogą być generowane dowolne łańcuchy. Mechanizm ten przypomina \fIrozwinięcia nazw plików\fP, ale generowane nazwy plików nie muszą określać plików istniejących. Wzorce, mające podlegać interpretacji nawiasów mają postać opcjonalnej \fIpreambuły\fP, po której występują serie separowanych przecinkami łańcuchów pomiędzy parą nawiasów klamrowych, po których następuje opcjonalny \fIdopisek\fP (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. .PP 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\fB{\fPd,c,b\fB}\fPe interpretowane jest jako "ade ace abe". .PP Sekwencja wyrażeń przyjmuje postać \fB{\fP\fIx\fP\fB..\fP\fIy\fP\fB[..\fP\fIkrok\fP\fB]}\fP, gdzie \fIx\fP i \fIy\fP są albo liczbami całkowitymi, albo pojedynczymi znakami, a opcjonalny \fIkrok\fP jest liczbą całkowitą. Gdy podane są liczby całkowite, to wyrażenie jest rozwijane do wszystkich liczb pomiędzy \fIx\fP i \fIy\fP (włącznie). Podane liczby mogą być poprzedzone \fI0\fP, które wymusza identyczną szerokość każdej z wynikowych liczb. Gdy \fIx\fP lub \fIy\fP zaczynają się zerem, to powłoka próbuje wymusić utworzenie liczb zawierających tę samą liczbę cyfr, uzupełniając je zerami tam, gdzie zachodzi taka potrzeba. Gdy podano znaki, wyrażenie jest rozwijane do wszystkich znaków, znajdujących się leksykalnie (w domyślnych locale C) pomiędzy \fIx\fP a \fIy\fP (włącznie). Proszę odnotować, że \fIx\fP i \fIy\fP muszą być tego samego typu. Gdy podano krok, to jest on używany jako różnica pomiędzy poszczególnymi wynikami. W zależności od podanych wartości, domyślnym krokiem jest 1 lub \-1. .PP 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. \fBBash\fP nie stosuje żadnej interpretacji składniowej do kontekstu interpretacji czy tekstu pomiędzy nawiasami. .PP 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. \fB{\fP lub \fB,\fP 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 \fB${\fP nie jest traktowany jako spełniający warunki interpretacji nawiasów. .PP 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.: .RS .PP mkdir /usr/local/src/bash/{old,new,dist,bugs} .RE lub .RS chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}} .RE .PP Interpretacja nawiasów wprowadza niewielką niezgodność z historycznymi wersjami \fBsh\fP. \fBsh\fP 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 \fBbash\fP konsekwencją interpretacji nawiasów jest usuwanie nawiasów ze słów. Na przykład, słowo wprowadzone do \fBsh\fP jako \fIplik{1,2}\fP pojawi się w identycznej postaci na wyjściu. To samo słowo po interpretacji przez \fBbash\fP daje \fIplik1 plik2\fP. Jeżeli pożądana jest ścisła zgodność z \fBsh\fP, uruchom \fBbash\fP z opcją \fB+B\fP lub wyłącz interpretację nawiasów przy pomocy opcji \fB+B\fP polecenia \fBset\fP (zobacz .SM \fBWBUDOWANE\fP \fBPOLECENIA\fP \fBPOWŁOKI\fP poniżej). .SS "Interpretacja tyldy" .PP Jeżeli słowo rozpoczyna się niecytowanym znakiem tyldy (`\fB~\fP'), to wszystkie znaki poprzedzające pierwszy niecytowany ukośnik (lub wszystkie znaki, gdy nie ma ukośnika) uważane są za \fIprzedrostek tyldy\fP (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 \fInazwa logowania\fP (login name). Jeśli ta nazwa logowania jest łańcuchem pustym, to tylda zastępowana jest wartością parametru powłoki .SM \fBHOME\fP. Jeżeli .SM \fBHOME\fP 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. .PP Jeśli przedrostkiem tyldy jest `~+', to jest on zastępowany wartością zmiennej .SM \fBPWD\fPpowłoki. Jeśli przedrostkiem tyldy jest `~\-', to jest on zastępowany wartością zmiennej powłoki .SM \fBOLDPWD\fP, jeśli jest ona ustawiona. Jeżeli występujące w przedrostku po tyldzie znaki składają się z liczby \fIN\fP, opcjonalnie poprzedzonej przez `+' lub `\-', to przedrostek tyldy zastępowany jest odpowiednim elementem stosu katalogów, jaki zostałby wyświetlony przez wbudowane \fBdirs\fP, 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 `+'. .PP Jeśli nazwa logowania jest nieprawidłowa lub interpretacja tyldy nie powiodła się, to słowo z tyldą pozostaje niezmienione. .PP Każde z przypisań do zmiennej sprawdzane jest na obecność niecytowanych przedrostków tyldy występujących bezpośrednio po \fB:\fP lub \fB=\fP. 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 .SM \fBPATH\fP, .SM \fBMAILPATH\fP i .SM \fBCDPATH\fP, a powłoka przypisze zinterpretowaną wartość. .SS "Podstawianie parametrów" .PP Znak `\fB$\fP' 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. .PP Gdy używane są nawiasy, pasującym nawiasem kończącym jest pierwszy `\fB}\fP', nie chroniony przez odwrotny ukośnik, nie znajdujący się wewnątrz cytowanego łańcucha ani nie osadzony w wyrażeniu arytmetycznym, podstawieniu wyniku polecenia czy podstawieniu parametru. .PP .PD 0 .TP ${\fIparametr\fP} Podstawiana jest wartość \fIparametru\fP. Nawiasy wymagane są gdy \fIparametr\fP jest parametrem pozycyjnym o więcej niż jednej cyfrze, lub gdy po \fIparametrze\fP występuje znak, który nie powinien być interpretowany jako część jego nazwy. \fIParametr\fP jest parametrem powłoki opisanych powyżej \fBPARAMETRY\fP lub odniesieniem do tablicy (\fBTablice\fP). .PD .PP Jeżeli pierwszym znakiem \fIparametru\fP jest wykrzyknik i \fIparametr\fP nie jest \fInazwą referencyjną\fP, to rozpoczyna on poziom zagnieżdżenia zmiennej pośredniej. \fBBash\fP posługuje się wartością zmiennej utworzonej z reszty \fIparametru\fP jako nazwą zmiennej; zmienna ta jest następnie interpretowana a w dalszym podstawianiu używana jest otrzymana wartość zamiast wartości samego \fIparametru\fP. Znane jest to jako \fIinterpretacja pośrednia\fP (indirect expansion). Jeśli \fIparametrem\fP jest nazwa referencyjna, to jest to interpretowane jako nazwa zmiennej do której odnosi się \fIparametr\fP, zamiast dokonywania pełnej interpretacji pośredniej. Wyjątkami są interpretacja ${\fB!\fP\fIprzedrostek\fP\fB*\fP} i ${\fB!\fP\fInazwa\fP[\fI@\fP]} opisane poniżej. Aby wprowadzić interpretację pośrednią, wykrzyknik musi występować bezpośrednio po lewym nawiasie klamrowym. .PP W każdym z poniższych przypadków, \fIsłowo\fP podlega interpretacji tyldy, podstawianiu parametrów, podstawianiu wyników poleceń i interpretacji wyrażeń arytmetycznych. .PP Gdy nie przeprowadza interpretacji podłańcuchów, za pomocą opisanych poniżej formuł (np. \fB:\-\fP) \fBbash\fP sprawdza czy parametr nie jest pusty lub nieustawiony. Pominięcie dwukropka skutkuje sprawdzeniem jedynie tego, czy parametr nie jest nieustawiony. .PP .PD 0 .TP ${\fIparametr\fP\fB:\-\fP\fIsłowo\fP} \fBUżywa wartości domyślnych\fP. Jeżeli \fIparametr\fP jest nieustawiony lub pusty, to podstawiane jest zinterpretowane \fIsłowo\fP. W przeciwnym razie, podstawiana jest wartość \fIparametru\fP. .TP ${\fIparametr\fP\fB:=\fP\fIsłowo\fP} \fBPrzypisuje wartości domyślne\fP. Jeżeli \fIparametr\fP jest nieustawiony lub pusty, to jest mu przypisywane zinterpretowane \fIsłowo\fP. Następnie podstawiana jest wartość \fIparametru\fP. Nie można w ten sposób przypisywać wartości parametrom pozycyjnym ani parametrom specjalnym. .TP ${\fIparametr\fP\fB:?\fP\fIsłowo\fP} \fBWyświetla błąd jeśli pusty lub nieustawiony\fP. Jeżeli \fIparametr\fP jest nieustawiony lub pusty, to na standardowe wyjście błędów zapisywane jest zinterpretowane \fIsłowo\fP (lub komunikat o takim wyniku, jeśli brak \fIsłowa\fP). Jeśli powłoka nie jest interaktywna, to kończy pracę. W przeciwnym wypadku, podstawiana jest wartość \fIparametru\fP. .TP ${\fIparametr\fP\fB:+\fP\fIsłowo\fP} \fBUżywa wartości alternatywnej\fP. Jeżeli \fIparametr\fP jest nieustawiony lub pusty, to nic nie jest podstawiane, w przeciwnym razie podstawiane jest zinterpretowane \fIsłowo\fP. .TP ${\fIparametr\fP\fB:\fP\fIprzesunięcie\fP} .PD 0 .TP ${\fIparametr\fP\fB:\fP\fIprzesunięcie\fP\fB:\fP\fIdługość\fP} .PD \fBInterpretacja podłańcuchów\fP. Interpretuje do \fIdługości\fP znaków wartości \fIparametru\fP, poczynając od znaku określonego \fIprzesunięciem\fP. Jeśli \fIparametrem\fP jest \fB@\fP, tablica indeksowana ze wskaźnikiem \fB@\fP lub \fB*\fP lub nazwa tablicy asocjacyjnej, wynik różni się, zgodnie z poniższym opisem. Jeśli nie poda się \fIdługości\fP, to interpretuje podłańcuch wartości \fIparametru\fP poczynając od znaku określonego \fIprzesunięciem\fP i kończąc z końcem wartości. \fIDługość\fP i \fIprzesunięcie\fP są wyrażeniami arytmetycznymi (zob. .SM \fBOBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH\fP poniżej). .sp 1 Jeśli \fIprzesunięcie\fP wyniesie mniej niż zero, wartość jest używana jako przesunięcie w znakach od końca wartości \fIparametru\fP. Jeśli \fIdługość\fP wyniesie mniej niż zero, jest interpretowana jako przesunięcie w znakach od końca wartości \fIparametru\fP, a nie jako liczba znaków, a interpretacja będzie dotyczyć znaków pomiędzy \fIprzesunięciem\fP i tym wynikiem. Proszę zauważyć, że ujemne przesunięcie musi być oddzielone od dwukropka przynajmniej jedną spacją aby zapobiec pomyleniu z wyrażeniem \fB:\-\fP. .sp 1 Jeśli \fIparametrem\fP jest \fB@\fP, to wynikiem jest \fIdługość\fP parametrów pozycyjnych poczynając od \fIprzesunięcia\fP. Ujemne \fIprzesunięcie\fP jest liczone w odniesieniu do parametru o jeden więcej niż największy parametr pozycyjny, więc przesunięcie \-1 jest interpretowane jako ostatni parametr pozycyjny. Jeśli \fIdługość\fP będzie mniejsza od zera wystąpi błąd interpretacji. .sp 1 Jeśli \fIparametr\fP jest nazwą tablicy indeksowanej z wskaźnikiem @ lub *, to wynikiem jest \fIdługość\fP elementów tablicy poczynając od ${\fIparametr\fP[\fIprzesunięcie\fP]}. Jeśli \fIwskaźnik\fP da po interpretacji liczbę mniejszą od zera, to jest używany jako przesunięcie od maksymalnego indeksu tablicy plus jeden. Jeśli \fIdługość\fP będzie mniejsza od zera wystąpi błąd interpretacji. .sp 1 Interpretacja podłańcucha zastosowana do tablicy asocjacyjnej da w wyniku niezdefiniowany rezultat. .sp 1 Indeksowanie podłańcuchów zaczyna się od zera, chyba że używane są parametry pozycyjne, wówczas indeksy liczy się domyślnie od 1. Jeśli \fIprzesunięcie\fP wyniesie 0 i użyje się parametrów pozycyjnych, do listy włącza się na początku \fB$0\fP. .TP ${\fB!\fP\fIprzedrostek\fP\fB*\fP} .PD 0 .TP ${\fB!\fP\fIprzedrostek\fP\fB@\fP} .PD \fBNazywa pasujący przedrostek\fP. Rozwija się w listę nazw tych zmiennych, których nazwy rozpoczynają się od \fIprzedrostka\fP, rozdzielonych od siebie pierwszym znakiem zmiennej specjalnej .SM \fBIFS\fP. Jeśli używane jest \fI@\fP, a interpretacja jest ujęta w cudzysłowy, to każda nazwa zmiennej jest interpretowana jako oddzielne słowo. .TP ${\fB!\fP\fInazwa\fP[\fI@\fP]} .PD 0 .TP ${\fB!\fP\fInazwa\fP[\fI*\fP]} .PD \fBLista kluczy z tablicy\fP. Jeśli \fInazwa\fP jest zmienną tablicową, jest rozwijana do listy wskaźników (kluczy) tablicowych przypisanych do \fInazwy\fP. Jeśli \fInazwa\fP nie jest tablicą, interpretowana jest do 0, jeśli \fInazwa\fP jest ustawiona lub pozostaje pusta w przeciwnym wypadku. Gdy używane jest \fI!\fP, a interpretacja jest ujęta w cudzysłowy, każdy klucz jest rozwijany do oddzielnego słowa. .TP ${\fB#\fP\fIparametr\fP} \fBDługość parametru\fP. Podstawiana jest długość, w znakach, wartości \fIparametru\fP. Jeżeli \fIparametrem\fP jest \fB*\fP lub \fB@\fP, wartość podstawiana jest liczbą parametrów pozycyjnych. Jeżeli \fIparametr\fP jest nazwą tablicy o indeksowanej przez \fB*\fP lub \fB@\fP, wartość podstawiana jest liczbą elementów tablicy. .TP ${\fIparametr\fP\fB#\fP\fIsłowo\fP} .PD 0 .TP ${\fIparametr\fP\fB##\fP\fIsłowo\fP} .PD \fBUsuwanie pasującego wzorca przedrostka\fP. \fISłowo\fP jest interpretowane tworząc wzorzec, tak samo jak przy rozwijaniu nazw plików. Jeżeli wzorzec pasuje do początku wartości \fIparametru\fP, to wynikiem interpretacji jest zinterpretowana wartość \fIparametru\fP z usuniętym najkrótszym (przypadek ,,\fB#\fP\*(rq) lub najdłuższym (przypadek ,,\fB##\fP\*(rq) pasującym wzorcem. Jeżeli \fIparametrem\fP jest \fB@\fP lub \fB*\fP, to operacja usunięcia wzorca stosowana jest do każdego po kolei parametru pozycyjnego, zaś wynikiem interpretacji jest powstała lista. Jeśli \fIparametr\fP jest zmienną tablicową indeksowaną przez \fB@\fP lub \fB*\fP, to operacja usuwania wzorca jest przeprowadzana po kolei na każdym elemencie tablicy, zaś wynikiem interpretacji jest powstała lista. .TP ${\fIparametr\fP\fB%\fP\fIsłowo\fP} .PD 0 .TP ${\fIparametr\fP\fB%%\fP\fIsłowo\fP} .PD \fBUsuwanie pasującego wzorca przyrostka\fP. \fISłowo\fP jest interpretowane tworząc wzorzec, tak samo jak przy rozwijaniu nazw plików. Jeżeli wzorzec pasuje do końcowej części zinterpretowanego \fIparametru\fP, wynikiem interpretacji jest zinterpretowana wartość \fIparametru\fP z usuniętym najkrótszym (przypadek ,,\fB%\fP\*(rq) lub najdłuższym (przypadek ,,\fB%%\fP\*(rq) pasującym wzorcem. Jeżeli \fIparametrem\fP jest \fB@\fP lub \fB*\fP, to operacja usunięcia wzorca stosowana jest do każdego po kolei parametru pozycyjnego, zaś wynikiem interpretacji jest powstała lista. Jeśli \fIparametr\fP jest zmienną tablicową indeksowaną przez \fB@\fP lub \fB*\fP, operacja usuwania wzorca jest przeprowadzana po kolei na każdym elemencie tablicy, zaś wynikiem interpretacji jest powstała lista. .TP ${\fIparametr\fP\fB/\fP\fIwzorzec\fP\fB/\fP\fIłańcuch\fP} \fBZastępowanie wzorca\fP. \fIWzorzec\fP jest interpretowany w identyczny sposób jak to ma miejsce przy rozwijaniu nazw plików. \fIParametr\fP jest rozwijany, a najdłuższe dopasowanie \fIwzorca\fP do jego wartości jest zastępowane \fIłańcuchem\fP. Jeśli \fIwzorzec\fP rozpoczyna się \fB/\fP, to wszystkie dopasowania \fIwzorca\fP są zastępowane \fIłańcuchem\fP. Normalnie, zastępowane jest tylko pierwsze dopasowanie. Jeśli \fIwzorzec\fP rozpoczyna się \fB#\fP, to musi pasować do początku zinterpretowanej wartości \fIparametru\fP. Jeśli zaczyna się \fB%\fP, musi natomiast pasować do końca tej wartości. Jeśli \fIłańcuch\fP jest pusty, wszystkie dopasowania \fIwzorca\fP są usuwane, a początkowy \fB/\fP \fIwzorca\fP może zostać pominięty. Jeśli włączona jest opcja powłoki \fBnocasematch\fP, to dopasowanie jest wykonywane bez uwzględniania wielkości liter. Jeśli \fIparametrem\fP jest \fB@\fP lub \fB*\fP, to operacja podstawiania jest przeprowadzana na każdym parametrze pozycyjnym z kolei, a zinterpretowanym wynikiem jest powstała lista. Jeśli \fIparametr\fP jest zmienną tablicową, w której jako indeks podano \fB@\fP lub \fB*\fP, to operacja podstawiania jest przeprowadzana na każdym jej wpisie po kolei, a zinterpretowanym wynikiem jest powstała lista. .TP ${\fIparametr\fP\fB^\fP\fIwzorzec\fP} .PD 0 .TP ${\fIparametr\fP\fB^^\fP\fIwzorzec\fP} .TP ${\fIparametr\fP\fB,\fP\fIwzorzec\fP} .TP ${\fIparametr\fP\fB,,\fP\fIwzorzec\fP} .PD \fBModyfikacja wielkości znaków\fP. Ta interpretacja modyfikuje wielkość zawartych liter zgodnie z \fIparametrem\fP. \fIWzorzec\fP jest interpretowany w taki sposób, jak czyni to rozwijanie nazw plików. Każdy znak w interpretowanej wartości \fIparametru\fP jest sprawdzany ze \fIwzorcem\fP i jeśli do niego pasuje, wielkość litery jest zmieniana. Wzorzec nie powinien dopasowywać więcej niż jednego znaku. Operator \fB^\fP konwertuje małe litery pasujące do \fIwzorca\fP na wielkie, operator \fB,\fP działa odwrotnie. \fB^^\fP i \fB,,\fP konwertują każdy dopasowany znak interpretowanej wartości, natomiast \fB^\fP i \fB,\fP konwertują jedynie jej pierwszy znak. Jeśli nie podano \fIwzorca\fP, to przyjmuje się za niego \fB?\fP, co powoduje dopasowanie każdego znaku. Jeśli \fIparametrem\fP jest \fB@\fP lub \fB*\fP, to operacja podstawiania stosowana jest do każdego po kolei parametru pozycyjnego, zaś wynikiem interpretacji jest powstała lista. Jeśli \fIparametr\fP jest zmienną tablicową indeksowaną przez \fB@\fP lub \fB*\fP, operacja podstawiania jest przeprowadzana po kolei na każdym elemencie tablicy, zaś wynikiem interpretacji jest powstała lista. .TP ${\fIparametr\fP\fB@\fP\fIoperator\fP} \fBPrzekształcenie parametrów\fP. Ta interpretacja jest albo przekształceniem wartości \fIparametrów\fP, albo informacji o samych \fIparametrach\fP, w zależności od wartości \fIoperatora\fP. Każdy \fIoperator\fP jest pojedynczą literą: .sp 1 .RS .PD 0 .TP \fBQ\fP Interpretacją\ jest łańcuch będący wartością \fIparametru\fP cytowany w formacie, jaki może być ponownie wykorzystany jako wejście powłoki. .TP \fBE\fP Interpretacją jest łańcuch będący wartością \fIparametru\fP z sekwencjami ucieczki z ukośnikiem cytowanych za pomocą mechanizmu \fB$'\fP\fI...\fP\fB'\fP. .TP \fBP\fP Interpretacją\ jest łańcuch będący wartością \fIparametru\fP taką, jaką byłby jako łańcuch zachęty (zob. poniżej \fBZACHĘTA\fP). .TP \fBA\fP Interpretacją\ jest łańcuch w postaci z jaką instrukcja przypisania lub polecenie \fBdeclare\fP przy interpretacji odtworzyła by \fIparametr\fP z jego atrybutami i wartością. .TP \fBa\fP Interpretacją\ jest łańcuch składający się z wartości flag reprezentujących atrybuty \fIparametru\fP. .PD .PP Jeżeli \fIparametrem\fP jest \fB@\fP lub \fB*\fP, to operacja stosowana jest do każdego po kolei parametru pozycyjnego, zaś wynikiem interpretacji jest powstała lista. Jeśli \fIparametr\fP jest zmienną tablicową indeksowaną przez \fB@\fP lub \fB*\fP, to operacja modyfikacji wielkości znaków jest przeprowadzana po kolei na każdym elemencie tablicy, zaś wynikiem interpretacji jest powstała lista. .sp 1 Na wyniku interpretacji jest przeprowadzany podział na słowa oraz rozwinięcie nazw plików zgodnie z opisem poniżej. .RE .SS "Podstawianie wyników poleceń" .PP \fIPodstawianie wyników poleceń\fP (command substitution) pozwala na zastępowanie nazwy polecenia wyjściem (wynikiem) z jego działania. Posiada dwie postaci: .RS .PP \fB$(\fP\fIpolecenie\fP\|\fB)\fP .RE lub .RS \fB\`\fP\fIpolecenie\fP\fB\`\fP .RE .PP \fBBash\fP wykonuje interpretację wykonując \fIpolecenie\fP w środowisku podpowłoki 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 mogą być usunięte podczas podziału na słowa. Podstawienie wyniku polecenia \fB$(cat \fP\fIplik\fP\fB)\fP można zastąpić równoważnym, ale szybszym \fB$(< \fP\fIplik\fP\fB)\fP. .PP 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 jest poprzedzony przez \fB$\fP, \fB`\fP lub \fB\e\fP. Pierwszy odwrotny apostrof (`) nie poprzedzony odwrotnym ukośnikiem kończy podstawianie wyniku polecenia. Podczas posługiwania się postacią $(\^\fIpolecenie\fP\|), polecenie tworzą wszystkie znaki pomiędzy nawiasami; żaden nie jest traktowany specjalnie. .PP 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. .PP 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. .SS "Interpretacja wyrażeń arytmetycznych" .PP Interpretacja wyrażeń arytmetycznych pozwala na obliczanie wyrażeń arytmetycznych i podstawianie wyniku. Format interpretacji arytmetycznej: .RS .PP \fB$((\fP\fIwyrażenie\fP\fB))\fP .RE .PP Stary format \fB$[\fP\fIwyrażenie\fP\fB]\fP jest przestarzały i zostanie usunięty w przyszłych wersjach basha. .PP \fIwyrażenie\fP 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 i zmiennych, podstawianiu wyników poleceń i usuwaniu cudzysłowów. Wynik jest traktowany jako wyrażenie arytmetyczne do obliczenia. Wyrażenia arytmetyczne mogą być zagnieżdżane. .PP Interpretacja przeprowadzana jest zgodnie z zasadami podanymi poniżej w sekcji .SM \fBOBLICZENIA ARYTMETYCZNE\fP. Jeżeli \fIwyrażenie\fP jest nieprawidłowe, \fBbash\fP wypisuje komunikat o niepowodzeniu i nie występuje żadne podstawienie. .SS "Podstawianie wyników procesów (Process substitution)" .PP \fIPodstawianie wyników procesów\fP pozwala na odnoszenie się do wejścia lub wyjścia procesu za pomocą\ nazwy pliku. Przybiera ono postać \fB<(\fP\fIlista\^\fP\fB)\fP lub \fB>(\fP\fIlista\^\fP\fB)\fP. Proces \fIlista\fP uruchamiany asynchronicznie, a jego wejście i wyjście pojawia się jako nazwa pliku. W wyniku interpretacji nazwa tego pliku przesyłana jest jako argument bieżącego polecenia. Jeżeli posłużono się postacią \fB>(\fP\fIlista\^\fP\fB)\fP, zapis do pliku będzie stanowić wejście dla \fIlisty\fP. Jeżeli posłużono się postacią \fB<(\fP\fIlista\^\fP\fB)\fP, plik przekazany jako argument powinien zostać odczytany w celu uzyskania wyjścia \fIlisty\fP. Podstawianie wyników procesów jest obsługiwane w systemach wspierających potoki nazwane (\fIFIFO\fP) lub metodę nazywania otwartych plików \fB/dev/fd\fP. .PP 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. .SS "Podział na słowa" .PP 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 \fIpodziału na słowa\fP. .PP Powłoka traktuje każdy znak .SM \fBIFS\fP jak separator i dzieli na słowa wyniki innych interpretacji, używając ich jako separatorów pól. Jeżeli .SM \fBIFS\fP nie jest ustawione lub jego wartością jest dokładnie \fB\fP, wartość domyślna, to sekwencje składające się ze \fB\fP, \fB\fP i \fB\fP na początku i końcu wyników poprzednich interpretacji są ignorowane, a do podziału na słowa służy dowolna sekwencja znaków .SM \fBIFS\fP, jeżeli nie znajduje się na początku lub końcu. Jeżeli .SM \fBIFS\fP posiada wartość inną niż domyślna, to sekwencje białych znaków \fBspacji\fP i \fBtabulacji\fP i \fIznaku nowego wiersza\fP są ignorowane na początku i końcu słowa, dopóki biały znak występuje w wartości .SM \fBIFS\fP (biały znak .SM \fBIFS\fP). Inne znaki w .SM \fBIFS\fP nie będące białymi znakami .SM \fBIFS\fP, łącznie z dowolnymi przyległymi białymi znakami .SM \fBIFS\fP, ograniczają pole. Sekwencja białych znaków .SM \fBIFS\fP jest również traktowana jako ogranicznik. Jeśli .SM \fBIFS\fP jest łańcuchem pustym, to nie występuje podział na słowa. .PP Jawnie puste argumenty (\^\fB"\^"\fP lub \^\fB'\^'\fP\^) są pozostawiane i przekazywane do poleceń jako łańcuchy puste. 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 i przekazywany do poleceń jako łańcuchy puste. Gdy cytowany pusty argument pojawi się jako część słowa, którego interpretacja jest niepusta, pusty argument jest usuwany tj. słowo \f(CW\-d\(aq\^\(aq\fP staje się \f(CW\-d\fP po przeprowadzeniu podziału na słowa i usunięciu pustych argumentów. .PP Zauważ, że jeśli nie występuje interpretacja, to nie jest również wykonywany podział. .SS "Rozwijanie nazw plików (Pathname Expansion)" .PP Po podziale na słowa, jeżeli nie ustawiona została opcja \fB\-f\fP, przegląda każde słowo w poszukiwaniu znaków \fB*\fP, \fB?\fP i \fB[\fP. Jeśli pojawia się jeden z nich, to słowo uważane jest za \fIwzorzec\fP i zastępowane jest posortowaną alfabetycznie listą nazw plików pasujących do wzorca (zob. .SM \fBDopasowanie wzorca\fP. Jeżeli nie znaleziono pasujących nazw a wyłączona jest opcja \fBnullglob\fP powłoki, słowo pozostawiane jest bez zmian. Jeżeli \fBnullglob\fP jest włączone, a nie znaleziono dopasowań, to słowo jest usuwane. Jeśli ustawiona jest opcja \fBfailglob\fP powłoki i nie znaleziono dopasowań, to wyświetlany jest komunikat o błędzie, a polecenie nie jest wykonywane. Jeżeli włączona jest opcja \fBnocaseglob\fP powłoki, to dopasowywanie wzorca wykonywane jest bez zwracania uwagi na wielkość liter. Proszę zwrócić uwagę, ze gdy użyte są wyrażenia zakresowe, takie jak [a\-z] (patrz niżej), mogą również zostać uwzględnione litery innej wielkości, w zależności od ustawienia \fBLC_COLLATE\fP. Gdy do rozwinięcia nazw plików używa się wzorca, to znak "\fB.\fP" na początku nazwy lub bezpośrednio po ukośniku musi zostać dopasowany dosłownie, chyba że ustawiono opcję \fBdotglob\fP powłoki. Podczas dopasowywania nazwy pliku znak ukośnika musi zawsze zostać dopasowany dosłownie. W pozostałych przypadkach, kropka "\fB.\fP nie jest traktowana specjalnie. Zobacz poniżej opis \fBshopt\fP w sekcji .SM \fBWBUDOWANE\fP \fBPOLECENIA\fP \fBPOWŁOKI\fP, gdzie znajdziesz omówienie opcji powłoki \fBnocaseglob\fP, \fBnullglob\fP, \fBfailglob\fP i \fBdotglob\fP. .PP Do ograniczenia zestawu nazw plików pasujących do \fIwzorca\fP można wykorzystać zmienną powłoki .SM \fBGLOBIGNORE\fP. Jeżeli .SM \fBGLOBIGNORE\fP jest ustawione, każda z pasujących nazw plików pasująca również do jednego ze wzorców w .SM \fBGLOBIGNORE\fP jest usuwana z listy dopasowań. Jeśli ustawiona jest opcja \fBnocaseglob\fP, to dopasowanie do wzorców w .SM \fBGLOBIGNORE\fP jest dokonywane bez względu na wielkość znaków. Nazwy plików "\fB.\fP" i "\fB..\fP" są zawsze ignorowane, nawet gdy .SM \fBGLOBIGNORE\fP jest ustawione. Jednakże, ustawienie .SM \fBGLOBIGNORE\fP skutkuje włączeniem opcji \fBdotglob\fP, 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ę "\fB.\fP", jednym ze wzorców w .SM \fBGLOBIGNORE\fP należy zrobić "\fB.*\fP". Opcja \fBdotglob\fP jest wyłączana, gdy kasowane jest .SM \fBGLOBIGNORE\fP. Dopasowanie wzorców honoruje ustawienia opcji powłoki \fBextglob\fP. .PP \fBDopasowanie wzorca\fP .PP Każdy znak pojawiający się we wzorcu, różny od specjalnych znaków wzorca opisanych poniżej, dopasowuje sam siebie. Znak NUL nie może wystąpić we wzorcu. Odwrotny ukośnik cytuje następujący po nim znak; sam ukośnik jest pomijany podczas dopasowania. Specjalne znaki wzorca muszą być cytowane, jeżeli mają być dopasowane dosłownie. .PP Specjalne znaki wzorca mają następujące znaczenie: .PP .PD 0 .RS .TP \fB*\fP Dopasowuje dowolny łańcuch, łącznie z łańcuchem pustym. Jeśli włączona jest opcja \fBglobstar\fP powłoki, a \fB*\fP jest użyte w kontekście rozwijania nazw plików, to dwa złączone znaki \fB*\fP użyte w pojedynczym wzorcu dopasują wszystkie pliki wraz z zerem lub więcej katalogów i podkatalogów. Jeśli po dwóch gwiazdkach \fB*\fP wystąpi ukośnik \fB/\fP, to dopasowane będą wyłącznie katalogi i podkatalogi. .TP \fB?\fP Dopasowuje dowolny pojedynczy znak. .TP \fB[...]\fP Dopasowuje jeden z ujętych w nawiasy kwadratowe znaków. Para znaków rozdzielona myślnikiem opisuje \fIwyrażenie zakresu\fP; 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 \fB[\fP jest \fB!\fP lub \fB^\fP, 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 \fBLC_COLLATE\fP, jeśli istnieje. Znak \fB\-\fP można dopasować włączając go jako pierwszy lub ostatni ze znaków zestawu. Znak \fB]\fP można dopasować włączając go jako pierwszy znak zestawu. .br .if t .sp 0.5 .if n .sp 1 Wewnątrz \fB[\fP i \fB]\fP, można podawać \fIklasy znaków\fP (character classes), używając składni \fB[:\fP\fIklasa\fP\fB:]\fP, gdzie \fIklasa\fP jest jedną z poniższych klas zdefiniowanych w standardzie POSIX: .PP .RS .if n \fBalnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit\fP .if t \fBalnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigit\fP .br Klasa znaków dopasowuje dowolny znak należący do tej klasy. Klasa znaków \fBword\fP dopasowuje litery, cyfry i znak podkreślenia "_". .br .if t .sp 0.5 .if n .sp 1 Wewnątrz \fB[\fP i \fB]\fP, można podać \fIklasę równoważności\fP, używając składni \fB[=\fP\fIz\fP\fB=]\fP, która dopasowuje wszystkie znaki o tej samej wadze sortowania (zdefiniowaną w bieżącym ustawieniu locale) co znak \fIz\fP. .br .if t .sp 0.5 .if n .sp 1 Wewnątrz \fB[\fP i \fB]\fP, składnia \fB[.\fP\fIsymbol\fP\fB.]\fP dopasowuje symbol sortowania (collating symbol) \fIsymbol\fP. .RE .RE .PD .PP Jeżeli przy pomocy wbudowanego \fBshopt\fP włączono opcję \fBextglob\fP, to rozpoznawane jest kilka rozszerzonych operatorów dopasowania wzorców. W poniższym opisie, \fIlista\-wzorców\fP jest listą złożoną z jednego lub więcej wzorców rozdzielonych znakiem \fB|\fP. Wzorce złożone można konstruować przy pomocy jednego lub więcej poniższych pod\-wzorców: .sp 1 .PD 0 .RS .TP \fB?(\fP\^\fIlista\-wzorców\^\fP\fB)\fP Dopasowuje zero lub jedno wystąpienie zadanych wzorców .TP \fB*(\fP\^\fIlista\-wzorców\^\fP\fB)\fP Dopasowuje zero lub więcej wystąpień zadanych wzorców .TP \fB+(\fP\^\fIlista\-wzorców\^\fP\fB)\fP Dopasowuje jedno lub więcej wystąpień zadanych wzorców .TP \fB@(\fP\^\fIlista\-wzorców\^\fP\fB)\fP Dopasowuje jeden z zadanych wzorców .TP \fB!(\fP\^\fIlista\-wzorców\^\fP\fB)\fP Dopasowuje cokolwiek prócz jednego z zadanych wzorców .RE .PD .SS "Usunięcie cytowań" .PP Po poprzednich interpretacjach, wszystkie niecytowane wystąpienia znaków \fB\e\fP, \fB\(aq\fP i \^\fB"\fP\^, które nie wynikły z jednej z powyższych interpretacji, są usuwane. .SH PRZEKIEROWANIE Przed wykonaniem polecenia, jego wejście i wyjście mogą zostać \fIprzekierowane\fP przy pomocy specjalnej notacji interpretowanej przez powłokę. Przekierowania pozwalają deskryptorom plików poleceń na powielanie, otwieranie, zamykanie, tworzenie odniesień do różnych plików oraz mogą zmieniać pliki, które odczytuje polecenie i do którego pisze. Przekierowań można też używać do modyfikowania deskryptorów plików w środowiska wykonywania bieżącej powłoki. Poniższe operatory przekierowania mogą występować przed lub pojawiać się gdziekolwiek wewnątrz \fIpolecenia prostego\fP lub występować po \fIpoleceniu\fP. Przekierowania przetwarzane są w kolejności występowania, od lewej do prawej. .PP Każde przekierowanie, które może być poprzedzone numerem deskryptora pliku, może być w zamian poprzedzone słowem zapisanym następująco: {\fInazwa\-zmiennej\fP}. W takim przypadku, dla każdego operatora przekierowania, z wyjątkiem >&\- i <&\-, powłoka nada deskryptor pliku większy lub równy 10 i przypisze go do \fInazwy\-zmiennej\fP. Jeśli >&\- lub <&\- jest poprzedzone {\fInazwą\-zmiennej\fP}, to wartość \fInazwy\-zmiennej\fP definiuje deskryptor pliku przeznaczony do zamknięcia. .PP W poniższych opisach, jeśli pominięto deskryptor pliku, a pierwszym znakiem operatora przekierowania jest \fB<\fP, przekierowanie dotyczy standardowego wejścia (deskryptor pliku 0). Jeżeli pierwszym znakiem operatora przekierowania jest \fB>\fP, przekierowanie dotyczy standardowego wyjścia (deskryptor pliku 1). .PP 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 i zmiennych, 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 \fBbash\fP zgłosi błąd. .PP Zauważ, że kolejność przekierowań jest znacząca. Na przykład, polecenie .RS .PP ls \fB>\fP dirlist 2\fB>&\fP1 .RE .PP kieruje zarówno standardowe wyjście jak i wyjście diagnostyczne (stderr) do pliku \fIdirlist\fP, podczas gdy polecenie .RS .PP ls 2\fB>&\fP1 \fB>\fP dirlist .RE .PP kieruje tylko standardowe wyjście do pliku \fIdirlist\fP, gdyż wyjście błędów zostało zduplikowane jako standardowe wyjście przed przekierowaniem wyjścia do \fIdirlist\fP. .PP \fBBash\fP obsługuje wiele nazw plików, szczególnie wtedy, gdy są one używane przy przekierowaniach, zgodnie z opisem w poniższej tabeli. Jeśli system operacyjny na którym działa \fBbash\fP udostępnia te pliki specjalne, bash skorzysta z nich, jeśli nie, to będą wewnętrznie emulowane cechując się opisanym poniżej zachowaniem. .RS .PP .PD 0 .TP \fB/dev/fd/\fP\fIfd\fP Jeżeli \fIfd\fP jest poprawną liczbą całkowitą, to duplikowany jest deskryptor pliku \fIfd\fP. .TP \fB/dev/stdin\fP Duplikowany jest deskryptor pliku 0. .TP \fB/dev/stdout\fP Duplikowany jest deskryptor pliku 1. .TP \fB/dev/stderr\fP Duplikowany jest deskryptor pliku 2. .TP \fB/dev/tcp/\fP\fIhost\fP\fB/\fP\fIport\fP Jeśli \fIhost\fP jest poprawną nazwą hosta lub adresem internetowym, a \fIport\fP jest liczbą całkowitą określającą numer portu lub nazwą usługi, to \fBbash\fP usiłuje otworzyć połączenie do odpowiedniego gniazda TCP. .TP \fB/dev/udp/\fP\fIhost\fP\fB/\fP\fIport\fP Jeśli \fIhost\fP jest poprawną nazwą hosta lub adresem internetowym, a \fIport\fP jest liczbą całkowitą określającą numer portu lub nazwą usługi, to \fBbash\fP usiłuje otworzyć połączenie do odpowiedniego gniazda UDP. .PD .RE .PP Nieudane otwarcie lub utworzenie pliku powoduje niepowodzenie przekierowania. .PP Przekierowania używające deskryptorów plików, większych niż 9 muszą być używane z dużą ostrożnością, gdyż mogą być w konflikcie z deskryptorami plików używanymi wewnętrznie przez powłokę. .PP Proszę zauważyć, że wbudowane polecenie \fBexec\fP może tworzyć przekierowania odnoszące się do bieżącej powłoki. .SS "Przekierowanie wejścia" .PP Przekierowanie wejścia powoduje otwarcie do odczytu pliku, którego nazwa wynika z interpretacji \fIsłowa\fP. Odczyt będzie wykonywany z deskryptora pliku \fIn\fP lub standardowego wejścia (zerowy deskryptor pliku) jeśli nie podano \fIn\fP. .PP Ogólny format przekierowania wejścia: .RS .PP [\fIn\fP]\fB<\fP\fIsłowo\fP .RE .SS "Przekierowanie wyjścia" .PP Przekierowanie wyjścia powoduje otwarcie do zapisu pliku, którego nazwa wynika z interpretacji \fIsłowa\fP. Zapis będzie wykonywany z deskryptora pliku \fIn\fP lub standardowego wyjścia (deskryptor pliku 1) jeśli nie podano \fIn\fP. Jeżeli plik nie istnieje jest tworzony; jeżeli istnieje obcinany jest do rozmiaru zerowego. .PP Ogólny format przekierowania wyjścia: .RS .PP [\fIn\fP]\fB>\fP\fIsłowo\fP .RE .PP Jeżeli operatorem przekierowania jest \fB>\fP, a została włączona opcja \fBnoclobber\fP wbudowanego polecenia \fBset\fP, to przekierowanie nie powiedzie się jeżeli plik o nazwie wynikającej z interpretacji \fIsłowa\fP istnieje i jest zwykłym plikiem. Jeżeli operatorem przekierowania jest \fB>|\fP, albo operatorem jest \fB>\fP przy niewłączonej opcji \fBnoclobber\fP, to wykonywana jest próba przekierowania, nawet jeśli plik \fIsłowo\fP istnieje. .SS "Dołączanie przekierowanego wyjścia" .PP Przekierowanie wyjścia w ten sposób powoduje, że plik o nazwie wynikającej z interpretacji \fIsłowa\fP zostanie otwarty do dołączania (append). Dołączanie będzie wykonywane z deskryptora pliku \fIn\fP lub standardowego wyjścia (deskryptor pliku 1) jeśli nie podano \fIn\fP. Jeżeli plik nie istnieje jest tworzony. .PP Ogólny format dołączania wyjścia: .RS .PP [\fIn\fP]\fB>>\fP\fIsłowo\fP .RE .PP .SS "Przekierowanie standardowego wyjścia i wyjścia błędów" .PP \fBBash\fP 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 \fIsłowo\fP. .PP Istnieją dwie postaci takiego przekierowania: .RS .PP \fB&>\fP\fIsłowo\fP .RE i .RS \fB>&\fP\fIsłowo\fP .RE .PP Spośród nich, zalecaną jest pierwsza forma. Jest ona semantycznie równoważna .RS .PP \fB>\fP\fIsłowo\fP 2\fB>&\fP1 .RE .PP Przy używaniu drugiej postaci, \fIsłowo\fP nie może zostać zinterpretowane jako liczba ani \fB\-\fP. Jeśli tak się stanie, zadziała inny operator przekierowania (zob. \fBPowielanie deskryptorów plików\fP poniżej) z powodu kompatybilności wstecznej. .SS "Dołączanie standardowego wyjścia i wyjścia błędów" .PP Ta konstrukcja pozwala na dołączanie, standardowego wyjścia (deskryptor pliku 1) i standardowego wyjścia błędów (deskryptor plików 2) do pliku, którego nazwą jest zinterpretowane \fIsłowo\fP. .PP Format dołączania standardowego wyjścia i wyjścia błędów: .RS .PP \fB&>>\fP\fIsłowo\fP .RE .PP Jest to semantycznie równoważne .RS .PP \fB>>\fP\fIsłowo\fP 2\fB>&\fP1 .RE .PP (zob. \fBPowielanie deskryptorów plików\fP poniżej). .SS "Dokumenty włączone (Here Documents)" .PP Ten typ przekierowania instruuje powłokę, by czytała wejście z bieżącego źródła aż do napotkania wiersza zawierającego tylko \fIsłowo\fP (bez żadnych kończących odstępów). Wszystkie wiersze przeczytane do tego momentu są następnie używane jako standardowe wejście (lub deskryptor pliku \fIn\fP, jeśli podano \fIn\fP) polecenia. .PP Format dokumentów włączonych jest następujący: .RS .PP .nf [\fIn\fP]\fB<<\fP[\fB\-\fP]\fIsłowo\fP \fIdokument włączony\fP \fIogranicznik\fP .fi .RE .PP Na \fIsłowie\fP nie jest wykonywana interpretacja parametrów ani zmiennych, podstawiania wyników poleceń, rozwijanie nazw plików ani interpretacja wyrażeń arytmetycznych. Jeżeli cytowana jest część \fIsłowa\fP, to \fIogranicznik\fP jest wynikiem usunięcia cytowań ze \fIsłowa\fP, a wiersze w dokumencie włączonym nie są interpretowane. Jeżeli \fIsłowo\fP nie jest cytowane, wszystkie wiersze dokumentu włączonego podlegają interpretacji parametrów, podstawianiu poleceń i interpretacji wyrażeń arytmetycznych. Sekwencja \fB\e\fP jest ignorowana, a do cytowania znaków \fB\e\fP, \fB$\fP i \fB`\fP musi być użyte \fB\e\fP. .PP Jeżeli operatorem przekierowania jest \fB<<\-\fP, to wszystkie początkowe znaki tabulacji są obcinane z wierszy wejściowych i wiersza zawierającego \fIogranicznik\fP. Pozwala to na ustawienie naturalnych wcięć dla dokumentów włączonych w skryptach powłoki. .SS "Łańcuchy włączone (Here Strings)" Wariant dokumentów włączonych, którego format jest następujący: .RS .PP .nf [\fIn\fP]\fB<<<\fP\fIsłowo\fP .fi .RE .PP \fISłowo\fP podlega interpretacji nawiasów, interpretacji tyldy, interpretacji parametrów i zmiennych, podstawianiu wyników poleceń, interpretacji wyrażeń arytmetycznych i usuwaniu cytowań. Rozwijanie nazw plików i podział na słowa nie jest przeprowadzane. Wynik jest przekazywany poleceniu jako pojedynczy łańcuch z dołączonym znakiem nowego wiersza na jego standardowe wejście (lub deskryptor pliku \fIn\fP, jeśli podano \fIn\fP). .SS "Powielanie deskryptorów plików" .PP Operator przekierowania .RS .PP [\fIn\fP]\fB<&\fP\fIsłowo\fP .RE .PP służy do powielania deskryptorów plików wejściowych. Jeżeli \fIsłowo\fP zinterpretowane zostanie jako jedna lub więcej cyfr, to deskryptor pliku oznaczony przez \fIn\fP czyniony jest kopią tego deskryptora. Jeżeli cyfry w \fIsłowie\fP nie określają otwartego dla wejścia deskryptora, pojawia się błąd przekierowania. Jeżeli \fIsłowo\fP zinterpretowane jest jako \fB\-\fP, deskryptor pliku \fIn\fP jest zamykany. Jeżeli \fIn\fP nie zostało określone, to stosowane jest standardowe wejście (deskryptor pliku 0). .PP Operator .RS .PP [\fIn\fP]\fB>&\fP\fIsłowo\fP .RE .PP podobnie, służy do powielania deskryptorów standardowego wyjścia. Jeżeli nie określono \fIn\fP, stosowane jest standardowe wyjście (deskryptor pliku 1). Jeżeli cyfry w \fIsłowie\fP nie określają deskryptora pliku otwartego do wyjścia, pojawia się błąd przekierowania. Jeżeli słowo zostanie zinterpretowane jako \fB\-\fP, deskryptor pliku \fIn\fP jest zamykany. W przypadku specjalnym, jeżeli pominięto \fIn\fP, a \fIsłowo\fP nie jest interpretowane jako jedna lub więcej cyfr lub \fB\-\fP, to przekierowywane są standardowe wyjście i standardowe wyjście błędów, jak opisano poprzednio. .SS "Przenoszenie deskryptorów plików" .PP Operator przekierowania .RS .PP [\fIn\fP]\fB<&\fP\fIsłowo\fP\fB\-\fP .RE .PP przenosi deskryptor pliku \fIsłowo\fP do deskryptora pliku \fIn\fP lub, jeśli nie podano \fIn\fP, na standardowe wejście (deskryptor pliku 0). \fISłowo\fP jest zamykane po zduplikowaniu do \fIn\fP. .PP Podobnie, operator przekierowania .RS .PP [\fIn\fP]\fB>&\fP\fIsłowo\fP\fB\-\fP .RE .PP przenosi deskryptor pliku \fIsłowo\fP do deskryptora pliku \fIn\fP lub, jeśli nie podano \fIn\fP, na standardowe wyjście (deskryptor pliku 1). .SS "Otwieranie deskryptorów plików do odczytu i zapisu" .PP Operator przekierowania .RS .PP [\fIn\fP]\fB<>\fP\fIsłowo\fP .RE .PP powoduje, że plik o nazwie wynikłej z interpretacji \fIsłowa\fP zostanie otwarty do odczytu i zapisu. Odczyt i zapis będą wykonywane z deskryptora pliku \fIn\fP lub standardowego wejścia (deskryptor pliku 0) jeśli nie podano \fIn\fP. Jeżeli plik nie istnieje, to jest tworzony. .SH ALIASY \fBAliasy\fP (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ń \fBalias\fP i \fBunalias\fP (zobacz poniżej .SM \fBWBUDOWANE\fP \fBPOLECENIA\fP \fBPOWŁOKI\fP). 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. Znaki \fB/\fP, \fB$\fP, \fB\`\fP i \fB=\fP i wszystkie \fImetaznaki\fP powłoki oraz znaki cytowania wypisane powyżej nie mogą być nazwą aliasu. Tekst zastępujący może zawierać dowolne poprawne wejście powłoki, łącznie z \fImetaznakami\fP powłoki. 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 \fBls\fP do \fBls \-F\fP, na przykład, a \fBbash\fP nie będzie usiłował rekurencyjnie interpretować zastępującego tekstu. Jeżeli ostatnim znakiem wartości aliasu jest \fIodstęp\fP, to następne słowo polecenia występujące po aliasie ma również sprawdzaną interpretację aliasów. .PP Aliasy są tworzone i pokazywane poleceniem \fBalias\fP, a usuwane poleceniem \fBunalias\fP. .PP 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 .SM \fBFUNKCJE\fP). .PP Aliasy nie są interpretowane, gdy powłoka nie jest interaktywna, chyba że ustawiono opcję powłoki \fBexpand_aliases\fP przy pomocy \fBshopt\fP (zobacz opis \fBshopt\fP w sekcji .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP poniżej). .PP Reguły dotyczące definiowania i używania aliasów są nieco zagmatwane. \fBBash\fP 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. 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 \fBalias\fP w poleceniach złożonych. .PP Prawie w każdym zastosowaniu aliasy są wyparte przez funkcje powłoki. .SH FUNKCJE Punkcja powłoki, zdefiniowana jak opisano powyżej, w sekcji .SM \fBGRAMATYKA POWŁOKI\fP, 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 \fB#\fP, tak by odzwierciedlał zmianę. Parametr pozycyjny \fB0\fP nie jest zmieniany. Zmienna .SM \fBFUNCNAME\fP podczas wykonywania funkcji ustawiana jest na jej nazwę. .PP Wszystkie inne aspekty środowiska wykonywania powłoki są identyczne między funkcją i jej wywołującym, z następującymi wyjątkami: pułapki (trap) .SM \fBDEBUG\fP i .SM \fBRETURN\fP (zobacz opis wbudowanego \fBtrap\fP poniżej, w sekcji .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP) nie są dziedziczone, chyba że funkcja ma podany atrybut \fBtrace\fP (patrz opis wbudowanego \fBdeclare\fP poniżej) lub opcja powłoki \fB\-o functrace\fP została włączona wbudowanym \fBset\fP (w takim przypadku wszystkie funkcje dziedziczą pułapki \fBDEBUG\fP i \fBRETURN\fP). Pułapka .SM \fBERR\fP nie jest dziedziczona, chyba że włączono opcję \fB\-o errtrace\fP powłoki. .PP Zmienne lokalne dla funkcji mogą być deklarowane przy pomocy wbudowanego polecenia \fBlocal\fP. Zwykle zmienne i ich wartości są wspólne dla funkcji i jej wołającego. .PP Jeśli zmienna \fBFUNCNEST\fP zostanie ustawiona na wartość liczbową większą od 0, to będzie definiować maksymalny poziom zagnieżdżenia funkcji. Wywołania funkcji przekraczające ten poziom będą powodowały przerwanie całego polecenia. .PP Jeżeli w funkcji wywoływane jest wbudowane polecenie \fBreturn\fP, funkcja kończy działanie i wykonywanie wznawiane jest od następnego polecenia po wywołaniu funkcji. Każda funkcja powiązana z pułapką \fBRETURN\fP jest wykonywana przed wznowieniem wykonywania. Gdy funkcja kończy działanie, parametrom pozycyjnym i parametrowi specjalnemu \fB#\fP przywracane są wartości, jakie posiadały one przed wykonaniem funkcji. .PP Listę nazw i definicji funkcji można uzyskać przy pomocy opcji \fB\-f\fP wbudowanych poleceń \fBdeclare\fP lub \fBtypeset\fP. Opcja \fB\-F\fP poleceń \fBdeclare\fP lub \fBtypeset\fP podaje same nazwy funkcji (i opcjonalnie plik źródłowy oraz numer wiersza, jeśli włączono opcję powłoki \fBextdebug\fP). Funkcje można eksportować, tak że będą one automatycznie zdefiniowane w podpowłokach. Wykonuje się to przy pomocy opcji \fB\-f\fP wbudowanego polecenia \fBexport\fP. Definicję funkcji można usunąć opcją \fB\-f\fP lub wbudowanym \fBunset\fP. Proszę zauważyć, że funkcje i zmienne powłoki posiadające tę samą nazwę mogą dać w wyniku wiele wpisów o identycznych nazwach w środowisku, przekazywanym do potomków powłoki. Należy zachować ostrożność w przypadkach, w których może to powodować problemy. .PP Funkcje mogą być rekurencyjne. Zmienna \fBFUNCNEST\fP może posłużyć do ograniczenia głębokości stosu wywołań funkcji i liczby wywołań funkcji. Domyślnie, nie ma narzuconego ograniczenia na liczbę rekurencyjnych wywołań. .SH "OBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH" Powłoka pozwala, pod pewnymi warunkami, na obliczanie wartości wyrażeń arytmetycznych (zobacz wbudowane polecenia \fBlet\fP i \fBdeclare\fP, polecenie złożone \fB((\fP oraz \fBInterpretacja wyrażeń arytmetycznych\fP). Obliczenia wykonywane są na liczbach całkowitych o ustalonej wielkości (fixed\-width), 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. .PP .PD 0 .TP \fIid\fP\fB++ \fP\fIid\fP\fB\-\-\fP post\-inkrementacja i post\-dekrementacja zmiennej .TP \fB++\fP\fIid\fP\fB \-\-\fP\fIid\fP pre\-inkrementacja i pre\-dekrementacja zmiennej .TP \fB\- +\fP jednoargumentowy minus i plus .TP \fB! ~\fP negacja logiczna i bitowa .TP \fB**\fP potęgowanie .TP \fB* / %\fP mnożenie, dzielenie, reszta z dzielenia .TP \fB+ \-\fP dodawanie, odejmowanie .TP \fB<< >>\fP lewo i prawostronne przesunięcie bitowe .TP \fB<= >= < >\fP porównanie .TP \fB== !=\fP równości i nierówność .TP \fB&\fP bitowa koniunkcja (AND) .TP \fB^\fP bitowa alternatywa wyłączna (XOR) .TP \fB|\fP bitowa alternatywa (OR) .TP \fB&&\fP logiczna koniunkcja (AND) .TP \fB||\fP logiczna alternatywa (OR) .TP \fIwyraż\fP\fB?\fP\fIwyraż\fP\fB:\fP\fIwyraż\fP operator warunkowy .TP \fB= *= /= %= += \-= <<= >>= &= ^= |=\fP przypisanie .TP \fIwyraż1\fP\fB , \fP\fIwyraż2\fP przecinek .PD .PP 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. Zmienna powłoki, która jest pusta lub nieustawiona jest przyjmowana jako 0, gdy odwołuje się do jej nazwy bez używania składni interpretacji parametrów. Gdy wystąpi odwołanie się do zmiennej lub gdy przypisano wartość zmiennej, której nadano wcześniej atrybut \fIliczby całkowitej\fP przy użyciu \fBdeclare \-i\fP, to jej wartość obliczana jest jako wyrażenie arytmetyczne. Pusta wartość jest interpretowana jako 0. Zmienna powłoki nie musi mieć włączonego atrybutu \fIliczby całkowitej\fP by mogła być użyta w wyrażeniu. .PP 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ć [\fIpodstawa#\fP]n, gdzie opcjonalna \fIpodstawa\fP jest liczbą dziesiętną pomiędzy 2 a 64 reprezentującą podstawę układu pozycyjnego, zaś \fIn\fP liczbą w układzie o tej podstawie. Jeśli pominięto \fIpodstawa#\fP, to używana jest podstawa 10. Gdy poda się \fIn\fP, cyfry większe niż 9 reprezentowane są przez małe litery, wielkie litery, @ i _, w tej kolejności. Jeżeli \fIpodstawa\fP 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. .PP 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. .SH "WYRAŻENIA WARUNKOWE" Wyrażenia warunkowe używane są przez polecenie złożone \fB[[\fP oraz polecenia wbudowane \fBtest\fP i \fB[\fP 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. \fBBash\fP traktuje wiele nazw plików jako specjalne, gdy są używane w wyrażeniach. Jeśli system operacyjny na którym działa \fBbash\fP udostępnia je, to bash ich użyje, w przeciwnym razie będzie wewnętrznie emulował ich działanie: Jeśli któryś z argumentów \fIplikowych\fP jednej z składowych jest w postaci \fI/dev/fd/n\fP, to sprawdzany jest deskryptor pliku \fIn\fP. Jeżeli argument \fIplik\fP którejś składowej jest jednym z \fI/dev/stdin\fP, \fI/dev/stdout\fP lub \fI/dev/stderr\fP, to sprawdzany jest, odpowiednio, deskryptor 0, 1 lub 2. .PP Jeśli nie określono inaczej, składowe operujące na plikach podążają za dowiązaniami symbolicznymi i działają na celu dowiązania, a nie na samym dowiązaniu. .if t .sp 0.5 .if n .sp 1 Gdy operatory \fB<\fP i \fB>\fP są używane z poleceniem \fB[[\fP, to sortują zgodnie z porządkiem leksykograficznym, używając bieżącego ustawienia locale. Polecenie \fBtest\fP sortuje korzystając z kolejności ASCII. .sp 1 .PD 0 .TP \fB\-a \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje. .TP \fB\-b \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jest blokowym plikiem specjalnym. .TP \fB\-c \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jest znakowym plikiem specjalnym. .TP \fB\-d \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jest katalogiem. .TP \fB\-e \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje. .TP \fB\-f \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jest plikiem zwykłym. .TP \fB\-g \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i ma ustawiony bit set\-group\-id. .TP \fB\-h \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jest dowiązaniem symbolicznym. .TP \fB\-k \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i ma ustawiony bit ochrony (sticky bit). .TP \fB\-p \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jest potokiem nazwanym (FIFO). .TP \fB\-r \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i daje się czytać. .TP \fB\-s \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i ma rozmiar większy niż zero. .TP \fB\-t \fP\fIfd\fP Prawda jeśli deskryptor pliku \fIfd\fP jest otwarty i odnosi się do terminala. .TP \fB\-u \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i ma ustawiony bit set\-user\-id. .TP \fB\-w \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i daje się doń zapisać. .TP \fB\-x \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jest wykonywalny. .TP \fB\-G \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jego właścicielem jest efektywny id grupy. .TP \fB\-L \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jest dowiązaniem symbolicznym. .TP \fB\-N \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i został zmodyfikowany od czasu jego ostatniego odczytu. .TP \fB\-0 \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jego właścicielem jest efektywny id użytkownika. .TP \fB\-S \fP\fIplik\fP Prawda jeśli \fIplik\fP istnieje i jest gniazdem. .TP \fIplik1\fP \-\fBef\fP \fIplik2\fP Prawda jeśli \fIplik1\fP i \fIplik2\fP odnoszą się do tego samego urządzenia i numeru i\-węzła. .TP \fIplik1\fP \-\fBnt\fP \fIplik2\fP Prawda, jeśli \fIplik1\fP jest nowszy (według daty modyfikacji) niż \fIplik2\fP lub \fIplik1\fP istnieje a \fIplik2\fP nie. .TP \fIplik1\fP \fB\-ot\fP \fIplik2\fP Prawda, jeśli \fIplik1\fP jest starszy niż \fIplik2\fP lub \fIplik2\fP istnieje a \fIplik1\fP nie. .TP \fB\-o \fP\fInazwa_opcji\fP Prawda jeśli opcja powłoki \fInazwa_opcji\fP jest włączona. Zobacz zestawienie opcji w opisie opcji \fB\-o\fP wbudowanego \fBset\fP, poniżej. .TP \fB\-v \fP\fInazwa\-zmiennej\fP Prawda, jeśli zmienna powłoki \fIzmienna\-powłoki\fP jest ustawiona (została jej przypisana wartość). .TP \fB\-R \fP\fInazwa\-zmiennej\fP Prawda, jeśli zmienna powłoki \fIzmienna\-powłoki\fP jest ustawiona i jest nazwą referencyjną. .TP \fB\-z \fP\fIłańcuch\fP Prawda jeśli długość \fIłańcucha\fP wynosi zero. .TP \fIstring\fP .PD 0 .TP \fB\-n \fP\fIłańcuch\fP .PD Prawda jeśli \fIłańcuch\fP ma długość niezerową. .TP \fIłańcuch1\fP \fB==\fP \fIłańcuch2\fP .PD 0 .TP \fIłańcuch1\fP \fB=\fP \fIłańcuch2\fP .PD Prawda, jeśli łańcuchy są sobie równe. \fB=\fP powinno być używane z poleceniem \fBtest\fP, w celu zachowania zgodności z normą POSIX. Gdy używane jest z poleceniem \fB[[\fP, przeprowadzane jest dopasowanie do wzorca, zgodnie z opisem powyżej \fBPolecenia złożone\fP). .TP \fIłańcuch1\fP \fB!=\fP \fIłańcuch2\fP Prawda jeśli łańcuchy nie są równe. .TP \fIłańcuch1\fP \fB<\fP \fIłańcuch2\fP Prawda jeśli \fIłańcuch1\fP przy sortowaniu występowałby przed \fIłańcuchem2\fP według bieżącego ustawienia locale. .TP \fIłańcuch1\fP \fB>\fP \fIłańcuch2\fP Prawda jeśli \fIłańcuch1\fP przy sortowaniu występowałby po \fIłańcuchu2\fP według bieżącego ustawienia locale. .TP \fIarg1 \fP\fBOP\fP\fI arg2\fP .SM \fBOP\fP jest jednym z \fB\-eq\fP, \fB\-ne\fP, \fB\-lt\fP, \fB\-le\fP, \fB\-gt\fP lub \fB\-ge\fP. Te arytmetyczne operatory dwuargumentowe zwracają prawdę jeśli \fIarg1\fP 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) \fIarg2\fP. \fIArg1\fP i \fIarg2\fP mogą być dodatnimi lub ujemnymi liczbami całkowitymi. .PD .SH "INTERPRETACJA POLECEŃ PROSTYCH" Gdy wykonywane jest polecenie proste, powłoka wykonuje następujące interpretacje, przypisania i przekierowania, od lewej do prawej. .IP 1. Słowa oznaczone przez analizator składni jako przypisania zmiennych (poprzedzające nazwę polecenia) i przekierowania zachowywane są do późniejszego przetworzenia. .IP 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. .IP 3. Wykonywane są przekierowania, jak opisano powyżej w sekcji .SM \fBPRZEKIEROWANIE\fP. .IP 4. W każdym przypisaniu zmiennej tekst po znaku równości \fB=\fP podlega interpretacji tyldy, interpretacji parametrów, podstawianiu wyników poleceń, interpretacji wyrażeń arytmetycznych i usuwaniu cudzysłowów, zanim zostanie przypisany do zmiennej. .PP Jeżeli nie otrzymano żadnej nazwy polecenia, to przypisania zmiennych dotyczą środowiska aktualnej powłoki. W przeciwnym 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. .PP 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. .PP 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. .SH "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. .PP 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 .SM \fBFUNKCJE\fP. Jeżeli nazwa nie pasuje do funkcji, powłoka szuka jej na liście poleceń wbudowanych. Jeżeli znaleziono pasujące, to jest ono wywoływane. .PP Jeżeli nazwa nie jest ani funkcją powłoki ani poleceniem wbudowanym i nie zawiera ukośników, to \fBbash\fP przeszukuje każdy element z .SM \fBPATH\fP usiłując znaleźć katalog zawierający plik wykonywalny o takiej nazwie. \fBBash\fP posługuje się tablicą mieszającą (hash table) do zapamiętywania pełnych nazw plików wykonywalnych (zobacz \fBhash\fP w .SM \fBWBUDOWANE\fP \fBPOLECENIA\fP \fBPOWŁOKI\fP poniżej). Pełne przeszukiwanie katalogów z .SM \fBPATH\fP wykonywane jest tylko wtedy, gdy polecenia nie znaleziono w tablicy mieszającej. Jeżeli wyszukiwanie nie powiedzie się, powłoka szuka zdefiniowanej funkcji powłoki o nazwie \fBcommand_not_found_handle\fP. Jeśli ta funkcja istnieje, jest wywoływana z pierwotnym poleceniem i jego argumentami użytymi jako jej argumenty, a kod wyjścia funkcji staje się kodem wyjścia powłoki. Jeśli funkcja nie jest zdefiniowana, powłoka wypisuje komunikat o błędzie i zwraca kod zakończenia równy 127. .PP 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. .PP Jeżeli wykonanie to nie powiedzie się, gdyż plik nie ma formatu wykonywalnego, a nie jest katalogiem, to zakłada się, że jest on \fIskryptem powłoki\fP, 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 \fBhash\fP poniżej w .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP są zachowywane przez potomka. .PP Jeżeli program jest plikiem o zawartości rozpoczynającej się od \fB#!\fP, 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. .SH "ŚRODOWISKO WYKONYWANIA POLECEŃ" Powłoka posiada \fIśrodowisko wykonywania\fP (execution environment), na które składają się: .IP \(bu otwarte pliki odziedziczone przez powłokę przy wywołaniu, zmodyfikowane przez przekierowania przekazane do wbudowanego polecenia \fBexec\fP .IP \(bu bieżący katalog roboczy ustawiony przez \fBcd\fP, \fBpushd\fP lub \fBpopd\fP, albo odziedziczony przez powłokę przy wywołaniu .IP \(bu maska trybu tworzonych plików ustawioną przez \fBumask\fP albo odziedziczoną po rodzicu powłoki .IP \(bu bieżące pułapki ustawione przez \fBtrap\fP .IP \(bu parametry powłoki ustawione przez przypisania zmiennych przy pomocy \fBset\fP albo odziedziczone ze środowiska rodzica powłoki .IP \(bu funkcje powłoki zdefiniowane podczas wykonywania lub odziedziczone ze środowiska rodzica powłoki .IP \(bu opcje włączone przy wywołaniu (albo domyślnie albo przy pomocy argumentów wiersza poleceń) albo przez \fBset\fP .IP \(bu opcje włączone przez \fBshopt\fP .IP \(bu aliasy powłoki zdefiniowane przy pomocy \fBalias\fP .IP \(bu różne id procesów, łącznie z identyfikatorami zadań tła, wartość \fB$$\fP i wartość .SM \fB$PPID\fP .PP Gdy ma zostać wykonane polecenie proste inne niż funkcja powłoki lub polecenie wbudowane, wywoływane jest w odrębnym środowisku wykonania, składających się z poniższych elementów. Jeśli nie podano inaczej, wartości dziedziczone są z powłoki. .if n .sp 1 .IP \(bu otwarte pliki powłoki, plus modyfikacje i dodatki określone przez przekierowania polecenia .IP \(bu bieżący katalog roboczy .IP \(bu maska trybu tworzonych plików .IP \(bu zmienne powłoki oznaczone do wyeksportowania, razem ze zmiennymi wyeksportowanymi do polecenia, przekazane w środowisku .IP \(bu 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. .PP Polecenie wywołane w odrębnym środowisku nie może wpływać na środowisko wykonywania powłoki. .PP 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. .PP Podpowłoki utworzone do wykonania podstawiania wyników poleceń dziedziczą wartość opcji \fB\-e\fP z powłoki macierzystej. Jeśli \fBbash\fP nie działa w trybie \fIposix\fP, to czyści opcję \fB\-e\fP w takich podpowłokach. .PP Jeżeli po poleceniu występuje \fB&\fP, a nie uaktywniono sterowania zadaniami, to domyślnym standardowym wejściem dla tego polecenia jest pusty plik \fI/dev/null\fP. W przeciwnym razie wywoływane polecenie dziedziczy deskryptory plików po wołającej powłoce, zmodyfikowane przekierowaniami. .SH ŚRODOWISKO Podczas wywoływania program otrzymuje tablicę łańcuchów zwaną \fIśrodowiskiem\fP (environment). Jest to lista par \fInazwa\fP\-\fIwartość\fP, o postaci \fInazwa\fP=\fIwartość\fP. .PP 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 \fIwyeksportowania\fP do procesów potomnych. Wykonywane polecenia dziedziczą środowisko. Polecenia \fBexport\fP i \fBdeclare \-x\fP 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 \fBunset\fP, plus dodane poprzez polecenia \fBexport\fP i \fBdeclare \-x\fP. .PP Środowisko dla dowolnego \fIpolecenia prostego\fP czy funkcji może być tymczasowo powiększone przez poprzedzenie polecenia przypisaniem parametrów, jak opisano powyżej w sekcji .SM \fBPARAMETRY\fP. Te instrukcje przypisania mają wpływ wyłącznie na środowisko postrzegane przez to polecenie. .PP Jeżeli ustawiona jest opcja \fB\-k\fP (zobacz poniżej opis wbudowanego polecenia \fBset\fP), to \fIwszystkie\fP przypisania parametrów umieszczane są w środowisku polecenia, a nie tylko te, które poprzedzają nazwę polecenia. .PP Gdy \fBbash\fP wywołuje polecenie zewnętrzne, zmienna \fB_\fP ustawiana jest na pełną nazwę pliku polecenia i przekazywana temu poleceniu w jego środowisku. .SH "KOD ZAKOŃCZENIA" .PP Kod zakończenia wykonanego polecenia jest wartością zwracaną przez wywołanie systemowe \fIwaitpid\fP lub funkcję będącą jego odpowiednikiem. Kody zakończenia mieszczą się w zakresie od 0 do 255, przy czym, jak wyjaśniono poniżej, powłoka może używać wartości powyżej 125 w sposób specjalny. Kod zakończenia z wbudowanych poleceń powłoki i poleceń złożonych również są ograniczone do powyższego przedziału. W szczególnych przypadkach, powłoka używa wartości specjalnych aby poinformować o konkretnym trybie błędu. .PP 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 \fIN\fP, \fIbash\fP posługuje się wartością 128+\fBN\fP jako kodem zakończenia. .PP 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. .PP Jeżeli polecenie nie powiodło się z powodu błędu podczas interpretacji lub przekierowania, kod zakończenia jest większy od zera. .PP Wbudowane polecenia powłoki zwracają kod 0 (\fItrue\fP prawda) jeśli się powiodły, i niezerowy (\fIfalse\fP fałsz) jeśli podczas ich wykonywania pojawił się błąd. Wszystkie polecenia wbudowane zwracają kod 2 dla wskazania niepoprawnego użycia, zwykle nieprawidłowych opcji lub brakujących argumentów. .PP Sam \fBBash\fP 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 \fBexit\fP. .SH SYGNAŁY Gdy \fBbash\fP jest interaktywny, przy braku jakichkolwiek pułapek (przechwytywania sygnałów), ignoruje on .SM \fBSIGTERM\fP (tak, że \fBkill 0\fP nie zabija powłoki interaktywnej), a .SM \fBSIGINT\fP jest przechwytywany i obsługiwany (tak, że wbudowane polecenie \fBwait\fP daje się przerwać). We wszystkich przypadkach, \fBbash\fP ignoruje .SM \fBSIGQUIT\fP. Jeżeli działa kontrola zadań, \fBbash\fP ignoruje .SM \fBSIGTTIN\fP, .SM \fBSIGTTOU\fP i .SM \fBSIGTSTP\fP. .PP Zadania synchroniczne uruchomione przez \fBbash\fP 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ż .SM \fBSIGINT\fP i .SM \fBSIGQUIT\fP. Polecenia uruchamiane wskutek podstawiania poleceń ignorują generowane z klawiatury sygnały kontroli zadań .SM \fBSIGTTIN\fP, .SM \fBSIGTTOU\fP i .SM \fBSIGTSTP\fP. .PP Powłoka domyślnie kończy pracę po otrzymaniu .SM \fBSIGHUP\fP. Przed zakończeniem, powłoka interaktywna rozsyła otrzymany .SM \fBSIGHUP\fP do wszystkich zadań, pracujących lub zatrzymanych. Do zatrzymanych zadań wysyłany jest .SM \fBSIGCONT\fP by upewnić się, że otrzymują .SM \fBSIGHUP\fP. Chcąc uniknąć wysłania sygnału przez powłokę do konkretnego zadania, należy usunąć je z tablicy zadań przy pomocy wbudowanego polecenia \fBdisown\fP (zobacz poniżej .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP) lub oznakować, by nie otrzymywało .SM \fBSIGHUP\fP, posługując się \fBdisown \-h\fP. .PP Jeżeli przy pomocy \fBshopt\fP została ustawiona opcja \fBhuponexit\fP powłoki, \fBbash\fP wysyła .SM \fBSIGHUP\fP do wszystkich zadań, gdy kończy pracę interaktywna powłoka zgłoszeniowa. .PP Gdy \fBbash\fP 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 \fBbash\fP oczekuje na polecenie asynchroniczne za pośrednictwem wbudowanego \fBwait\fP, odbiór sygnału, dla którego ustawiono przechwytywanie spowoduje, że wbudowane \fBwait\fP natychmiast skończy pracę z kodem większym od 128, po czym natychmiast zostanie wywołana pułapka. .SH "KONTROLA ZADAŃ" \fIKontrola zadań\fP odnosi się do możliwości selektywnego zatrzymywania (\fIzawieszania\fP \- suspend) wykonywania procesów i późniejszej kontynuacji (\fIwznawiania\fP \- resume) ich wykonywania. Użytkownik zwykle wykorzystuje to udogodnienie za pośrednictwem interaktywnego interfejsu obsługiwanego wspólnie przez systemowy sterownik terminala i \fBbash\fP. .PP Powłoka kojarzy z każdym potokiem \fIzadanie\fP. Przechowuje tablicę aktualnie wykonywanych zadań, którą można przeglądać za pomocą polecenia \fBjobs\fP. Gdy \fBbash\fP uruchamia zadanie asynchronicznie (w \fItle\fP), wypisuje wiersz w rodzaju: .RS .PP [1] 25647 .RE .PP 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. \fBBash\fP posługuje się abstrakcją (abstraction) \fIzadania\fP jako podstawą kontroli zadań. .PP Dla ułatwienia implementacji interfejsu użytkownika do kontroli zadań, system operacyjny utrzymuje pojęcie \fIID grupy procesów bieżącego terminala\fP (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 .SM \fBSIGINT\fP. Mówimy, że procesy te pracują \fIpierwszoplanowo\fP. Procesy \fItła\fP 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ć i, jeśli użytkownik ustawi \f(CWstty tostop\fP, pisać na terminal. Do procesów tła usiłujących czytać z (i pisać do, jeśli działa \f(CWstty tostop\fP) terminala wysyłany jest przez sterownik terminala sygnał .SM \fBSIGTTIN\fP \fB(SIGTTOU)\fP, który, jeśli nie zostanie przechwycony, wstrzymuje proces. .PP Jeżeli system operacyjny, na którym działa \fBbash\fP obsługuje kontrolę zadań, \fBbash\fP zawiera funkcje do jej wykorzystywania. Naciśnięcie klawisza \fIwstrzymania\fP (zwykle \fB^Z\fP, Control\-Z) podczas pracy procesu powoduje, że proces ten zostanie zatrzymany a sterowanie zostanie zwrócone do \fBbash\fP. Naciśnięcie klawisza \fIopóźnione wstrzymanie\fP (zwykle \fB^Y\fP, Control\-Y) powoduje, że proces zostanie zatrzymywany gdy będzie usiłował czytać wejście z terminala, a sterowanie powróci do \fBbash\fP. Użytkownik może następnie zmieniać stan takiego zadania, posługując się poleceniem \fBbg\fP do kontynuacji zadania w tle, \fBfg\fP do kontynuacji na pierwszym planie lub poleceniem \fBkill\fP do zabicia zadania. \fB^Z\fP działa natychmiast i ma efekt uboczny: powoduje odrzucenie oczekującego wyjścia i wprowadzonych, a nieprzetworzonych naciśnięć klawiszy (typeahead). .PP Istnieje kilka sposobów wskazywania zadania w powłoce. Znak \fB%\fP poprzedza nazwę zadania. Zadanie numer \fIn\fP można wskazać jako \fB%n\fP. 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, \fB%ce\fP odnosi się do zatrzymanego zadania \fBce\fP. Jeśli przedrostek pasuje do więcej niż jednego zadania, \fBbash\fP zgłasza błąd. Z drugiej strony, użycie \fB%?ce\fP, wskazuje na zadanie zawierające podłańcuch \fBce\fP w swym wierszu poleceń. Jeżeli łańcuch pasuje do więcej niż jednego zadania, \fBbash\fP zgłasza błąd. Symbole \fB%%\fP i \fB%+\fP określają rozumiane przez powłokę \fIbieżące zadanie\fP, będące ostatnim zadaniem zatrzymanym, gdy było na pierwszym planie lub uruchomionym w tle. Do \fIpoprzedniego zadania\fP można odwoływać się przy pomocy \fB%\-\fP. W wyjściu odnoszącym się do zadań (np. wyjście polecenia \fBjobs\fP), bieżące zadanie jest zawsze zaznaczone znakiem \fB+\fP, a zadanie poprzednie \fB\-\fP. Pojedynczy % (bez towarzyszącego określenia zadania) również odnosi się do bieżącego zadania. .PP Do przywrócenia zadania na pierwszy plan można posłużyć się po prostu jego nazwą: \fB%1\fP jest synonimem dla ,,\fBfg %1\fP\*(rq, przywracającego zadanie 1 z tła na pierwszy plan. Podobnie, ,,\fB%1 &\fP\*(rq wznawia zadanie 1 w tle, równoważnie do ,,\fBbg %1\*(rq\fP\*(rq. .PP Powłoka natychmiast dowiaduje się czy zadanie zmieniło stan. Normalnie, \fBbash\fP czeka ze zgłoszeniem zmian do momentu, gdy ma wyświetlić zachętę, by nie przerywać innego wyjścia. Jeżeli włączono opcję \fB\-b\fP wbudowanego polecenia \fBset\fP, \fBbash\fP zgłasza takie zmiany natychmiast. Dla każdego kończącego pracę procesu potomnego wykonywana jest ewentualna pułapka przechwytująca .SM \fBSIGCHLD\fP. .PP Jeżeli wykonano próbę zakończenia pracy \fBbash\fP przy istniejących zatrzymanych zadaniach (lub, gdy włączono opcję powłoki \fBcheckjobs\fP używając wbudowanego \fBshopt\fP, działających zadaniach), powłoka wypisuje komunikat ostrzegawczy i, jeśli włączono opcję \fBcheckjobs\fP wypisuje zadania wraz z ich stanem. Można wówczas posłużyć się poleceniem \fBjobs\fP 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. .SH "ZACHĘTA POWŁOKI" Przy wykonywaniu interaktywnym \fBbash\fP wyświetla główny symbol zachęty (primary prompt) .SM \fBPS1\fP kiedy jest gotowa na odczyt polecenia, zaś wtórną (secondary) zachętę .SM \fBPS2\fP kiedy potrzebuje więcej danych z wejścia do uzupełnienia polecenia. \fBBash\fP wyświetla \fBPS0\fP po odczytaniu polecenia, a przed jego wykonaniem. \fBBash\fP pozwala na dostosowywanie tych łańcuchów zachęty poprzez wstawianie wielu znaków specjalnych rozpoczynających się odwrotnym ukośnikiem, które są dekodowane jak następuje: .RS .PD 0 .TP \fB\ea\fP znak dzwonka ASCII (07) .TP \fB\ed\fP data w formacie "DzieńTyg Miesiąc Dzień" (np. "Tue May 26") .TP \fB\eD{\fP\fIformat\fP\fB}\fP \fIformat\fP jest przekazywany do \fIstrftime\fP(3), a wynik jest wstawiany do łańcucha zachęty. Pusty \fIformat\fP daje w wyniku czas w lokalnym formacie. Nawiasy klamrowe są wymagane .TP \fB\ee\fP znak escape ASCII (033) .TP \fB\eh\fP nazwa hosta do pierwszej kropki `.' .TP \fB\eH\fP nazwa hosta .TP \fB\ej\fP liczba zadań aktualnie obsługiwanych przez powłokę .TP \fB\el\fP główna część nazwy urządzenia terminala powłoki .TP \fB\en\fP znak nowej linii .TP \fB\er\fP powrót karetki (carriage return) .TP \fB\es\fP nazwa powłoki, główna część nazwy \fB$0\fP (fragment występujący po ostatnim ukośniku) .TP \fB\et\fP bieżący czas w formacie 24\-godzinnym GG:MM:SS .TP \fB\eT\fP bieżący czas w formacie 12\-godzinnym GG:MM:SS .TP \fB\e@\fP bieżący czas w 12\-godzinnym formacie am/pm .TP \fB\eA\fP bieżący czas w 24\-godzinnym formacie GG:MM .TP \fB\eu\fP nazwa bieżącego użytkownika (username) .TP \fB\ev\fP wersja programu \fBbash\fP (np. 2.00) .TP \fB\eV\fP wydanie \fBbash\fP, wersja+poziom łat (np., 2.00.0) .TP \fB\ew\fP bieżący katalog roboczy, z .SM \fB$HOME\fP zapisanym w skrócie tyldą (używa wartości ze zmiennej .SM \fBPROMPT_DIRTRIM\fP) .TP \fB\eW\fP główna część nazwy bieżącego katalogu roboczego, z .SM \fB$HOME\fP zapisanym w skrócie tyldą .TP \fB\e!\fP numer tego polecenia w historii .TP \fB\e#\fP numer polecenia tego polecenia .TP \fB\e$\fP jeżeli efektywnym UID jest 0, to \fB#\fP, w przeciwnym razie \fB$\fP .TP \fB\e\fP\fInnn\fP znak odpowiadający ósemkowej liczbie \fInnn\fP .TP \fB\e\e\fP odwrotny ukośnik .TP \fB\e[\fP początek sekwencji znaków niedrukowalnych, która może służyć do osadzenia w zachęcie sekwencji sterujących terminalem .TP \fB\e]\fP koniec sekwencji znaków niedrukowalnych .PD .RE .PP 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 .SM \fBHISTORIA\fP), 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 \fBpromptvars\fP powłoki (zobacz opis polecenia \fBshopt\fP w sekcji .SM \fBWBUDOWANE\fP \fBPOLECENIA\fP \fBPOWŁOKI\fP poniżej). .SH 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ę \fB\-\-noediting\fP. Domyślnie, polecenia edycji wiersza są podobne do występujących w macsie. Dostępny jest także interfejs edycji wiersza w stylu vi. Edycja wiersza może zostać włączona w dowolnym czasie, przy użyciu opcji \fB\-o emacs\fP lub \fB\-o vi\fP wbudowanego polecenia \fBset\fP. By wyłączyć edycję wiersza po uruchomieniu powłoki, użyj opcji \fB+o emacs\fP lub \fB+o vi\fP wbudowanego polecenia \fBset\fP (zobacz .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP poniżej). .SS "Notacja Readline" .PP W tej sekcji, do zapisu naciśnięć klawiszy używana jest notacja w stylu emacsa. Klawisze Control zapisywane są jako C\-\fIklawisz\fP, np., C\-n oznacza Control\-N. Podobnie, \fImeta\fP klawisze zapisywane są jako M\-\fIklawisz\fP, zatem M\-x oznacza Meta\-X. (Na klawiaturach bez klawisza \fImeta\fP M\-\fIx\fP oznacza ESC \fIx\fP, tj. naciśnij klawisz Escape a następnie klawisz \fIx\fP. Czyni to ESC \fIprzedrostkiem meta\fP (meta prefix). Kombinacja M\-C\-\fIx\fP oznacza ESC\-Control\-\fIx\fP, lub naciśnij klawisz Escape, następnie przytrzymaj klawisz Control podczas naciskania klawisza \fIx\fP.) .PP Poleceniom readline można podawać numeryczne \fIargumenty\fP, 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. \fBkill\-line\fP) powoduje, że będzie ono działać odwrotnym kierunku (wstecz). Polecenia, których zachowanie z argumentami odbiega od podanego odnotowano poniżej. .PP Gdy polecenie opisano jako \fIusuwające\fP (killing) tekst, tekst ten jest zachowywany to ewentualnego późniejszego odzyskania (\fIprzywołania\fP 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). .SS "Inicjalizacja Readline" .PP Readline dostosowywane jest przy pomocy poleceń umieszczanych w pliku inicjującym (plik \fIinputrc\fP). Nazwa tego pliku brana jest z wartości zmiennej .SM \fBINPUTRC\fP. Jeżeli zmienna ta nie jest ustawiona, domyślną nazwą jest \fI~/.inputrc\fP. 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 konstrukcji dozwolonych w pliku inicjacji readline. Puste wiersze są ignorowane. Wiersze rozpoczynające się od \fB#\fP są komentarzami. Wiersze rozpoczynające się od \fB$\fP wskazują konstrukcje warunkowe. Inne wiersze wyznaczają przypisania klawiszy i ustawienia zmiennych. .PP Domyślne przypisania klawiszy można zmienić przy pomocy pliku \fIinputrc\fP. Inne programy posługujące się tą biblioteką mogą dodawać własne polecenia i przypisania. .PP Na przykład, umieszczenie .RS .PP M\-Control\-u: universal\-argument .RE lub .RS C\-Meta\-u: universal\-argument .RE w \fIinputrc\fP spowodowałoby, że M\-C\-u wywoływałoby polecenie readline \fIuniversal\-argument\fP. .PP Rozpoznawane są następujące symboliczne nazwy znaków: \fIRUBOUT\fP, \fIDEL\fP, \fIESC\fP, \fILFD\fP, \fINEWLINE\fP, \fIRET\fP, \fIRETURN\fP, \fISPC\fP, \fISPACE\fP i \fITAB\fP. .PP Oprócz nazw poleceń readline pozwala przypisywać klawisze do łańcucha. Łańcuch ten zostanie wstawiony po naciśnięciu klawisza (\fImakro\fP). .SS "Przypisania klawiszy Readline" .PP Składnia przypisań klawiszy sterujących w pliku \fIinputrc\fP 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 \fIMeta\-\fP lub \fIControl\-\fP, lub jako sekwencja klawiszy. .PP Przy użyciu postaci \fBnazwa\-klaw\fP:\^\fInazwa\-funkcji\fP lub \fImakro\fP, \fInazwa\-klaw\fP jest nazwą klawisza zapisaną w jęz.angielskim. Na przykład: .sp .RS Control\-u: universal\-argument .br Meta\-Rubout: backward\-kill\-word .br Control\-o: "> output" .RE .LP W powyższym przykładzie, \fIC\-u\fP przypisane jest do funkcji \fBuniversal\-argument\fP, \fIM\-DEL\fP przypisane jest do funkcji \fBbackward\-kill\-word\fP a \fIC\-o\fP przypisane do uruchamiania makra wyrażonego po prawej (to jest, wstawiania tekstu .if t \f(CW> output\fP .if n ``> output'' w wiersz). .PP W drugiej postaci, \fB"sekw\-klaw"\fP:\^\fInazwa\-funkcji\fP lub \fImakro\fP, \fBsekw\-klaw\fP różni się od \fBnazwa\-klaw\fP 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: .sp .RS "\eC\-u": universal\-argument .br "\eC\-x\eC\-r": re\-read\-init\-file .br "\ee[11~": "Klawisz funkcyjny 1" .RE .PP W tym przykładzie, \fIC\-u\fP jest ponownie przypisane do funkcji \fBuniversal\-argument\fP. \fIC\-x C\-r\fP przypisane jest do funkcji \fBre\-read\-init\-file\fP, zaś \fIESC [ 1 1 ~\fP przypisane jest do wstawienia tekstu .if t \f(CWFunction Key 1\fP. .if n ``Function Key 1''. .PP Oto pełny zestaw sekwencji specjalnych w stylu GNU Emacs .RS .PD 0 .TP \fB\eC\-\fP przedrostek control .TP \fB\eM\-\fP przedrostek meta .TP \fB\ee\fP znak escape .TP \fB\e\e\fP odwrotny ukośnik (backslash) .TP \fB\e"\fP dosłowny cudzysłów " .TP \fB\e\(aq\fP dosłowny apostrof \(aq .RE .PD .PP Oprócz sekwencji specjalnych w stylu GNU Emacsa, dostępny jest drugi zestaw sekwencji z użyciem odwrotnego ukośnika: .RS .PD 0 .TP \fB\ea\fP alarm (dzwonek) .TP \fB\eb\fP backspace .TP \fB\ed\fP delete .TP \fB\ef\fP znak wysuwu strony (form feed) .TP \fB\en\fP znak nowej linii .TP \fB\er\fP powrót karetki (carriage return) .TP \fB\et\fP tabulacja pozioma (horizontal tab) .TP \fB\ev\fP tabulacja pionowa (vertical tab) .TP \fB\e\fP\fInnn\fP ośmiobitowy znak, którego wartością jest ósemkowa liczba \fInnn\fP (jedna do trzech cyfr) .TP \fB\ex\fP\fIHH\fP ośmiobitowy znak, którego wartością jest szesnastkowa liczba \fInnn\fP (jedna lub dwie cyfry szesnastkowe) .RE .PD .PP 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 \(aq. .PP \fBBash\fP umożliwia wyświetlanie i zmianę bieżących przypisań klawiszy readline za pomocą wbudowanego polecenia \fBbind\fP. Tryb edycji można przełączać podczas używania interaktywnego przez posłużenie się opcją \fB\-o\fP wbudowanego polecenia \fBset\fP (zobacz poniżej .SM \fBWBUDOWANE\fP \fBPOLECENIA\fP \fBPOWŁOKI\fP). .SS "Zmienne Readline" .PP Readline posiada zmienne, których można używać do dodatkowego dostosowania jej zachowania. Zmienna może być ustawiana w pliku \fIinputrc\fP przy pomocy instrukcji postaci .RS .PP \fBset\fP \fInazwa\-zmiennej\fP \fIwartość\fP .RE .PP Z wymienionymi niżej wyjątkami, zmienne readline mogą przyjmować wartości \fBOn\fP lub \fBOff\fP (wielkość znaków nie ma znaczenia). Nierozpoznane nazwy zmiennych są ignorowane. Gdy odczytywana jest wartość zmiennej, puste lub wyzerowane wartości, "on" (bez względu na wielkość liter) i "1" są równoważne \fBOn\fP. Wszystkie pozostałe wartości są równoważne \fBOff\fP. A oto zmienne i ich wartości domyślne: .PP .PD 0 .TP \fBbell\-style (audible)\fP Kontroluje, co dzieje się gdy readline chce użyć sygnału dźwiękowego terminala. Jeśli ustawiona na \fBnone\fP, readline nigdy nie emituje sygnału. Jeśli ustawiona na \fBvisible\fP, readline posługuje się "widzialnym dzwonkiem" (visible bell), jeśli jest dostępny. Jeżeli ustawiona na \fBaudible\fP, readline usiłuje uzyskać sygnał dźwiękowy z terminala. .TP \fBbind\-tty\-special\-chars (On)\fP Jeśli ustawiona na \fBOn\fP, readline będzie próbował przypiąć znaki kontrolne traktowane w sposób specjalny przez sterownik terminala jądra do ich odpowiedników readline. .TP \fBblink\-matching\-paren (Off)\fP Jeśli ustawiona na \fBOn\fP, readline spróbuje na krótko przesunąć kursor do nawiasu otwierającego przy wstawieniu nawiasu zamykającego. .TP \fBcolored\-completion\-prefix (Off)\fP Jeśli ustawiona na \fBOn\fP, przy wypisywaniu dopasowań, readline wyświetli wspólny przedrostek dla zestawu możliwych dopasowań za pomocą różnych kolorów. Wzory kolorów są brane z wartości zmiennej środowiskowej \fBLS_COLORS\fP. .TP \fBcolored\-stats (Off)\fP Jeśli ustawiona na \fBOn\fP, readline wyświetli możliwe dopasowania za pomocą używając kolorów wskazujących na ich typ pliku. Wzory kolorów są brane z wartości zmiennej środowiskowej \fBLS_COLORS\fP. .TP \fBcomment\-begin (,,#\*(rq)\fP Łańcuch wstawiany, gdy wykonywane jest polecenie \fBinsert\-comment\fP readline. Polecenie to jest przypisane do \fBM\-#\fP w trybie emacs, zaś do \fB#\fP w trybie vi. .TP \fBcompletion\-display\-width (\-1)\fP Liczba kolumn ekranowych używanych do wyświetlenia możliwych dopasowań przy przeprowadzaniu dopasowań. Wartość jest ignorowana, jeśli jest mniejsza niż 0 lub większa niż szerokość ekranu terminala. Wartość 0 spowoduje, że dopasowania będą wyświetlane po jednym na wiersz. Domyślna wartość to \-1. .TP \fBcompletion\-ignore\-case (Off)\fP Jeżeli ustawiona na \fBOn\fP, readline wykonuje dopasowywanie i uzupełnianie nazw plików bez rozróżniania wielkości liter. .TP \fBcompletion\-map\-case (Off)\fP Jeśli ustawiona na \fBOn\fP i włączona jest \fBcompletion\-ignore\-case\fP readline traktuje znaki minusa \fI\-\fP) i podkreślnika (\fI_\fP) jako równoważne przy dokonywaniu dopasowania i uzupełniania nazw plików gdy ma to czynić bez względu na wielkość znaków. .TP \fBcompletion\-prefix\-display\-length (0)\fP Długość (w znakach) wspólnego przedrostka listy możliwych uzupełnień, które są wyświetlane bez modyfikacji. Gdy jest ustawiona na wartość większą od zera, wspólne przedrostki dłuższe od tej wartości są zastępowane wielokropkiem podczas wyświetlania dostępnych uzupełnień. .TP \fBcompletion\-query\-items (100)\fP Określa, kiedy użytkownik jest pytany o oglądanie takiej liczby możliwych uzupełnień tworzonych przez polecenie \fBpossible\-completions\fP. 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. .TP \fBconvert\-meta (On)\fP Jeśli ustawione na \fBOn\fP, 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 \fIprzedrostka meta\fP). Domyślnie ustawione na \fIOn\fP, ale readline zmieni ustawienie na \fIOff\fP jeśli locale zawierają znaki ośmiobitowe. .TP \fBdisable\-completion (Off)\fP Jeśli ustawione na \fBOn\fP, readline zabroni uzupełniania słów. Znaki uzupełniania zostaną wstawione w wiersz tak, jakby zostały przypisane do \fBself\-insert\fP. .TP \fBecho\-control\-characters (On)\fP Jeśli ustawione na \fBOn\fP, readline wyświetla znak odpowiadający sygnałowi otrzymanemu z klawiatury, w systemach które informują o obsługiwaniu tej właściwości. .TP \fBediting\-mode (emacs)\fP Kontroluje czy readline rozpoczyna pracę z zestawem przypisań klawiszy podobnym do \fIemacs\fP czy do \fIvi\fP. \fBediting\-mode\fP może być ustawiane albo na \fBemacs\fP albo na \fBvi\fP. .TP \fBenable\-bracketed\-paste (Off)\fP Gdy ustawione na \fBOn\fP, readline skonfiguruje terminal w sposób który pozwoli wstawiać wklejenia do bufora edycji jako pojedynczy łańcuch znaków, zamiast traktować każdy znak z osobna, jak byłby wprowadzany z klawiatury. W ten sposób unika się interpretacji wklejanych znaków jako poleceń edycji. .TP \fBenable\-keypad (Off)\fP Gdy jest ustawione na \fBOn\fP, 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. .TP \fBenable\-meta\-key (On)\fP Gdy jest ustawiona na \fBOn\fP, readline próbuje włączyć dostępne modyfikujące klawisze meta, o których obsługiwaniu zapewnia terminal, gdy są wywoływane. Na wielu terminalach meta klawisz jest używany do wysyłania znaków ośmiobitowych. .TP \fBexpand\-tilde (Off)\fP Jeżeli ustawione na \fBOn\fP, podczas próby uzupełniania słów readline wykonuje interpretację tyldy. .TP \fBhistory\-preserve\-point (Off)\fP Ustawione na \fBon\fP powoduje, że kod obsługi historii poleceń usiłuje w każdym wierszu poleceń odzyskanym za pomocą \fBprevious\-history\fP lub \fBnext\-history\fP umieścić punkt (bieżącą pozycję kursora) w tym samym miejscu. .TP \fBhistory\-size (unset)\fP Ustawia maksymalną liczbę wpisów historii zapisywanych w liście historii. Gdy jest ustawiona na zero, istniejące wpisy są usuwane, a nowe nie są zapisywane. Gdy wartość jest mniejsza od zera, liczba wpisów w liście historii jest nieograniczona. Domyślnie liczba wpisów w liście historii jest ustawiana na wartość zmiennej powłoki \fBHISTSIZE\fP. Jeśli spróbuje się ustawić \fBhistory\-size\fP na wartość nienumeryczną, maksymalna liczba wpisów historii zostanie ustawiona na 500. .TP \fBhorizontal\-scroll\-mode (Off)\fP Ustawione na \fBOn\fP 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. .TP \fBinput\-meta (Off)\fP Jeśli ustawiona na \fBOn\fP, 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 \fBmeta\-flag\fP jest synonimem tej zmiennej. Domyślnie ustawiona na \fIOff\fP, ale readline zmieni ustawienie na \fIOn\fP, jeśli locale zawierają znaki ośmiobitowe. .TP \fBisearch\-terminators (,,C\-[C\-J\*(rq)\fP Ł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ć \fIESC\fP i \fIC\-J\fP. .TP \fBkeymap (emacs)\fP Ustawia bieżące mapowanie klawiatury readline. Zestawami poprawnych mapowań są \fIemacs\fP, \fIemacs\-standard\fP, \fIemacs\-meta\fP, \fIemacs\-ctlx\fP, \fIvi\fP, \fIvi\-command\fP i \fIvi\-insert\fP. \fIvi\fP jest równoważnikiem dla \fIvi\-command\fP; \fIemacs\fP jest równoważne \fIemacs\-standard\fP. Domyślną wartością jest \fIemacs\fP; wartość \fBediting\-mode\fP również wpływa na domyślne mapowanie. .TP \fBemacs\-mode\-string (@)\fP Ten łańcuch jest wyświetlany zaraz po ostatnim wierszu pierwszej zachęty, gdy aktywny jest tryb edycji emacsa. Wartość jest interpretowana jak przypisania klawiszy, tak więc dostępne są standardowe przedrostki meta\- i control oraz sekwencje ucieczki korzystające z ukośnika. Sekwencje ucieczki \e1 i \e2 odpowiednio zaczynają i kończą znaki niedrukowalne, co można wykorzystać do osadzenia sekwencji kontrolnych terminala w tym łańcuchu. .TP \fBkeyseq\-timeout (500)\fP Określa czas, jaki \fIreadline\fP poczeka na znak, gdy odczytuje wieloznaczną sekwencję klawiszy (taką, która z dotychczasowego wejścia może utworzyć\ kompletną sekwencję klawiszy lub może otrzymać dodatkowe wejście, aby utworzyć kompletną, dłuższą sekwencję klawiszy). Jeżeli wejście nie zostanie wprowadzone w trakcie czasu oczekiwania, \fIreadline\fP użyje krótszej kompletnej sekwencji klawiszy. Wartość jest określona w milisekundach, dlatego 1000 oznacza, że \fIreadline\fP poczeka sekundę na dodatkowe wejście. Jeśli ta zmienna jest ustawiona na wartość mniejszą lub równą\ zero, lub na wartość nienumeryczną, \fIreadline\fP poczeka na wciśnięcie dodatkowego klawisza, aby zdecydować którą sekwencję klawiszy uzupełnić. .TP \fBmark\-directories (On)\fP Jeżeli ustawione na \fBOn\fP, to uzupełniane nazwy katalogów mają dołączany końcowy ukośnik. .TP \fBmark\-modified\-lines (Off)\fP Jeżeli ustawione na \fBOn\fP, wiersze historii, które zostały zmienione wyświetlane są z poprzedzającą je gwiazdką (\fB*\fP). .TP \fBmark\-symlinked\-directories (Off)\fP Gdy ustawiona na \fBOn\fP, uzupełniane nazwy będące dowiązaniami symbolicznymi do katalogów, mają dodany znak ukośnika (przedmiot wartości \fBmark\-directories\fP). .TP \fBmatch\-hidden\-files (On)\fP Ta zmienna, gdy jest ustawiona na \fBOn\fP, powoduje, że readline wykonując uzupełnianie nazw plików dopasowuje pliki, których nazwy zaczynają się od kropki `.' (pliki ukryte). Gdy ustawiona na \fBOff\fP, początkowa kropka w nazwie jaka ma być uzupełniona, musi być wpisana przez użytkownika. .TP \fBmenu\-complete\-display\-prefix (Off)\fP Gdy ustawiona na \fBOn\fP, uzupełnianie menu wyświetla wspólny przedrostek listy możliwych uzupełnień (który może być pusty) przed cyklicznym przełączaniem się między pozycjami z listy. .TP \fBoutput\-meta (Off)\fP Jeżeli ustawione na \fBOn\fP, readline wyświetla znaki z ustawionym ósmym bitem wprost zamiast jako sekwencje specjalne z meta\-przedrostkiem. Domyślnie ustawione na \fIOff\fP, ale readline zmieni ustawienie na \fIOn\fP jeśli locale zawiera znaki ośmiobitowe. .TP \fBpage\-completions (On)\fP Gdy ustawione na \fBOn\fP, readline używa wewnętrznego programu wyświetlającego podobnego do \fImore\fP, do wyświetlania pełnego ekranu możliwych uzupełnień na raz. .TP \fBprint\-completions\-horizontally (Off)\fP Jeżeli ustawione na \fBOn\fP, readline wyświetla dopasowane uzupełnienia w kolejności alfabetycznej poziomo, zamiast w dół ekranu. .TP \fBrevert\-all\-at\-newline (Off)\fP Gdy ustawione na \fBOn\fP, readline anuluje wszystkie zmiany w wierszach historii przed powrotem, gdy wykonywane jest \fBaccept\-line\fP. Domyślnie, wiersze historii mogą zostać zmodyfikowane i zachować swe listy anulowań poprzez odwołania do \fBreadline\fP. .TP \fBshow\-all\-if\-ambiguous (Off)\fP Zmienia to domyślne zachowanie funkcji uzupełniania. Jeżeli jest ustawione na \fBon\fP, 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. .TP \fBshow\-all\-if\-unmodified (Off)\fP Zmienna modyfikuje domyślne zachowanie funkcji uzupełnienia w sposób podobny do \fBshow\-all\-if\-ambiguous\fP. Gdy jest ustawiona na \fBOn\fP, słowa które mają więcej niż jedno możliwe uzupełnienie bez możliwych uzupełnień częściowych (możliwe uzupełnienia nie posiadają wspólnego przedrostka), są wypisywane natychmiast, bez wcześniejszego używania brzęczyka. .TP \fBshow\-mode\-in\-prompt (Off)\fP Jeśli jest ustawiona na \fBOn\fP, dodaje znak na początku znaku zachęty wskazujący tryb edycji: emacs (\fB@\fP), wiersz polecenia vi (\fB:\fP) lub tryb wstawiania vi (\fB+\fP). .TP \fBskip\-completed\-text (Off)\fP Gdy jest ustawiona na \fBOn\fP, modyfikuje domyślne zachowanie uzupełniania gdy do wiersza wstawiane jest pojedyncze dopasowanie. Jest to aktywne tylko podczas przeprowadzania uzupełnienia w środku słowa. Gdy jest włączona, readline nie wstawia znaków z uzupełniania, które pasują do znaków w miejscu wprowadzania w uzupełnianym słowie, dzięki czemu części słowa za kursorem, nie są duplikowane. .TP \fBvi\-cmd\-mode\-string ((cmd))\fP Ten łańcuch jest wyświetlany zaraz po ostatnim wierszu pierwszej zachęty, gdy aktywny jest tryb edycji vi w trybie poleceń. Wartość jest interpretowana jak przypisania klawiszy, tak więc dostępne są standardowe przedrostki meta\- i control oraz sekwencje ucieczki korzystające z ukośnika. Sekwencje ucieczki \e1 i \e2 odpowiednio zaczynają i kończą znaki niedrukowalne, co można wykorzystać do osadzenia sekwencji kontrolnych terminala w tym łańcuchu. .TP \fBvi\-ins\-mode\-string ((ins))\fP Ten łańcuch jest wyświetlany zaraz po ostatnim wierszu pierwszej zachęty, gdy aktywny jest tryb edycji vi w trybie wstawiania. Wartość jest interpretowana jak przypisania klawiszy, tak więc dostępne są standardowe przedrostki meta\- i control oraz sekwencje ucieczki korzystające z ukośnika. Sekwencje ucieczki \e1 i \e2 odpowiednio zaczynają i kończą znaki niedrukowalne, co można wykorzystać do osadzenia sekwencji kontrolnych terminala w tym łańcuchu. .TP \fBvisible\-stats (Off)\fP Jeżeli ustawione na \fBOn\fP, to przy wyświetlaniu możliwych uzupełnień do nazwy pliku zostanie dołączony znak określający typ pliku wskazywany przez \fIstat\fP(2). .PD .SS "Konstrukcje warunkowe Readline" .PP 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. .IP \fB$if\fP Konstrukcja \fB$if\fP 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. .RS .IP \fBmode\fP Postać \fBmode=\fP dyrektywy \fB$if\fP 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 \fBset keymap\fP, do ustawienia przypisań w mapowaniach \fIemacs\-standard\fP i \fIemacs\-ctlx\fP tylko jeśli readline uruchamia się w trybie emacs. .IP \fBterm\fP Postać \fBterm=\fP 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 \fB=\fP sprawdzane jest z zarówno pełną nazwą terminala, jaki i częścią jego nazwy przed pierwszym \fB\-\fP. Umożliwia to, na przykład, dopasowanie przez \fIsun\fP zarówno \fIsun\fP jak i \fIsun\-cmd\fP. .IP \fBaplikacja\fP Konstrukcja \fBaplikacja\fP służy do włączania ustawień specyficznych dla aplikacji. Każdy program korzystający z biblioteki readline ustawia nazwę aplikacji (\fIapplication name\fP), 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: .sp 1 .RS .nf \fB$if\fP Bash # Cytuj bieżące lub poprzednie słowo "\eC\-xq": "\eeb\e"\eef\e"" \fB$endif\fP .fi .RE .RE .IP \fB$endif\fP Polecenie to, jak widać w poprzednim przykładzie, kończy wykonywanie polecenia \fB$if\fP. .IP \fB$else\fP Polecenia w tej gałęzi dyrektywy \fB$if\fP wykonywane są gdy nie powiedzie się sprawdzenie warunku. .IP \fB$include\fP Dyrektywa ta pobiera jako argument pojedynczą nazwę pliku i odczytuje polecenia i przypisania z tego pliku. Na przykład, poniższa dyrektywa odczytałaby \fI/etc/inputrc\fP: .sp 1 .RS .nf \fB$include\fP \^ \fI/etc/inputrc\fP .fi .RE .SS Wyszukiwanie .PP Readline zapewnia polecenia do wyszukiwania w historii poleceń (zobacz poniżej .SM \fBHISTORIA\fP) wierszy zawierających zadany łańcuch. Istnieją dwa tryby wyszukiwania: \fIkrokowy\fP (incremental) i \fInie\-niekrokowy\fP (non\-incremental). .PP 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 \fBisearch\-terminators\fP 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. .PP 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 \fInowej linii\fP przerywa wyszukiwanie i akceptuje wiersz, wykonując skutkiem tego polecenie z listy historii. .PP 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. .PP 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. .SS "Nazwy poleceń Readline" .PP 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, \fIpunkt\fP oznacza bieżącą pozycję kursora, zaś \fIzaznaczenie\fP do pozycji kursora zapamiętanej przez polecenie \fBset\-mark\fP. Tekst pomiędzy punktem a zaznaczeniem nazywany jest \fIobszarem\fP. .SS "Polecenia ruchu" .PP .PD 0 .TP \fBbeginning\-of\-line (C\-a)\fP Przesuwa na początek bieżącego wiersza. .TP \fBend\-of\-line (C\-e)\fP Przesuwa na koniec wiersza. .TP \fBforward\-char (C\-f)\fP Przesuwa o znak w przód. .TP \fBbackward\-char (C\-b)\fP Przesuwa o znak wstecz. .TP \fBforward\-word (M\-f)\fP Przesuwa na koniec następnego słowa. Słowa złożone są ze znaków alfanumerycznych (liter i cyfr). .TP \fBbackward\-word (M\-b)\fP Przesuwa na początek bieżącego, lub poprzedniego, słowa. Słowa złożone są ze znaków alfanumerycznych (liter i cyfr). .TP \fBshell\-forward\-word\fP Przesuwa na koniec następnego słowa w przód. Słowa są oddzielone niecytowanymi metaznakami powłoki. .TP \fBshell\-backward\-word\fP Przesuwa na początek bieżącego lub poprzedniego słowa w tył. Słowa są oddzielone niecytowanymi metaznakami powłoki. .TP \fBclear\-screen (C\-l)\fP Czyści ekran pozostawiając bieżący wiersz na górze ekranu. Z argumentem, odświeża bieżący wiersz bez czyszczenia ekranu. .TP \fBredraw\-current\-line\fP Odświeża bieżący wiersz. .PD .SS "Polecenia operujące na historii" .PP .PD 0 .TP \fBaccept\-line (Newline, Return)\fP 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 .SM \fBHISTCONTROL\fP. Jeżeli wiersz jest zmienionym wierszem historii, to odtwarza wiersz historii do stanu pierwotnego. .TP \fBprevious\-history (C\-p)\fP Sprowadza poprzednie polecenie z listy historii, przesuwając się wstecz listy. .TP \fBnext\-history (C\-n)\fP Ściąga następne polecenie z listy historii, przesuwając się do przodu na liście. .TP \fBbeginning\-of\-history (M\-<)\fP Przesuwa na pierwszy wiersz w historii. .TP \fBend\-of\-history (M\->)\fP Przesuwa na koniec historii wprowadzania, tj. obecnie wprowadzanego wiersza. .TP \fBreverse\-search\-history (C\-r)\fP Wyszukuje wstecz poczynając od bieżącego wiersza i przesuwając się, w razie potrzeby, 'w górę' historii. Jest to wyszukiwanie krokowe. .TP \fBforward\-search\-history (C\-s)\fP Wyszukuje w przód poczynając od bieżącego wiersza i przesuwając się, w razie potrzeby, 'w dół' historii. Jest to wyszukiwanie krokowe. .TP \fBnon\-incremental\-reverse\-search\-history (M\-p)\fP Wyszukuje wstecz poczynając od bieżącego wiersza posługując się wyszukiwaniem nie\-krokowym podanego przez użytkownika łańcucha. .TP \fBnon\-incremental\-forward\-search\-history (M\-n)\fP Wyszukuje w przód poczynając od bieżącego wiersza posługując się wyszukiwaniem nie\-krokowym podanego przez użytkownika łańcucha. .TP \fBhistory\-search\-forward\fP Wyszukuje w przód w historii łańcucha znaków pomiędzy początkiem bieżącego wiersza a punktem. Jest to wyszukiwanie nie\-krokowe. .TP \fBhistory\-search\-backward\fP Wyszukuje wstecz w historii łańcucha znaków pomiędzy początkiem bieżącego wiersza a bieżącą pozycją kursora (\fIpunkt\fP). Jest to wyszukiwanie nie\-krokowe. .TP \fByank\-nth\-arg (M\-C\-y)\fP Wstawia pierwszy argument poprzedniego polecenia (zwykle drugie słowo z poprzedniego wiersza) w punkt (bieżącą pozycję kursora). Z argumentem \fIn\fP, wstawia \fIn\fP\-te słowo poprzedniego polecenia (słowa w poprzednim poleceniu zaczynają się od słowa 0). Argument ujemny wstawia \fIn\fP\-te słowo od końca poprzedniego polecenia. Po obliczeniu argumentu \fIn\fP, jest on wyodrębniany w taki sposób, jak gdyby podano opcję interpretowania historii "!\fIn\fP". .TP \fByank\-last\-arg (M\-.\^, M\-_\^)\fP Wstawia ostatni argument poprzedniego polecenia (ostatnie słowo poprzedniej pozycji historii). Z argumentem numerycznym, zachowuje się dokładnie tak, jak \fByank\-nth\-arg\fP. Kolejne wywołania \fByank\-last\-arg\fP przesuwają wstecz listy historii, wstawiając po kolei ostatni argument (lub słowo określone przez argument do pierwszego wywołania) każdego wiersza. Każdy argument numeryczny podany do pomyślnego wywołania określa kierunek ruchu w historii. Argument ujemny zmienia kierunek poruszania się (w tył lub w przód). Możliwości interpretacji historii są używane do wyodrębnienia ostatniego słowa, podobnie jak gdyby wybrano interpretację historii za pomocą "!$". .TP \fBshell\-expand\-line (M\-C\-e)\fP Interpretuj wiersz, jak czyni to powłoka. Wykonuje to aliasy i interpretację historii, jak również interpretację słów powłoki. Zobacz .SM \fBINTERPRETACJA HISTORII\fP poniżej. .TP \fBhistory\-expand\-line (M\-^)\fP Wykonuje interpretację powłoki w odniesieniu do bieżącego wiersza. Zobacz .SM \fBINTERPRETACJA HISTORII\fP poniżej. .TP \fBmagic\-space\fP Wykonuje interpretację powłoki w odniesieniu do bieżącego wiersza i wstawia spację. Zobacz .SM \fBINTERPRETACJA HISTORII\fP poniżej. .TP \fBalias\-expand\-line\fP Wykonuje interpretację aliasów w odniesieniu do bieżącego wiersza. Zobacz .SM \fBALIASY\fP powyżej. .TP \fBhistory\-and\-alias\-expand\-line\fP Wykonuje interpretację historii i aliasów w odniesieniu do bieżącego wiersza. .TP \fBinsert\-last\-argument (M\-.\^, M\-_\^)\fP Synonim \fByank\-last\-arg\fP. .TP \fBoperate\-and\-get\-next (C\-o)\fP Akceptuje do wykonania bieżący wiersz i ściąga do edycji następny względem bieżącego wiersz z historii. Argumenty są ignorowane. .TP \fBedit\-and\-execute\-command (C\-xC\-e)\fP Przywołuje edytor w bieżącym wierszu poleceń i wykonuje wynik jako polecenie powłoki. \fBBash\fP stara się wywołać .SM \fB$VISUAL\fP, .SM \fB$EDITOR\fP i \fIemacs\fP jako edytor, w tej kolejności. .PD .SS "Polecenia zmiany tekstu" .PP .PD 0 .TP \fIkoniec\-pliku\fP\fB (zwykle C\-d)\fP Znak wskazujący koniec pliku, jak ustawiony np. przez .if t \f(CWstty\fP. .if n ``stty''. Jeśli znak tej jest odczytany, gdy nie ma żadnych innych znaków w wierszu, a punkt jest początkiem wiersza, Readline interpretuje to jako koniec wejścia i zwraca .SM \fBEOF\fP. .TP \fBdelete\-char (C\-d)\fP Usuwa znak w tym punkcie. Jeżeli funkcja jest przypisana do tego samego znaku, jak znak \fBEOF\fP tty, jak często bywa z \fBC\-d\fP, efekt jest opisany powyżej. .TP \fBbackward\-delete\-char (Rubout)\fP Usuwa znak przed kursorem. Jeżeli podano argument numeryczny, zachowuje usunięty tekst na stosie usunięć. .TP \fBforward\-backward\-delete\-char\fP Usuwa znak pod kursorem, chyba że kursor znajduje się na końcu wiersza, wówczas usuwany jest znak przed kursorem. .TP \fBquoted\-insert (C\-q, C\-v)\fP Dodaje następny znak do wiersza dosłownie. W ten sposób wstawiane są znaki takie, jak na przykład \fBC\-q\fP. .TP \fBtab\-insert (C\-v TAB)\fP Wstawia znak tabulacji. .TP \fBself\-insert (a,\ b,\ A,\ 1,\ !,\ ...)\fP Wstawia wpisany znak. .TP \fBtranspose\-chars (C\-t)\fP 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ą. .TP \fBtranspose\-words (M\-t)\fP 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. .TP \fBupcase\-word (M\-u)\fP 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. .TP \fBdowncase\-word (M\-l)\fP 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. .TP \fBcapitalize\-word (M\-c)\fP 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. .TP \fBoverwrite\-mode\fP Przełącza tryb nadpisywania. Z jawnym, dodatnim argumentem liczbowym, przełącza do trybu nadpisywania. Z jawnym, niedodatnim argumentem liczbowym, przełącza do trybu wstawiania. Polecenie dotyczy jedynie trybu \fBemacs\fP, tryb \fBvi\fP nadpisuje w inny sposób. Każde odwołania do \fIreadline()\fP jest uruchamiane w trybie wstawiania. W trybie nadpisywania, znaki przypisane do \fBself\-insert\fP zastępują tekst pod kursorem, zamiast przesuwać go w prawą stronę. Znaki przypisane do \fBbackward\-delete\-char\fP zastępują znak przed kursorem spacją. Domyślnie, to polecenie nie jest przypisane. .PD .SS "Usuwanie i wklejanie" .PP .PD 0 .TP \fBkill\-line (C\-k)\fP Usuwa tekst od punktu do końca wiersza. .TP \fBbackward\-kill\-line (C\-x Rubout)\fP Usuwa wstecz do początku wiersza. .TP \fBunix\-line\-discard (C\-u)\fP .\" There is no real difference between this and backward-kill-line Usuwa wstecz od punktu do początku wiersza. Usuwany tekst jest zachowywany na stosie usunięć. .TP \fBkill\-whole\-line\fP Usuwa wszystkie znaki bieżącego wiersza, bez względu na położenie punktu. .TP \fBkill\-word (M\-d)\fP 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 \fBforward\-word\fP. .TP \fBbackward\-kill\-word (M\-Rubout)\fP Usuwa słowo sprzed punktu. Granice słów są takie same, jak używane przez \fBbackward\-word\fP. .TP \fBshell\-kill\-word\fP Usuwa od kursora do końca bieżącego słowa lub, jeśli kursor znajduje się pomiędzy słowami, do końca następnego słowa. Granice słów są takie same, jak używane przez \fBshell\-forward\-word\fP. .TP \fBshell\-backward\-kill\-word\fP Usuwa słowo sprzed punktu. Granice słów są takie same, jak używane przez \fBshell\-backward\-word\fP. .TP \fBunix\-word\-rubout (C\-w)\fP Usuwa słowo sprzed punktu, jako separatora słów używając białych znaków. Usunięty tekst zachowywany jest na stosie usunięć. .TP \fBunix\-filename\-rubout\fP Usuwa słowo sprzed punktu, jako separatora słów używając białych znaków i ukośnika.Usunięty tekst zachowywany jest na stosie usunięć. .TP \fBdelete\-horizontal\-space (M\-\e)\fP Usuwa wszystkie spacje i tabulatory wokół punktu. .TP \fBkill\-region\fP Usuwa tekst w bieżącym obszarze. .TP \fBcopy\-region\-as\-kill\fP Kopiuje tekst obszaru do bufora usuwania. .TP \fBcopy\-backward\-word\fP Kopiuje słowo sprzed punktu do bufora usuwania. Granice słów są takie same, jak dla \fBbackward\-word\fP. .TP \fBcopy\-forward\-word\fP Kopiuje słowo występujące po punkcie do bufora usuwania. Granice słów są takie same, jak dla \fBforward\-word\fP. .TP \fByank (C\-y)\fP Wkleja wierzchołek stosu usunięć do bufora w punkcie (w miejscu kursora). .TP \fByank\-pop (M\-y)\fP Obraca stos usunięć i wkleja nowy wierzchołek. Działa tylko następując po \fByank\fP lub \fByank\-pop\fP. .PD .SS "Argumenty numeryczne" .PP .PD 0 .TP \fBdigit\-argument (M\-0, M\-1, ..., M\-\-)\fP Dodaje tę cyfrę do już składanego argumentu lub rozpoczyna nowy argument. M\-\- rozpoczyna argument ujemny. .TP \fBuniversal\-argument\fP 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 \fBuniversal\-argument\fP 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. .PD .SS Uzupełnianie .PP .PD 0 .TP \fBcomplete (TAB)\fP Usiłuje przeprowadzić uzupełnianie tekstu przed punktem. \fBBash\fP próbuje uzupełniania traktując tekst kolejno: jako zmienną (jeżeli tekst zaczyna się od \fB$\fP), nazwę użytkownika (jeśli tekst zaczyna się od \fB~\fP), nazwę hosta (jeśli tekst zaczyna się od \fB@\fP) 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. .TP \fBpossible\-completions (M\-?)\fP Pokazuje możliwe uzupełnienia tekstu przed punktem. .TP \fBinsert\-completions (M\-*)\fP Wstawia przed punktem wszystkie uzupełnienia tekstu, które zostałyby wygenerowane przez \fBpossible\-completions\fP. .TP \fBmenu\-complete\fP Podobne do \fBcomplete\fP, ale zastępuje słowo, jakie ma zostać uzupełnione pojedynczym uzupełnieniem z listy możliwych. Powtarzane wykonanie \fBmenu\-complete\fP 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 \fBbell\-style\fP) i przywracany jest pierwotny tekst. Argument \fIn\fP przesuwa \fIn\fP 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 \fBTAB\fP, ale domyślnie nie jest przypisane. .TP \fBmenu\-complete\-backward\fP Podobne do \fBmenu\-complete\fP, ale przemieszcza się wstecz po liście możliwych uzupełnień, identycznie gdyby \fBmenu\-complete\fP podano ujemny argument. To polecenie jest domyślnie nieprzypisane. .TP \fBdelete\-char\-or\-list\fP Usuwa znak pod kursorem, jeśli nie jest to początek bądź koniec wiersza (jak \fBdelete\-char\fP). Na końcu wiersza, zachowuje się identycznie jak \fBpossible\-completions\fP. To polecenie jest domyślnie nieprzypisane. .TP \fBcomplete\-filename (M\-/)\fP Usiłuje wykonać uzupełnianie nazw plików na tekście sprzed kursora. .TP \fBpossible\-filename\-completions (C\-x /)\fP Pokazuje możliwe uzupełnienia tekstu sprzed kursora, traktując go jak nazwę pliku. .TP \fBcomplete\-username (M\-~)\fP Usiłuje wykonać uzupełnianie tekstu sprzed kursora, traktując go jak nazwę użytkownika. .TP \fBpossible\-username\-completions (C\-x ~)\fP Pokazuje możliwe uzupełnienia tekstu sprzed kursora, traktując go jak nazwę użytkownika. .TP \fBcomplete\-variable (M\-$)\fP Usiłuje wykonać uzupełnianie tekstu sprzed kursora, traktując go jak zmienną powłoki. .TP \fBpossible\-variable\-completions (C\-x $)\fP Pokazuje możliwe uzupełnienia tekstu sprzed kursora, traktując go jak zmienną powłoki. .TP \fBcomplete\-hostname (M\-@)\fP Usiłuje wykonać uzupełnianie tekstu sprzed kursora, traktując go jak nazwę hosta. .TP \fBpossible\-hostname\-completions (C\-x @)\fP Pokazuje możliwe uzupełnienia tekstu sprzed kursora, traktując go jak nazwę hosta. .TP \fBcomplete\-command (M\-!)\fP 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. .TP \fBpossible\-command\-completions (C\-x !)\fP Pokazuje możliwe uzupełnienia tekstu sprzed kursora, traktując go jak nazwę polecenia. .TP \fBdynamic\-complete\-history (M\-TAB)\fP Usiłuje uzupełnić tekst sprzed kursora, w celu odnalezienia możliwych uzupełnień porównując go z wierszami listy historii. .TP \fBdabbrev\-expand\fP Usiłuje wykonać uzupełnienie menu na tekście sprzed kursora, w celu odnalezienia możliwych uzupełnień porównując go z wierszami listy historii. .TP \fBcomplete\-into\-braces (M\-{)\fP 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 \fBInterpretacja nawiasów\fP). .PD .SS "Makra klawiaturowe" .PP .PD 0 .TP \fBstart\-kbd\-macro (C\-x (\^)\fP Rozpoczyna zachowywanie wpisywanych znaków w bieżącym makrze klawiaturowym. .TP \fBend\-kbd\-macro (C\-x )\^)\fP Zatrzymuje zachowywanie wpisywanych znaków w bieżącym makrze klawiaturowym i przechowuje definicję. .TP \fBcall\-last\-kbd\-macro (C\-x e)\fP Ponownie wykonuje zdefiniowane makro klawiaturowe, powodując pojawianie się znaków makra tak, jakby zostały wpisane z klawiatury. .TP \fBprint\-last\-kbd\-macro ()\fP Wypisuje ostatnie makro klawiaturowe, w formacie przeznaczonym do pliku \fIinputrc\fP. .PD .SS Różne .PP .PD 0 .TP \fBre\-read\-init\-file (C\-x C\-r)\fP Odczytuje zawartość pliku \fIinputrc\fP i dołącza wszystkie znalezione tam przypisania klawiszy i zmiennych. .TP \fBabort (C\-g)\fP Zaniechuje bieżącego polecenia edycji i emituje sygnał dźwiękowy terminala (zgodnie z ustawieniami \fBbell\-style\fP). .TP \fBdo\-uppercase\-version (M\-a, M\-b, M\-\fP\fIx\fP\fB, ...)\fP Jeżeli poprzedzony przedrostkiem meta znak \fIx\fP jest małą literą, uruchamia plecenie, które jest przypisane do odpowiedniej wielkiej litery. .TP \fBprefix\-meta (ESC)\fP Poprzedza przedrostkiem meta następny wpisany znak. .SM \fBESC\fP \fBf\fP jest równoważne \fBMeta\-f\fP. .TP \fBundo (C\-_, C\-x C\-u)\fP Krokowe cofnięcie operacji, pamiętane odrębnie dla każdego wiersza. .TP \fBrevert\-line (M\-r)\fP Cofa wszystkie zmiany wykonane na tym wierszu. Podobne do wykonania polecenia \fBundo\fP wystarczająco wiele razy, by przywrócić wiersz do stanu początkowego. .TP \fBtilde\-expand (M\-&)\fP Wykonuje interpretację tyldy w odniesieniu do bieżącego słowa. .TP \fBset\-mark (C\-@, M\-)\fP stawia znacznik (mark) w bieżącym punkcie. Jeżeli podano argument numeryczny, znacznik jest ustawiany na takiej pozycji. .TP \fBexchange\-point\-and\-mark (C\-x C\-x)\fP Zamień punkt ze znacznikiem. Aktualna pozycja kursora ustawiana jest na zapamiętaną, a dotychczasowa pozycja zachowywana jako znacznik. .TP \fBcharacter\-search (C\-])\fP Odczytywany jest znak a punkt przesuwa się na następne wystąpienie tego znaku. Licznik ujemny wyszukuje poprzednie wystąpienia. .TP \fBcharacter\-search\-backward (M\-C\-])\fP Odczytywany jest znak a punkt przesuwa się na poprzednie wystąpienie tego znaku. Licznik ujemny wyszukuje kolejne wystąpienia. .TP \fBskip\-csi\-sequence\fP Odczytuje wystarczająco wiele znaków, aby pobrać sekwencje wielu klawiszy, np. zdefiniowaną przez klawisze takie jak Home i End. Takie sekwencje zaczynają się znacznikiem sekwencji kontrolnej (Control Sequence Indicator \- CSI), z reguły ESC\-[. Jeśli taka sekwencja jest przypisana do "\e[", to klawisze wchodzące w skład tej sekwencji nie będą działać (chyba że zostały jawnie przypisane do polecenia readline) zamiast wstawiać niepowiązane znaki do bufora edycyjnego. Domyślnie, to polecenie jest nieprzypisane, ale przypisanie powinno przeważnie odnosić się do ESC\-[. .TP \fBinsert\-comment (M\-#)\fP Bez argumentu numerycznego, na początek bieżącego wiersza wstawiana jest wartość zmiennej \fBcomment\-begin\fP readline. Jeśli podano numeryczny argument, to polecenia działa jak przełącznik: jeśli znaki na początku wiersza nie pasują do wartości \fBcomment\-begin\fP, to wartość jest wstawiana, w przeciwnym wypadku znaki w \fBcomment\-begin\fP są usuwane z początku każdego wiersza. W każdym przypadku wiersz jest akceptowany tak, jakby wprowadzono znak nowej linii. Domyślna wartość \fBcomment\-begin\fP powoduje, że polecenie to czyni bieżący wiersz komentarzem powłoki. Jeśli numeryczny argument powoduje usunięcie znaku komentarza, to dany wiersze będzie wykonany przez powłokę. .TP \fBglob\-complete\-word (M\-g)\fP Słowo sprzed kursora jest traktowane jako wzorzec rozwijania nazw plików, bez jawnego dodania gwiazdki (asterysku). Ten wzorzec może zostać użyty do wygenerowania listy pasujących nazw plików do możliwych uzupełnień. .TP \fBglob\-expand\-word (C\-x *)\fP 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. Jeśli podano numeryczny argument, to przed rozwijaniem nazw plików dodawana jest gwiazdka (asterysk). .TP \fBglob\-list\-expansions (C\-x g)\fP Wyświetlana jest lista rozwinięć, jakie zostałyby utworzone przez \fBglob\-expand\-word,\fP a wiersz jest ponownie wyświetlany. Jeśli podano numeryczny argument, to przed rozwijaniem nazw plików dodawana jest gwiazdka (asterysk). .TP \fBdump\-functions\fP 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 \fIinputrc\fP. .TP \fBdump\-variables\fP 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 \fIinputrc\fP. .TP \fBdump\-macros\fP 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 \fIinputrc\fP. .TP \fBdisplay\-shell\-version (C\-x C\-v)\fP Wyświetla informację o wersji aktualnego egzemplarza \fBbash\fP. .PD .SS "Programowalne uzupełnianie" .PP Gdy następuje próba uzupełnienia słowa dla argumentu polecenia, dla którego zdefiniowano specyfikację uzupełniania (completion specification, \fIcompspec\fP) przy pomocy wbudowanego polecenia \fBcomplete\fP (zobacz .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP poniżej), wywoływane są usługi programowalnego uzupełniania. .PP Po pierwsze, identyfikowana jest nazwa polecenia. Jeśli słowo polecenia jest łańcuchem pustym (próba uzupełniania następuje na początku pustego wiersza), używany jest każdy compspec zdefiniowany opcją \fB\-E\fP do \fBcomplete\fP. 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. Jeśli powyższe wyszukiwania nie dają wyniku w compspec, to jako domyślne używane są compspec zdefiniowane opcją \fB\-D\fP do \fBcomplete\fP. .PP 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 \fBbash\fPa, jak opisano powyżej w \fBUzupełnianie\fP. .PP 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 \fB\-f\fP lub \fB\-d\fP, do filtrowania dopasowań wykorzystywana jest zmienna powłoki .SM \fBFIGNORE\fP. .PP W następnej kolejności tworzone są ewentualne uzupełnienia określone przez wzorzec rozwinięcia nazw plików opcji \fB\-G\fP. Słowa tworzone przez wzorzec nie muszą pasować do uzupełnianego słowa. Zmienna powłoki .SM \fBGLOBIGNORE\fP nie jest używana do filtrowania dopasowań, ale zmienna .SM \fBFIGNORE\fP jest używana. .PP Następnie, brany jest pod uwagę łańcuch podany jako argument opcji \fB\-W\fP. Łańcuch jest najpierw rozbijany przy zastosowaniu znaków ze zmiennej specjalnej .SM \fBIFS\fP 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 i podstawiania wyników poleceń, jak opisano powyżej w sekcji .SM \fBINTERPRETACJA\fP. Wyniki są rozbijane z zastosowaniem reguł opisanych powyżej w sekcji \fBPodział na słowa\fP. Wyniki interpretacji są dopasowywane przedrostkiem z uzupełnianym słowem, a pasujące słowa stają się możliwymi uzupełnieniami. .PP Po utworzeniu tych dopasowań, wywoływana jest funkcja lub polecenie określone opcjami \fB\-F\fP i \fB\-C\fP. Podczas wywoływania polecenia czy funkcji, zmiennym .SM \fBCOMP_LINE\fP, .SM \fBCOMP_POINT\fP, .SM \fBCOMP_KEY\fP i .SM \fBCOMP_TYPE\fP przypisywane są wartości, jak opisano to powyżej w sekcji \fBZmienne powłoki\fP. Jeżeli wywoływana jest funkcja powłoki, ustawiane są również zmienne .SM \fBCOMP_WORDS\fP i .SM \fBCOMP_CWORD\fP. Kiedy wywoływana jest funkcja czy polecenie, pierwszym argumentem (\fB$1\fP) staje się nazwa polecenia, którego argumenty są uzupełniane, drugim argumentem (\fB$2\fP) \-\- uzupełniane słowo, a trzecim słowem (\fB$3\fP) 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ń. .PP W pierwszej kolejności wywoływana jest funkcja określona przez \fB\-F\fP. Do tworzenia dopasowań może ona korzystać z dowolnych możliwości powłoki, łącznie z opisanym poniżej poleceniem wbudowanym \fBcompgen\fP. Funkcja musi umieścić możliwe uzupełnienia w zmiennej tablicowej .SM \fBCOMPREPLY\fP, jedno na element tablicy. .PP Następnie, wywoływane jest polecenie określone opcją \fB\-C\fP, 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. .PP Po utworzeniu wszelkich możliwych uzupełnień, do listy tej stosowany jest filtr określony opcją \fB\-X\fP. Filtr jest takim wzorcem, jak używany przy rozwijaniu nazw ścieżkowych. Znak \fB&\fP we wzorcu zastępowany jest tekstem uzupełnianego słowa. Literał \fB&\fP 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 \fB!\fP daje zaprzeczenie wzorca. Będą wówczas usuwane uzupełnienia nie pasujące do wzorca. Jeśli włączona jest opcja powłoki \fBnocasematch\fP, to dopasowanie jest wykonywane bez uwzględniania wielkości liter. .PP Na koniec, do każdego elementu listy dodawane są przedrostek i przyrostek określone opcjami \fB\-P\fP i \fB\-S\fP, a wynik zwracany jest do kodu uzupełniania readline jako lista możliwych uzupełnień. .PP Jeśli poprzednio zastosowane działania nie utworzyły żadnych dopasowań, zaś przy definiowaniu compspec podano opcję \fB\-o dirnames\fP polecenia \fBcomplete\fP, to dokonywana jest próba uzupełnienia nazwy katalogu. .PP Jeśli do \fBcomplete\fP podano opcję \fB\-o plusdir\fP gdy istnieje zdefiniowane compspec, to próba dopasowania nazw katalogów jest przeprowadzana, a ewentualne dopasowania są dodawane do wyników innych akcji. .PP 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 \fBbash\fP, a domyślne uzupełnianie nazw ścieżkowych przez readline jest wyłączone. Jeśli przy definiowaniu compspec podano opcję \fB\-o bashdefault\fP, to jeżeli compspec nie utworzy żadnych uzupełnień, wykonane zostanie domyślne uzupełnienia \fBbash\fP. Jeśli przy definiowaniu compspec podano opcję \fB\-o default\fP polecenia \fBcomplete\fP, to jeżeli compspec nie utworzy żadnych uzupełnień, wykonane zostanie domyślne uzupełnianie z readline (i, jeśli próbowano domyślnych uzupełnień \fBbash\fP, także one). .PP Gdy compspec informuje o żądaniu uzupełnienia nazwy katalogu, funkcje programowalnego uzupełnienia wymuszają na readline dodanie ukośnika, do uzupełnianych nazw będących dowiązaniami symbolicznymi do katalogów, które są przedmiotem wartości zmiennej \fBmark\-direstories\fP readline, niezależnie od ustawienia zmiennej \fBmark\-symlinked\-directories\fP readline. .PP Istnieje pewna obsługa uzupełnień modyfikowanych dynamicznie. Jest to szczególnie użyteczne w kombinacji z domyślnym uzupełnianiem z opcją \fBcomplete \-D\fP. W przypadku funkcji powłoki, wykonywanych jako odpowiedzialne za uzupełnianie, możliwe jest poinformowanie że uzupełnienie powinno być ponowione za pomocą kodu zakończenia równego 124. Jeśli funkcja powłoki zwróci 124 i zmieni powiązany compspec poleceniem, którego próbę uzupełnienia podjęto (podanego jako pierwszy argument gdy funkcja jest wykonywana), programowalne uzupełnianie rozpoczyna od początku, próbując znaleźć nowy compspec dla polecenia. Pozwala na ustawianie uzupełnień budowanych dynamicznie po wykonanej próbie uzupełnienia, zamiast ładowania ich wszystkich naraz. .PP Przykładowo, przyjmując że istnieje biblioteka składająca się z compspec, każda przechowywana w pliku odpowiadającym nazwie polecenia, to następująca domyślna funkcja uzupełnienia załaduje uzupełnienia dynamicznie: .PP \f(CW_completion_loader()\fP .br \f(CW{\fP .br \f(CW . "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124\fP .br \f(CW}\fP .br \f(CWcomplete \-D \-F _completion_loader \-o bashdefault \-o default\fP .br \fP .SH HISTORIA Jeżeli włączona jest opcja \fB\-o history\fP wbudowanego polecenia \fBset\fP, to powłoka zapewnia dostęp do \fIhistorii poleceń\fP, listy poleceń poprzednio wprowadzonych. Wartość zmiennej \fBHISTSIZE\fP wykorzystywana jest jako liczba poleceń do zachowania na liście historii. Zachowywany jest tekst ostatnich .SM \fBHISTSIZE\fP poleceń (domyślnie 500). Powłoka przechowuje każde polecenie na liście przed podstawieniem wartości parametrów i zmiennych (zobacz powyżej .SM \fBINTERPRETACJA\fP), ale przed wykonaniem interpretacji historii, w zależności od wartości zmiennych powłoki .SM \fBHISTIGNORE\fP i .SM \fBHISTCONTROL\fP. .PP Przy uruchamianiu, historia inicjowana jest z pliku o nazwie wskazanej zmienną .SM \fBHISTFILE\fP (domyślnie \fI~/.bash_history\fP). Plik o nazwie wziętej z wartości .SM \fBHISTFILE\fP jest obcinany, jeśli zachodzi potrzeba, by zawierał nie więcej wierszy niż określono to wartością zmiennej .SM \fBHISTFILESIZE\fP. Jeśli \fBHISTFILESIZE\fP jest nieustawione lub ustawione na zero, wartość nienumeryczną lub wartość numeryczną mniejszą od zera, plik historii nie jest obcinany. Gdy plik historii jest odczytywany, wiersze zaczynające się od znaku komentarza historii, po którym występuje bezpośrednio cyfra, są interpretowane jako czasy poprzedzającego wcześniejszego historii. Czasy te mogą być opcjonalnie wyświetlane, w zależności od wartości zmiennej .SM \fBHISTTIMEFORMAT\fP. Podczas kończenia pracy powłoki z włączoną historią, ostatnie .SM \fB$HISTSIZE\fP wierszy kopiowane jest z listy historii do .SM \fB$HISTFILE\fP. Jeżeli włączona jest opcja powłoki \fBhistappend\fP (zobacz opis \fBshopt\fP w sekcji .SM \fBWBUDOWANE\fP \fBPOLECENIA\fP \fBPOWŁOKI\fP poniżej), to wiersze są dodawane na koniec pliku historii, w przeciwnym razie plik historii jest nadpisywany. Jeżeli .SM \fBHISTFILE\fP nie jest ustawione lub plik historii nie daje się zapisać, to historia nie jest zachowywana. Jeśli zmienna .SM \fBHISTTIMEFORMAT\fP jest ustawiona, to pieczątki czasowe oznaczone znakiem komentarza historii są zapisywane do pliku historii, tak więc mogą być one zachowywane pomiędzy sesjami powłoki. Znak historii komentarza jest wykorzystywany w celu odróżnienia pieczątek czasowych od innych wierszy historii. Po zapisaniu, plik historii jest obcinany, by nie zawierał więcej niż .SM \fBHISTFILESIZE\fP wierszy. Jeśli .SM \fBHISTFILESIZE\fP nie jest ustawione albo jest ustawione na null, wartość nienumeryczną lub wartość numeryczną mniejszą od zera, to plik historii nie jest obcinany. .PP Do edycji lub ponownego wykonania części listy historii można korzystać z wbudowanego polecenia \fBfc\fP (zobacz .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP poniżej). Wbudowanego polecenia \fBhistory\fP 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. .PP Powłoka umożliwia kontrolę nad tym, jakie polecenia są zachowywane na liście. Można ustawić zmienne .SM \fBHISTCONTROL\fP i .SM \fBHISTIGNORE\fP, co spowoduje, że powłoka będzie zachowywać tylko podzbiór wprowadzonych poleceń. Opcja powłoki \fBcmdhist\fP, 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 \fBlithist\fP powoduje, że powłoka będzie zachowywać polecenia z osadzonymi znakami nowej linii zamiast średników. Zobacz opis wbudowanego \fBshopt\fP poniżej, w sekcji .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP, gdzie znajdziesz informacje o ustawianiu i kasowaniu opcji powłoki. .SH "INTERPRETACJA HISTORII" .PP Powłoka obsługuje funkcję interpretacji historii, podobną do interpretacji historii w \fBcsh\fP. 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 \fB+H\fP wbudowanego polecenia \fBset\fP (zobacz poniżej .SM \fBWBUDOWANE POLECENIA POWŁOKI\fP). Powłoki nie\-interaktywne domyślnie nie wykonują interpretacji historii. .PP 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. .PP 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 \fIzdarzeniem\fP (event), a jego części na których wykonywane są działania są \fIsłowami\fP. Dostępne są różne \fImodyfikatory\fP 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 \fImetaznakami\fP 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 \^\fB!\fP\^. Znak rozwijający historię cytować mogą wyłącznie odwrotny ukośnik (\^\fB\e\fP\^) i pojedyncze cudzysłowy, lecz znak rozwijający historię jest traktowany jako cytowany również wówczas, gdy występuje bezpośrednio przed kończącym cudzysłowem, przy cytowaniu za pomocą podwójnych cudzysłowów. .PP Następujące znaki powstrzymują interpretację historii jeśli zostaną znalezione bezpośrednio za znakiem interpretacji historii, nawet jeśli jest niecytowany: spacja, tabulacja, znak nowego wiersza, znak powrotu karetki i \fB=\fP. Jeśli włączono opcję powłoki \fBextglob\fP, to \fB(\fP również zapobiegnie interpretacji. .PP Kilka opcji powłoki ustawianych przy pomocy \fBshopt\fP może służyć do śledzenia działania interpretacji historii. Jeżeli opcja \fBhistverify\fP powłoki jest włączona (zobacz opis wbudowanego \fBshopt\fP) i używane jest \fBreadline\fP, 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 \fBreadline\fP w celu dalszej modyfikacji. Jeżeli wykorzystywane jest \fBreadline\fP i włączona jest opcja \fBhistreedit\fP, to zakończone niepowodzeniem podstawienie historii zostanie ponownie załadowane do bufora edycyjnego \fBreadline\fP w celu poprawienia. Opcją \fB\-p\fP wbudowanego polecenia \fBhistory\fP można posłużyć się do oglądnięcia, co zrobi interpretacja historii przed jej zastosowaniem. Opcji \fB\-s\fP wbudowanego polecenia \fBhistory\fP 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ń. .PP Powłoka pozwala na kontrolowanie różnych znaków stosowanych przez mechanizm interpretacji historii (zobacz opis \fBhistchars\fP powyżej, w sekcji \fBZmienne powłoki\fP). Do oznaczania pieczątek czasowych, powłoka używa znaku komentarza historii podczas zapisywania pliku historii. .SS "Desygnatory zdarzeń (Event Designators)" .PP Desygnator zdarzenia jest odwołaniem do pozycji wiersza poleceń na liście historii. O ile odwołanie nie jest absolutne, zdarzenia są relatywne w stosunku do bieżącej pozycji w liście historii. .PP .PD 0 .TP \fB!\fP Rozpoczyna podstawianie historii, z wyjątkiem sytuacji, gdy występuje po nim odstęp, znak nowej linii, = lub ( (gdy włączono opcję powłoki \fBextglob\fP używając wbudowanego \fBshopt\fP). .TP \fB!\fP\fIn\fP Wskazuje na \fIn\fP\-ty wiersz poleceń. .TP \fB!\-\fP\fIn\fP Wskazuje na wiersz poleceń bieżący minus \fIn\fP. .TP \fB!!\fP Wskazuje na poprzednie polecenie. jest to synonim `!\-1'. .TP \fB!\fP\fIłańcuch\fP Wskazuje na ostatnie poleceniem rozpoczynające się od \fIłańcucha\fP. .TP \fB!?\fP\fIłańcuch\fP\fB[?]\fP Wskazuje na ostatnie polecenie poprzedzające bieżącą pozycję w liście historii, zawierające \fIłańcuch\fP. Kończące \fB?\fP można pominąć jeśli bezpośrednio po \fIłańcuchu\fP występuje znak nowej linii. .TP \fB\d\s+2^\s-2\u\fP\fIłańcuch1\fP\fB\d\s+2^\s-2\u\fP\fIłańcuch2\fP\fB\d\s+2^\s-2\u\fP Szybkie podstawianie. Powtarza ostatnie polecenie, wymieniając \fIłańcuch1\fP na \fIłańcuch2\fP. Równoważnik ,,!!:s/\fIłańcuch1\fP/\fIłańcuch\fP/\*(rq (zobacz poniżej \fBModyfikatory\fP). .TP \fB!#\fP Cały wiersz poleceń wpisany do tego momentu. .PD .SS "Desygnatory słów (Word Designators)" .PP Desygnatory słów służą do wybierania ze zdarzenia żądanych słów. Dwukropek \fB:\fP oddziela określenie zdarzenia od desygnatora słowa. Może być pominięty jeśli desygnator słowa rozpoczyna się od \fB^\fP, \fB$\fP, \fB*\fP, \fB\-\fP lub \fB%\fP. 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. .PP .PD 0 .TP \fB0 (zero)\fP Słowo zerowe. Dla powłoki jest to słowo polecenia. .TP \fIn\fP \fIn\fP\-te słowo. .TP \fB^\fP Pierwszy argument. To znaczy, słowo 1. .TP \fB$\fP Ostatnie słowo. Jest to zwykle ostatni argument, ale jest interpretowany jako zerowe słowo, gdy jest tylko jedno słowo w wierszu. .TP \fB%\fP Słowo dopasowane przez ostatnie wyszukanie `?\fIłańcuch\fP?'. .TP \fIx\fP\fB\-\fP\fIy\fP Zakres słów; `\-\fIy\fP' jest skróconym `0\-\fIy\fP'. .TP \fB*\fP Wszystkie słowa prócz zerowego. jest to synonim dla `\fI1\-$\fP'. Nie jest błędem użycie \fB*\fP jeśli w zdarzeniu jest tylko jedno słowo; w tym przypadku zwracany jest łańcuch pusty. .TP \fBx*\fP Skrót od \fIx\-$\fP. .TP \fBx\-\fP Skrót od \fIx\-$\fP podobnie jak \fBx*\fP, ale pomija ostatnie słowo. .PD .PP jeśli desygnator słowa podano bez określenia zdarzenia, za zdarzenie przyjmowane jest poprzednie polecenie. .SS Modyfikatory .PP Po opcjonalnym desygnatorze słowa może pojawić się sekwencja jednego lub więcej poniższych modyfikatorów, każdy poprzedzony dwukropkiem `:'. .PP .PD 0 .PP .TP \fBh\fP Usuwa końcową składową nazwy pliku, pozostawiając tylko początek. .TP \fBt\fP Usuwa wszystkie początkowe składowe nazwy pliku, pozostawiając koniec. .TP \fBr\fP Usuwa kończący przyrostek postaci \fI.xxx\fP, pozostawiając główną część nazwy (basename). .TP \fBe\fP Usuwa wszystko prócz końcowego przyrostka. .TP \fBp\fP Wypisuje nowe polecenie, ale go nie wykonuje. .TP \fBq\fP Cytuje podstawiane słowa, zabezpieczając je przed dalszym podstawianiem. .TP \fBx\fP Cytuje podstawiane słowa jak \fBq\fP, ale rozbija na słowa w miejscach \fBodstępów\fP i znaków nowej linii. .TP \fBs/\fP\fIstary\fP\fB/\fP\fInowy\fP\fB/\fP Zastępuje \fInowym\fP pierwsze wystąpienie \fIstarego\fP 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 \fInowym\fP i \fIstarym\fP przy pomocy pojedynczego odwrotnego ukośnika. Jeżeli w \fInowym\fP pojawia się &, to jest zastępowany \fIstarym\fP. Pojedynczy odwrotny ukośnik będzie cytował &. Jeżeli \fIstary\fP jest pusty, to ustawiany jest na ostatni podstawiany \fIstary\fP lub, jeśli nie było poprzednich podstawień historii, ostatni \fIłańcuch\fP w wyszukiwaniu \fB!?\fP\fIłańcuch\fP\fB[?]\fP. .TP \fB&\fP Powtarza poprzednie podstawienie. .TP \fBg\fP Powoduje, że zmiany zostaną zastosowane do całego wiersza zdarzenia. Używany w połączeniu z `\fB:s\fP' (np. `\fB:gs/\fP\fIstary\fP\fB/\fP\fInowy\fP\fB/\fP') lub `\fB:&\fP'. Jeśli użyty z `\fB:s\fP', to zamiast / można posłużyć się dowolnym separatorem, a ostatni separator jest opcjonalny jeżeli jest ostatnim znakiem wiersza zdarzenia. .TP \fBG\fP Stosuje następujący po nim modyfikator "\fBs\fP" raz do każdego słowa w wierszu zdarzenia. .PD .SH "WBUDOWANE POLECENIA POWŁOKI" .\" start of bash_builtins .zZ .PP Jeśli nie podano inaczej, każde z poleceń wbudowanych opisanych w niniejszej sekcji jako akceptujące opcje poprzedzone \fB\-\fP akceptuje również symbol \fB\-\-\fP określający koniec opcji. Wbudowane \fB:\fP, \fBtrue\fP, \fBfalse\fP i \fBtest\fP nie akceptują opcji i nie traktują \fB\-\-\fP w sposób specjalny. Wbudowane \fBexit\fP, \fBlogout\fP, \fBreturn\fP, \fBbreak\fP, \fBcontinue\fP, \fBlet\fP i \fBshift\fP akceptują i przetwarzają argumenty zaczynające się od \fB\-\fP, bez wymogu podania \fB\-\-\fP. Inne wbudowane polecenia, które akceptują argumenty, lecz nie są opisane jako akceptujące opcje, interpretują argumenty zaczynające się od \fB\-\fP jako opcje nieprawidłowe i wymagają \fB\-\-\fP, aby zapobiec takiej interpretacji, .sp .5 .PD 0 .TP \fB:\fP [\fIargumenty\fP] .PD Bez efektów; polecenie to nie robi niczego poza interpretacją \fIargumentów\fP i wykonaniem ewentualnych podanych przekierowań. Zwracany status to zero. .TP \fB.\| \fP \fIplik\fP [\fIargumenty\fP] .PD 0 .TP \fBsource\fP \fIplik\fP [\fIargumenty\fP] .PD Odczytuje i wykonuje polecenia z zadanego \fIpliku\fP w aktualnym środowisku powłoki i zwraca kod zakończenia ostatniego wykonanego polecenia z tego \fIpliku\fP. Jeżeli nazwa \fIpliku\fP nie zawiera ukośnika, to do znalezienia katalogu go zawierającego używana jest zmienna .SM \fBPATH\fP. Plik poszukiwany w .SM \fBPATH\fP nie musi być wykonywalny. Jeśli \fBbash\fP nie jest w \fItrybie posix\fP, wówczas jeżeli nie znaleziono pliku w .SM \fBPATH\fP, to przeszukiwany jest katalog bieżący. Jeśli we wbudowanym poleceniu \fBshopt\fP wyłączona jest opcja \fBsourcepath\fP, to .SM \fBPATH\fP nie jest przeszukiwane. jeśli podano jakieś \fIargumenty\fP, to stają się one parametrami pozycyjnymi podczas wykonywania \fIpliku\fP. W przeciwnym razie argumenty pozycyjne pozostają bez zmian. Jeśli włączona jest opcja \fB\-T\fP, \fBsource\fP dziedziczy pułapki z \fBDEBUG\fP; jeśli nie, występujący łańcuch pułapki \fBDEBUG\fP jest zachowywany i przechowywany wokół wywołania do \fBsource\fP, a \fBsource\fP kasuje pułapkę \fBDEBUG\fP przy jej wykonaniu. Jeśli \fB\-T\fP nie jest ustawione, a plik źródłowy zmieni pułapkę \fBDEBUG\fP, nowa wartość jest odzyskiwana po zakończeniu \fBsource\fP. Kod zakończenia jest kodem ostatniego zakończonego przez skrypt polecenia (0 jeśli nie wykonano żadnego polecenia), a fałszem jeżeli nie znaleziono \fIpliku\fP lub nie można go odczytać. .TP \fBalias\fP [\fB\-p\fP] [\fInazwa\fP[=\fIwartość\fP] ...] \fBAlias\fP bez argumentów bądź z opcją \fB\-p\fP wypisuje na standardowym wyjściu listę aliasów w postaci \fBalias\fP \fInazwa\fP=\fIwartość\fP. Jeśli nie dostarczono argumentów, to definiowany jest alias (synonim) dla każdej \fInazwy\fP, dla której podano \fIwartość\fP. Początkowa spacja w \fIwartości\fP powoduje, że podczas interpretacji aliasu następne słowo będzie sprawdzane na podstawianie aliasów. Dla każdej \fInazwy\fP z listy argumentów, dla której nie podano \fIwartości\fP, wypisywana jest nazwa i wartość aliasu. \fBAlias\fP zwraca prawdę, chyba że podano \fInazwę\fP, dla której nie został zdefiniowany żaden alias. .TP \fBbg\fP [\fIspec_zad\fP] Wznawia w tle zawieszone zadanie \fIspec_zad\fP, tak jakby zostało ono uruchomione z \fB&\fP. Jeśli \fIspec_zad\fP nie występuje, to używane jest \fIbieżące zadanie\fP, określone tak, jak je pojmuje powłoka. \fBbg\fP \fIspec_zad\fP zwraca 0, chyba że uruchomiono je przy wyłączonej kontroli zadań (job control) lub uruchomiono z włączoną kontrolą zadań, jeśli nie znaleziono \fIspec_zad\fP lub uruchomiono bez kontroli zadań. .TP \fBbind\fP [\fB\-m\fP \fImapa\-klawiszy\fP] [\fB\-lpsvPSVX\fP] .PD 0 .TP \fBbind\fP [\fB\-m\fP \fImapa\-klawiszy\fP] [\fB\-q\fP \fIfunkcja\fP] [\fB\-u\fP \fIfunkcja\fP] [\fB\-r\fP \fIsekw_klaw\fP] .TP \fBbind\fP [\fB\-m\fP \fImapa\-klawiszy\fP] \fB\-f\fP \fIplik\fP .TP \fBbind\fP [\fB\-m\fP \fImapa\-klawiszy\fP] \fB\-x\fP \fIsekw_klaw\fP:\fIpolec_powłoki\fP .TP \fBbind\fP [\fB\-m\fP \fImapa\-klawiszy\fP] \fIsekw_klaw\fP:\fInazwa_funkcji\fP .TP \fBbind\fP [\fB\-m\fP \fImapa\-klawiszy\fP] \fIsekw_klaw\fP:\fIpolec_readline\fP .PD Wyświetla bieżące ustawienia przypisań (bindings) klawiszy i funkcji \fBreadline\fP lub przypisuje sekwencję klawiszy to funkcji lub makra \fBreadline\fP. Składnia tych przypisań jest identyczna jak dla \fI.inputrc\fP, ale każde z przypisań musi być przesłane jako osobny argument; np., \&'"\eC\-x\eC\-r": re\-read\-init\-file'. Opcje, jeśli je podano, mają następujące znaczenie: .RS .PD 0 .TP \fB\-m \fP\fImapa\-klawiszy\fP Wykorzystuje \fImapę\-klawiszy\fP jako mapę klawiszy, do której mają być zastosowane następne przypisania. Akceptowanymi nazwami \fImap\-klawiszy\fP są \fIemacs\fP, \fIemacs\-standard\fP, \fIemacs\-meta\fP, \fIemacs\-ctlx\fP, \fIvi\fP, \fIvi\-move\fP, \fIvi\-command\fP i \fIvi\-insert\fP. \fIvi\fP równoważne jest \fIvi\-command\fP (synonimem jest też \fIvi\-move\fP); \fIemacs\fP jest równoważne \fIemacs\-standard\fP. .TP \fB\-l\fP Podaje nazwy wszystkich funkcji \fBreadline\fP. .TP \fB\-p\fP Wyświetla nazwy funkcji i przypisania w taki sposób, że mogą być ponownie odczytane. .TP \fB\-P\fP Podaje bieżące przypisania i nazwy funkcji \fBreadline\fP. .TP \fB\-s\fP Wyświetla nazwy i wartości zmiennych \fBreadline\fP w taki sposób, że mogą być ponownie odczytane. .TP \fB\-S\fP Wyświetla sekwencje klawiszy \fBreadline\fP przypisane do makr i łańcuchy jakie one wysyłają. .TP \fB\-v\fP Wyświetla sekwencje klawiszy \fBreadline\fP przypisane do makr i łańcuchy jakie one wysyłają w taki sposób, że mogą być ponownie odczytane. .TP \fB\-V\fP Podaje bieżące nazwy i wartości zmiennych \fBreadline\fP. .TP \fB\-f \fP\fIplik\fP Czyta przypisania klawiszy z \fIpliku\fP. .TP \fB\-q \fP\fIfunkcja\fP Podaje, które klawisze wywołują podaną \fIfunkcję\fP. .TP \fB\-u \fP\fIfunkcja\fP Odwołuje przypisania wszystkich klawiszy przypisanych do danej \fIfunkcji\fP. .TP \fB\-r \fP\fIsekw_klaw\fP Usuwa bieżące przypisania dla \fIsekwencji klawiszy\fP. .TP \fB\-x \fP\fIsekw_klaw\fP\fB:\fP\fIpolec_powłoki\fP Powoduje, że za każdym naciśnięciem \fIsekwencji klawiszy\fP zostanie wykonane \fIpolecenie powłoki\fP. Gdy \fIpolecenie powłoki\fP jest wykonywane, powłoka ustawia zmienną .SM \fBREADLINE_LINE\fP na zawartość bufora wiersza \fBreadline\fP oraz zmienną \fBREADLINE_POINT\fP na bieżące położenie miejsca wprowadzania znaków. Jeśli wykonywane polecenie zmienia wartość .SM \fBREADLINE_LINE\fP lub .SM \fBREADLINE_POINT\fP, to te nowe wartości zostaną uwzględnione podczas edytowania. .TP \fB\-X\fP Wypisuje wszystkie sekwencje klawiszy przypisane do poleceń powłoki i powiązane polecenia w formacie, który można użyć ponownie jako wejście. .PD .PP Zwracana jest wartość 0, chyba że podano nierozpoznaną opcję lub pojawił się błąd. .RE .TP \fBbreak\fP [\fIn\fP] Opuszcza pętlę \fBfor\fP, \fBwhile\fP, \fBuntil\fP lub \fBselect\fP. Jeżeli podano \fIn\fP, przerywa działanie do \fIn\fP\-tego poziomu. \fIn\fP musi być \(>= 1. Jeżeli \fIn\fP 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 \fBbreak\fP. .TP \fBbuiltin\fP \fIwbudowane\fP [\fIargumenty\fP] Wykonuje zadane polecenie wbudowane powłoki, przesyłając mu \fIargumenty\fP i zwraca jego kod zakończenia. Przydatne podczas definiowania funkcji o nazwie tożsamej z nazwą wbudowanego polecenia powłoki, zachowując funkcjonalność polecenia wbudowanego wewnątrz funkcji. Wbudowane \fBcd\fP jest powszechnie redefiniowane w ten sposób. Kodem zakończenia jest fałsz jeśli \fIwbudowane\fP nie jest wbudowanym poleceniem powłoki. .TP \fBcaller\fP [\fIwyrażenie\fP] Zwraca kontekst aktywnego wywołania podprogramu (funkcji powłoki lub skryptu wykonywanego wbudowanymi poleceniami \fB.\fP lub \fBsource\fP). Bez \fIwyrażenia\fP, \fBcaller\fP wyświetla numer wiersza i plik źródłowy bieżącego wywołania podprogramu. Jeśli do \fIwyrażenia\fP przekazano nieujemną liczbę całkowitą, to \fBcaller\fP wyświetla numer wiersza, nazwę podprogramu i plik źródłowy związany z pozycją w bieżącym stosie wywołania. Te dodatkowe informacje mogą być użyte np. do wyświetlenia stosu wywołania. Bieżąca ramka jest ramką 0. Zwracaną wartością jest 0, chyba że powłoka nie wykonuje wywołania podprogramu lub \fIwyrażenie\fP nie odnosi się do prawidłowej pozycji w stosie wywołania. .TP \fBcd\fP [\fB\-L\fP|[\fB\-P\fP [\fB\-e\fP]] [\-@]] [\fIkatalog\fP] Zmienia bieżący katalog roboczy na \fIkatalog\fP. Jeśli nie poda się \fIkatalogu\fP, domyślnie jest to wartość zmiennej powłoki .SM \fBHOME\fP. Wszelkie dodatkowe argumenty po \fIkatalogu\fP są ignorowane. Zmienna .SM \fBCDPATH\fP definiuje ścieżkę przeszukiwań dla katalogu zawierającego \fIkatalog\fP: każda nazwa katalogu w .SM \fBCDPATH\fP jest przeszukiwana pod kątem \fIkatalogu\fP. Alternatywne nazwy katalogów w .SM \fBCDPATH\fP rozdzielane są dwukropkiem (:). Pusta nazwa katalogu w .SM \fBCDPATH\fP jest tym samym, co katalog bieżący, tj. "\fB.\fP". Jeżeli \fIkatalog\fP rozpoczyna się ukośnikiem (/), to .SM \fBCDPATH\fP nie jest używane. Opcja \fB\-P\fP nakazuje użycie fizycznej struktury katalogów podążając za dowiązaniami symbolicznymi przy przechodzeniu przez \fIkatalog\fP i przed przetwarzaniem wystąpień \fI..\fP w \fIkatalogu\fP (zobacz też opcja \fB\-P\fP wbudowanego polecenia \fBset\fP). Opcja \fB\-L\fP wymusza podążanie za dowiązaniami symbolicznymi po przetworzeniu wystąpień \fI..\fP w \fIkatalogu\fP. Jeśli w \fIkatalogu\fP pojawi się \fI..\fP, to jest ono pzetwarzane przez usunięcie występującej zaraz przed nim składowej ścieżki z \fIkatalogu\fP, aż do ukośnika rozpoczynającego \fIkatalog\fP. Jeśli z \fB\-P\fP użyto opcji \fB\-e\fP, a bieżący katalog roboczy nie może zostać pomyślnie określony po pomyślnej zmianie katalogu, to \fBcd\fP zwróci kod oznaczający niepowodzenie. W systemach które to obsługują, opcja \fB\-@\fP przedstawia atrybuty rozszerzone powiązane z plikiem jak i katalogiem. Argument \fB\-\fP jest przetwarzany na .SM \fB$OLDPWD\fP przed przeprowadzeniem próby zmiany katalogu.Jeśli użyta jest niepusta nazwa katalogu z .SM \fBCDPATH\fP lub jeśli \fB\-\fP jest pierwszym argumentem, a zmiana katalogu odbyła się pomyślnie, na standardowe wyjście wypisywana jest ścieżka absolutna do nowego katalogu roboczego. Wartością zwracaną jest prawda jeśli pomyślnie zmieniono katalog; w przeciwnym przypadku fałsz. .TP \fBcommand\fP [\fB\-pVv\fP] \fIpolecenie\fP [\fIarg\fP ...] Uruchamia \fIpolecenie\fP z \fIargumentami\fP zakazując zwykłego wyszukiwania funkcji przez powłokę. Wykonywane są wyłącznie polecenia wbudowane i polecenia znalezione w .SM \fBPATH\fP. Jeżeli podano opcję \fB\-p\fP, wyszukiwanie \fIpolecenia\fP wykonywane jest przy użyciu domyślnej \fBPATH\fP, która gwarantuje znalezienie wszystkich standardowych narzędzi. Jeśli użyto albo opcji \fB\-V\fP albo \fB\-v\fP, to wypisywany jest opis \fIpolecenia\fP. Opcja \fB\-v\fP powoduje, że zostanie wyświetlone pojedyncze słowo wskazujące polecenie lub nazwę pliku, użyte do wywołania \fIpolecenia\fP; opcja \fB\-V\fP tworzy bardziej obszerny opis. Jeżeli podano opcję \fB\-V\fP lub \fB\-v\fP, to kodem zakończenia jest 0 gdy odnaleziono \fIpolecenie\fP, zaś 1 gdy nie. Jeśli nie podano żadnej z tych opcji i pojawił się błąd lub nie można znaleźć \fIpolecenia\fP, to kod zakończenia wynosi 127. W przeciwnym wypadku kodem zakończenia wbudowanego polecenia \fBcommand\fP jest kod zakończenia \fIpolecenia\fP. .TP \fBcompgen\fP [\fIopcja\fP] [\fIsłowo\fP] Tworzy możliwe dopasowania uzupełnień dla \fIsłowa\fP zgodnie z \fIopcjami\fP, które mogą być dowolnymi z opcji akceptowanych przez wbudowane polecenie \fBcomplete\fP, z wyjątkiem \fB\-p\fP i \fB\-r\fP, i wypisuje dopasowania na standardowe wyjście. Przy stosowaniu opcji \fB\-F\fP lub \fB\-C\fP, różne zmienne powłoki ustawiane przez usługi programowalnego uzupełniania, gdy są dostępne, nie będą mieć użytecznych wartości. .sp 1 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 \fIsłowo\fP, to wyświetlone zostaną wyłącznie uzupełnienia doń pasujące. .sp 1 Wartością zwracaną jest prawda, chyba że podano niepoprawną opcję lub nie zostały utworzone żadne dopasowania. .TP \fBcomplete\fP [\fB\-abcdefgjksuv\fP] [\fB\-o\fP \fIopcjacomp\fP] [\fB\-DE\fP] [\fB\-A\fP \fIakcja\fP] [\fB\-G\fP \fIwzglob\fP] [\fB\-W\fP \fIlistasłów\fP] [\fB\-F\fP \fIfunkcja\fP] [\fB\-C\fP \fIpolecenie\fP] .br [\fB\-X\fP \fIwzfiltr\fP] [\fB\-P\fP \fIprzedrostek\fP] [\fB\-C\fP \fIprzyrostek\fP] \fInazwa\fP [\fInazwa ...\fP] .PD 0 .TP \fBcomplete\fP \fB\-pr\fP [\fB\-DE\fP] [\fInazwa\fP ...] .PD Określa, w jaki sposób będą uzupełniane argumenty dla każdej z \fInazw\fP. Jeżeli podano opcję \fB\-p\fP, 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 \fB\-r\fP usuwa specyfikację uzupełniania dla każdej z \fInazw\fP, lub jeśli \fInazw\fP nie podano, wszystkie specyfikacje uzupełniania. Opcja \fB\-D\fP wskazuje, że pozostałe opcje i akcje powinny dotyczyć "domyślnego" polecenia uzupełniania, to jest uzupełniania, którego próbę podjęto na poleceniu o niezdefiniowanym wcześniej uzupełnieniu. Opcja \fB\-E\fP oznacza, że pozostałe opcje i akcje powinny dotyczyć "pustego" polecenia uzupełniania, tzn. uzupełniania, którego próbę podjęto na pustym wierszu. .sp 1 Proces stosowania tych specyfikacji uzupełnień podczas prób uzupełniania słów omówiono powyżej w sekcji \fBProgramowalne uzupełnianie\fP. .sp 1 Pozostałe opcje, jeśli je podano, mają niżej opisane znaczenie. Argumenty opcji \fB\-G\fP, \fB\-W\fP i \fB\-X\fP (i, jeśli to niezbędne, \fB\-P\fP i \fB\-S\fP) powinny być cytowane dla ochrony przed interpretacją jaka wystąpi zanim zostanie wywołane polecenie \fBcomplete\fP. .RS .PD 0 .TP 8 \fB\-o\fP \fIopcjacomp\fP Wartość \fIopcjacomp\fP reguluje kilka aspektów zachowania się compspec wykraczających poza zwykłe tworzenie uzupełnień. \fIopcjacomp\fP przyjmuje jedną z wartości: .RS .TP 8 \fBbashdefault\fP Wykonuje pozostałe z domyślnych uzupełnień \fBbash\fP, jeśli compspec nie utworzy żadnych dopasowań. .TP 8 \fBdefault\fP Stosuje domyślne uzupełnianie readline jeśli compspec nie utworzy żadnych dopasowań. .TP 8 \fBdirnames\fP Wykonuje uzupełnianie nazw katalogów jeśli compspec nie utworzy żadnych dopasowań. .TP 8 \fBfilenames\fP 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. .TP 8 \fBnoquote\fP Przekazuje readline, aby nie cytowało uzupełnianych słów, jeśli są nazwami plików (domyślnie nazwy plików są cytowane). .TP 8 \fBnosort\fP Przekazuje readline, aby nie sortowało alfabetycznie listy dostępnych uzupełnień. .TP 8 \fBnospace\fP Przekazuje readline, aby nie dodawało spacji (domyślnie) do uzupełnionych słów, na końcu wiersza. .TP 8 \fBplusdirs\fP Po utworzeniu dopasowań zdefiniowanych przez compspec, przeprowadzana jest próba dopasowania nazw katalogów, a ewentualne dopasowania są dodawane do wyników innych akcji. .RE .TP 8 \fB\-A\fP \fIakcja\fP \fIakcja\fP może być jedną z poniższych, tworzących listę możliwych dopasowań: .RS .TP 8 \fBalias\fP Nazwy aliasów. Można też podać jako \fB\-a\fP. .TP 8 \fBarrayvar\fP Nazwy zmiennych tablicowych. .TP 8 \fBbinding\fP Nazwy przypisań klawiszy \fBreadline\fP. .TP 8 \fBbuiltin\fP Nazwy wbudowanych poleceń powłoki. Można też podać jako \fB\-b\fP. .TP 8 \fBcommand\fP Nazwy poleceń. Można też podać jako \fB\-c\fP. .TP 8 \fBdirectory\fP Nazwy katalogów. Można też podać jako \fB\-d\fP. .TP 8 \fBdisabled\fP Nazwy wyłączonych poleceń wbudowanych powłoki. .TP 8 \fBenabled\fP Nazwy włączonych poleceń wbudowanych powłoki. .TP 8 \fBexport\fP Nazwy wyeksportowanych zmiennych powłoki. Można też podać jako \fB\-e\fP. .TP 8 \fBfile\fP Nazwy plików. Można też podać jako \fB\-f\fP. .TP 8 \fBfunction\fP Nazwy funkcji powłoki. .TP 8 \fBgroup\fP Nazwy grup. Można też podać jako \fB\-g\fP. .TP 8 \fBhelptopic\fP Tematy pomocy akceptowane przez wbudowane polecenie \fBhelp\fP. .TP 8 \fBhostname\fP Nazwy hostów, pobrane z pliku określonego przez zmienną powłoki .SM \fBHOSTFILE\fP. .TP 8 \fBjob\fP Nazwy zadań, jeżeli aktywne jest sterowanie zadaniami. Można też podać jako \fB\-j\fP. .TP 8 \fBkeyword\fP Zastrzeżone słowa powłoki. Można też podać jako \fB\-k\fP. .TP 8 \fBrunning\fP Nazwy działających zadań, jeżeli aktywne jest sterowanie zadaniami. .TP 8 \fBservice\fP Nazwy usług. Można też podać jako \fB\-s\fP. .TP 8 \fBsetopt\fP Dozwolone argumenty opcji \fB\-o\fP polecenia wbudowanego \fBset\fP. .TP 8 \fBshopt\fP Nazwy opcji powłoki, takie, jakie akceptuje polecenie wbudowane \fBshopt\fP. .TP 8 \fBsignal\fP Nazwy sygnałów. .TP 8 \fBstopped\fP Nazwy zatrzymanych zadań, jeśli aktywne jest sterowanie zadaniami. .TP 8 \fBuser\fP Nazwy użytkowników. Można też podać jako \fB\-u\fP. .TP 8 \fBvariable\fP Nazwy wszystkich zmiennych powłoki. Można też podać jako \fB\-v\fP. .RE .TP 8 \fB\-C\fP \fIpolecenie\fP \fIpolecenie\fP jest wykonywane w środowisku podpowłoki, a jego wyjście jest używane jako możliwe uzupełnienia. .TP 8 \fB\-F\fP \fIfunkcja\fP Funkcja powłoki \fIfunkcja\fP jest wykonywana w bieżącym środowisku powłoki. Gdy funkcja jest wykonywana, pierwszy argument (\fB$1\fP) jest nazwą polecenia, którego argumenty są uzupełniane, drugim argumentem (\fB$2\fP) jest uzupełniane słowo, a trzecim (\fB$3\fP) jest słowo poprzedzające uzupełniane słowo w bieżącym wierszu polecenia. Po zakończeniu, możliwe uzupełnienia są pozyskiwane z wartości zmiennej tablicowej .SM \fBCOMPREPLY\fP. .TP 8 \fB\-G\fP \fIwzglob\fP Wzorzec rozwijania nazw plików \fIwzglob\fP jest rozwijany, tworząc listę możliwych uzupełnień. .TP 8 \fB\-P\fP \fIprzedrostek\fP na początku każdego z możliwych uzupełnień, po zastosowaniu wszystkich innych opcji, dodawany jest \fIprzedrostek\fP. .TP 8 \fB\-S\fP \fIprzyrostek\fP na końcu każdego z możliwych uzupełnień, po zastosowaniu wszystkich innych opcji, dodawany jest \fIprzyrostek\fP. .TP 8 \fB\-W\fP \fIlistasłów\fP \fIlistasłów\fP jest rozbijana przy zastosowaniu znaków ze zmiennej specjalnej .SM \fBIFS\fP 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. .TP 8 \fB\-X\fP \fIwzfiltr\fP \fIwzfiltr\fP 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 \fB!\fP w \fIwzfiltr\fP powoduje negację wzorca; usuwane są wówczas uzupełnienia nie pasujące do \fIwzfiltr\fP. .PD .PP Wartością zwracana jest prawda, chyba że podano niepoprawną opcję, podano bez argumentu \fInazwa\fP opcję inną niż \fB\-p\fP lub \fB\-r\fP, usiłowano usunąć specyfikację uzupełniania dla \fInazwy\fP, dla której nie istnieje żadna specyfikacja, albo też podczas dodawania specyfikacji uzupełniania wystąpił błąd. .RE .TP \fBcompopt\fP [\fB\-o\fP \fIopcja\fP] [\fB\-DE\fP] [\fB+o\fP \fIopcja\fP] [\fInazwa\fP] Modyfikuje opcje uzupełniania dla każdej \fInazwy\fP, zgodnie z \fIopcjami\fP lub dla właśnie wykonywanego uzupełnienia, jeśli nie podano \fInazwy\fP. Jeśli nie podano \fIopcji\fP, wyświetla opcje uzupełniania dla każdej \fInazwy\fP lub dla bieżącego uzupełniania. Możliwymi wartościami \fIopcji\fP są opcje, które są poprawne do wbudowanego polecenia \fBcomplete\fP. Opcja \fB\-D\fP oznacza, że pozostałe opcje powinny być stosowane do "domyślnego" polecenia uzupełniania, tzn. uzupełniania, którego próbę przeprowadzono dla polecenia, dla którego nie zdefiniowano wcześniej uzupełnień. Opcja \fB\-E\fP oznacza, że pozostałe opcje powinny być zastosowane do "pustego" polecenia uzupełniania, tzn. uzupełnienia, którego próbę przeprowadzono na pustym wierszu. .sp 1 Zwracaną wartością jest prawda, chyba że podano nieprawidłową opcję, przeprowadzono próbę zmodyfikowania opcji dla \fInazwy\fP, dla której nie istnieje specyfikacja uzupełniania lub wystąpił błąd wyjścia. .TP \fBcontinue\fP [\fIn\fP] Wznawia następną iterację obejmującej je pętli \fBfor\fP, \fBwhile\fP, \fBuntil\fP lub \fBselect\fP. Jeżeli podano \fIn\fP, wznawia \fIn\fP\-tą obejmującą pętlę. \fIn\fP musi być \(>= 1. Jeżeli \fIn\fP jest większe niż liczba obejmujących pętli, to wznawiana jest ostatnia z pętli (,,najwyższa\*(rq). Wartość zwracana wynosi 0, chyba że powłoka nie wykonuje pętli podczas wykonywania \fBcontinue\fP. .TP \fBdeclare\fP [\fB\-aAfFgilnrtux\fP] [\fB\-p\fP] [\fInazwa\fP[=\fIwartość\fP] ...] .PD 0 .TP \fBtypeset\fP [\fB\-aAfFgilnrtux\fP] [\fB\-p\fP] [\fInazwa\fP[=\fIwartość\fP] ...] .PD Deklaruje zmienne i/lub nadaje im atrybuty. Jeśli nie podano żadnych \fInazw\fP, wyświetla wartości zmiennych. Opcja \fB\-p\fP będzie wyświetlać atrybuty i wartości każdej \fInazwy\fP. Gdy używane jest \fB\-p\fP z argumentami \fInazwa\fP, ignorowane są dodatkowe opcje inne niż \fB\-f\fP lub \fB\-F\fP. Opcja \fB\-p\fP podana bez argumentów \fInazwa\fP wyświetli atrybuty i wartości wszystkich zmiennych posiadających atrybuty określone przez dodatkowe opcje. Jeśli nie podano innych opcji z \fB\-p\fP, \fBdeclare\fP wyświetli atrybuty i wartości wszystkich zmiennych powłoki. Opcja \fB\-f\fP ograniczy wyświetlanie do funkcji powłoki. Opcja \fB\-F\fP zabrania wyświetlania definicji funkcji; wypisywane są tylko nazwy i atrybuty funkcji. Jeśli włączono opcję powłoki \fBextdebug\fP przy użyciu \fBshopt\fP, to wyświetlane są również nazwa pliku źródłowego i numer wiersza, w którym zdefiniowano każdą \fInazwę\fP. Opcja \fB\-F\fP implikuje \fB\-f\fP. Opcja \fB\-f\fP wymusza tworzenie i modyfikację zmiennych na poziomie globalnym, nawet gdy \fBdeclare\fP jest wykonywane w funkcji powłoki. Jest ona ignorowana we wszystkich innych przypadkach. Poniższych opcji można użyć do ograniczenia wyników do zmiennych o określonym atrybucie lub do nadania zmiennym atrybutów: .RS .PD 0 .TP \fB\-a\fP Każda z \fInazw\fP jest indeksowaną zmienną tablicową (zobacz \fBTablice\fP powyżej). .TP \fB\-A\fP Każda z \fInazw\fP jest asocjacyjną zmienną tablicową (zobacz \fBTablice\fP powyżej). .TP \fB\-f\fP Używa wyłącznie nazw funkcji. .TP \fB\-i\fP Zmienna jest traktowana jak całkowita; gdy zmiennej jest przypisywana wartość, wykonywana jest interpretacja wyrażeń arytmetycznych (zobacz .SM \fBOBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH\fP). .TP \fB\-l\fP Gdy zmiennej przypisano wartość, wszystkie wielkie litery są zamieniane na małe. Przypisania za pomocą wielkich liter są wyłączone. .TP \fB\-n\fP Nadaje każdej \fInazwie\fP atrybut \fInazwa referencyjna\fP, czyniąc ją nazwą referencyjną odnoszącą\ się\ do innej zmiennej. Ta inna zmienna jest definiowana w \fIwartości\fP nazwy. Wszystkie odniesienia i przypisania i modyfikacje atrybutów \fInazwy\fP, z wyjątkiem tych używających lub zmieniających sam atrybut \fB\-n\fP są wykonywane na zmiennej do której odnosi się \fIwartość\fP nazwy. Atrybutu nazwa referencyjna nie można zastosować do zmiennych tablicowych. .TP \fB\-r\fP Powoduje, że dane \fInazwy\fP 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. .TP \fB\-t\fP Nadaje każdej \fInazwie\fP atrybut \fItrace\fP. Funkcje z tym atrybutem dziedziczą pułapki \fBDEBUG\fP i \fBRETURN\fP z wywołującej je funkcji. Atrybut ten nie ma specjalnego znaczenia dla zmiennych. .TP \fB\-u\fP Gdy zmiennej przypisano wartość, wszystkie małe litery są zamieniane na wielkie. Przypisania za pomocą małych liter są wyłączone. .TP \fB\-x\fP Zaznacza \fInazwę\fP do wyeksportowania przez środowisko do kolejnych poleceń. .PD .PP Użycie `+' zamiast `\-' wyłącza atrybut, z wyjątkiem tego, że \fB+a\fP nie może być używane do niszczenia zmiennej tablicowej. a \fB+r\fP nie usunie atrybutu tylko do odczytu. Użyte w funkcji \fBdeclare\fP i \fBtypeset\fP powodują, że każda z \fInazw\fP staje się lokalna, jak przy pomocy polecenia \fBlocal\fP, chyba że podano opcję \fB\-g\fP. Przy używaniu \fB\-a\fP lub \fB\-A\fP oraz składni polecenia złożonego do utworzenia zmiennych tablicowych, dodatkowe atrybuty nie dają efektu aż do kolejnych przypisań. Jeśli po zmiennej występuje =\fIwartość\fP, to wartość zmiennej jest ustawiana na \fIwartość\fP. Zwracana jest wartość 0, chyba że napotkano niepoprawną opcję, próbę zdefiniowania funkcji przy pomocy .if n ``\-f foo=bar'', .if t \f(CW\-f foo=bar\fP, przypisania wartości zmiennej readonly, przypisania wartości zmiennej tablicowej bez użycia składni przypisania złożonego (zobacz \fBTablice\fP powyżej), jedna z \fInazw\fP 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 \fB\-f\fP. .RE .TP \fBdirs\fP [\fB\-clpv\fP] [\fB+\fP\fIn\fP\fB] [\-\fP\fIn\fP\fB]\fP 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 \fBpushd\fP polecenie \fBpopd\fP usuwa pozycje z listy. Bieżący katalog jest zawsze pierwszy na stosie. .RS .PD 0 .TP \fB\-c\fP Czyści stos katalogów usuwając wszystkie jego pozycje. .TP \fB\-l\fP Tworzy listing używając pełnych ścieżek; domyślnie format listingu posługuje się tyldą do oznaczania katalogu domowego. .TP \fB\-p\fP Wypisuje stos katalogów po jednej pozycji na wiersz. .TP \fB\-v\fP Wypisuje stos katalogów po jednej pozycji na wiersz, poprzedzając każdą z nich jej pozycją (indeksem) w stosie. .TP \fB+\fP\fIn\fP Wyświetla \fIn\fPtą pozycję licząc od lewej na liście pokazywanej przez \fBdirs\fP przy wywołaniu bez opcji; początkową jest zero. .TP \fB\-\fP\fIn\fP Wyświetla \fIn\fPtą pozycję licząc od prawej na liście pokazywanej przez \fBdirs\fP przy wywołaniu bez opcji; początkową jest zero. .PD .PP Wartością zwracaną jest 0, chyba że podano nieprawidłową opcję lub \fIn\fP wskazuje poza koniec stosu katalogów. .RE .TP \fBdisown\fP [\fB\-ar\fP] [\fB\-h\fP] [\fIzadanie\fP ... | \fIpid\fP ... ] Bez opcji, usuwa każde z podanych \fIzadań\fP z tablicy zadań aktywnych. Jeśli nie podano \fIzadania\fP i nie użyto ani opcji \fB\-a\fP ani \fB\-r\fP, to używane jest \fIzadanie bieżące\fP. Jeśli użyto opcji \fB\-h\fP, każde \fIzadanie\fP nie jest usuwane z tablicy, ale jest jako takie zaznaczane, tak że do zadania nie jest wysyłany sygnał .SM \fBSIGHUP\fP jeśli powłoka otrzymuje .SM \fBSIGHUP\fP. Jeżeli podano \fIzadanie\fP, opcja \fB\-a\fP oznacza usunięcie lub zaznaczenie wszystkich zadań; opcja \fB\-r\fP bez argumentu \fIzadania\fP ogranicza akcję do działających zadań. Wartością zwracaną jest 0, chyba że \fIzadanie\fP nie określa poprawnego zadania. .TP \fBecho\fP [\fB\-neE\fP] [\fIargument\fP ...] Wyświetla \fIargument\fPy, rozdzielone spacjami, zakończone znakiem nowej linii. Kodem zakończenia jest zawsze 0, chyba że wystąpi błąd zapisu. Jeżeli podano \fB\-n\fP, to nie jest wysyłany kończący znak nowej linii. Jeżeli podano opcję \fB\-e\fP, włączana jest interpretacja podanych niżej znaków specjalnych. Opcja \fB\-E\fP wyłącza interpretację tych znaków, nawet na systemach, gdzie są one domyślnie interpretowane. Do dynamicznego sprawdzania, czy \fBecho\fP interpretuje domyślnie te znaki, czy nie, służy opcja powłoki \fBxpg_echo\fP. \fBecho\fP nie interpretuje \fB\-\-\fP jako oznaczenia końca opcji. \fBecho\fP interpretuje następujące sekwencje specjalne: .RS .PD 0 .TP \fB\ea\fP alarm (dzwonek) .TP \fB\eb\fP backspace .TP \fB\ec\fP pomiń kończący znak nowej linii .TP \fB\ee\fP .TP \fB\eE\fP znak escape .TP \fB\ef\fP znak wysuwu strony (form feed) .TP \fB\en\fP znak nowego wiersza (new line) .TP \fB\er\fP powrót karetki (carriage return) .TP \fB\et\fP tabulacja pozioma (horizontal tab) .TP \fB\ev\fP tabulacja pionowa (vertical tab) .TP \fB\e\e\fP odwrotny ukośnik (backslash) .TP \fB\e0\fP\fInnn\fP ośmiobitowy znak, którego wartością jest ósemkowa liczba \fInnn\fP (jedna do trzech cyfr) .TP \fB\ex\fP\fIHH\fP ośmiobitowy znak, którego wartością jest szesnastkowa liczba \fInnn\fP (jedna lub dwie cyfry szesnastkowe) .TP \fB\eu\fP\fIHHHH\fP znak Unicode (ISO/IEC 10646) o wartości szesnastkowej \fIHHHH\fP (jedna do czterech cyfr szesnastkowych) .TP \fB\eU\fP\fIHHHHHHHH\fP znak Unicode (ISO/IEC 10646) o wartości szesnastkowej \fIHHHHHHHH\fP (jedna do ośmiu cyfr szesnastkowych) .PD .RE .TP \fBenable\fP [\fB\-a\fP] [\fB\-dnps\fP] [\fB\-f\fP \fIplik\fP] [\fInazwa\fP ...] 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ą \fB\-n\fP, wyłączana jest każda z \fInazw\fP; w przeciwnym razie \fInazwy\fP są włączone. Na przykład, chcąc użyć pliku binarnego \fBtest\fP znalezionego przez .SM \fBPATH\fP zamiast wersji wbudowanej w powłokę, należy uruchomić .if t \f(CWenable -n test\fP. .if n ``enable -n test''. Opcja \fB\-f\fP oznacza załadowanie nowego polecenia wbudowanego \fInazwa\fP z obiektu dzielonego (shared object) \fIplik\fP, na systemach obsługujących dynamiczne ładowanie. Opcja \fB\-d\fP usunie polecenie wbudowane załadowane poprzednio przez \fB\-f\fP. Jeżeli nie podano żadnych argumentów \fInazwa\fP lub jeśli podano opcję \fB\-p\fP, 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 \fB\-n\fP, wypisywane są tylko wyłączone polecenia wbudowane. Jeżeli podano \fB\-a\fP, wypisywana lista zawiera wszystkie polecenia wbudowane, ze wskazaniem przy każdym czy jest ono włączone czy też nie. Jeżeli podano \fB\-s\fP, wyjście ograniczone jest do POSIX\-owych ,,\fIspecjalnych\fP\*(rq poleceń wbudowanych. Wartością zwracaną jest 0, chyba że \fInazwa\fP nie jest poleceniem wbudowanym powłoki lub wystąpił błąd podczas ładowania nowego polecenia wbudowanego z obiektu dzielonego. .TP \fBeval\fP [\fIargument\fP ...] \fIArgumenty\fP 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ść \fBeval\fP. Jeżeli nie na żadnych \fIargumentów\fP, lub wszystkie argumenty są puste, \fBeval\fP zwraca 0. .TP \fBexec\fP [\fB\-cl\fP] [\fB\-a\fP \fInazwa\fP] [\fIpolecenie\fP [\fIargumenty\fP]] Jeżeli podano \fIpolecenie\fP, zastępuje ono powłokę. Nie tworzony jest żaden nowy proces. \fIArgumenty\fP stają się argumentami \fIpolecenia\fP. Jeśli podano opcję \fB\-l\fP, umieszcza kreskę na początku zerowego argumentu przesyłanego do \fIpolecenia\fP. Tak samo, jak robi to \fIlogin\fP(1). Opcja \fB\-c\fP powoduje, że \fIpolecenie\fP zostanie wykonane z pustym środowiskiem. Jeżeli podano \fB\-a\fP, powłoka przesyła do wykonywanego polecenia \fInazwę\fP jako zerowy argument. Jeżeli \fIpolecenie\fP z jakiegoś powodu nie może zostać wykonane, to powłoka nie\-interaktywna kończy pracę, chyba że włączona jest opcja powłoki \fBexecfail,\fP wówczas zwraca niepowodzenie. Powłoka interaktywna zwraca niepowodzenie jeśli plik nie może zostać wykonany. Jeżeli nie podano \fIpolecenia\fP, przekierowania skutkują w bieżącej powłoce, a kodem zakończenia jest 0. W przypadku błędu przekierowania kod zakończenia wynosi 1. .TP \fBexit\fP [\fIn\fP] Powoduje, że powłoka kończy pracę z kodem równym \fIn\fP. Jeśli pominięto \fIn\fP, kodem zakończenia jest kod ostatniego wykonanego polecenia. Przed końcem pracy powłoki wykonywane jest przechwycenie sygnału .SM \fBEXIT\fP. .TP \fBexport\fP [\fB\-fn\fP\^] [\fInazwa\fP[=\fIsłowo\fP]] ... .PD 0 .TP \fBexport \-p\fP .PD Podane \fInazwy\fP zaznaczane są do automatycznego wyeksportowania do środowiska następnych wykonywanych poleceń. Jeśli podano opcję \fB\-f\fP, to \fInazwy\fP odnoszą się do funkcji. Jeżeli nie podano żadnych \fInazw\fP lub jeżeli podano opcję \fB\-p\fP, to wypisywana jest lista nazw wszystkich eksportowanych w tej powłoce zmiennych. Opcja \fB\-n\fP powoduje usunięcie cechy eksportowania z podanych zmiennych. Jeśli po nazwie zmiennej występuje =\fIsłowo\fP, to wartość zmiennej jest ustawiana na \fIsłowo\fP. \fBexport\fP zwraca zerowy kod zakończenia, chyba że napotkano nieprawidłową opcję, jedna z \fInazw\fP nie jest poprawną nazwą zmiennej powłoki lub podano \fB\-f\fP z \fInazwą\fP, która nie jest funkcją. .TP \fBfc\fP [\fB\-e\fP \fInazwa_e\fP] [\fB\-lnr\fP] [\fIpierwsze\fP] [\fIostatnie\fP] .PD 0 .TP \fBfc\fP \fB\-s\fP [\fIwzorzec\fP=\fIzastąpienie\fP] [\fIpolecenie\fP] .PD W pierwszej postaci, wybiera zakres poleceń od \fIpierwszego\fP do \fIostatniego\fP z listy historii i wypisuje lub edytuje oraz wykonuje je ponownie. \fIPierwsze\fP i \fIostatnie\fP 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 \fIostatniego\fP, to jest ono ustawiane na bieżące polecenie w przypadku listowania (tak że .if n ``fc \-l \-10'' .if t \f(CWfc \-l \-10\fP wypisuje ostatnich 10 poleceń) i na \fIpierwsze\fP w pozostałych przypadkach. Jeżeli nie określono \fIpierwszego\fP polecenia, to jest ono ustawiane na poprzednie polecenie w przypadku edycji a na \-16 przy listowaniu. .sp 1 Opcja \fB\-n\fP wstrzymuje wyświetlanie numerów poleceń podczas listowania. Opcja \fB\-r\fP odwraca kolejność poleceń. Jeżeli podano opcję \fB\-l\fP, to polecenia listowane są na standardowym wyjściu. W przeciwnym razie dla pliku zawierającego te polecenia wywoływany jest edytor podany przez \fInazwa_e\fP. Jeżeli nie podano \fInazwa_e\fP, używana jest wartość .SM \fBFCEDIT\fP, a wartość .SM \fBEDITOR\fP jeśli nie ustawiono .SM \fBFCEDIT\fP. Jeżeli nie ustawiono żadnej z nich, używany jest .FN vi Po zakończeniu edycji, wysyłane edytowane polecenia są wyświetlane przez echo i wykonywane. .sp 1 W drugiej postaci, \fIpolecenie\fP jest ponownie wykonywane po każdej wymianie wystąpienia \fIwzorca\fP przez \fIzastąpienie\fP. \fIPolecenie\fP jest interpretowane podobnie jak \fIpierwsze\fP powyżej. Przydatnym aliasem do wykorzystania z tą formą jest .if n ``r="fc -s"'', .if t \f(CWr='fc \-s'\fP, tak, że napisanie .if n ``r cc'' .if t \f(CWr cc\fP uruchamia ostatnie polecenie rozpoczynające się od .if n ``cc'' .if t \f(CWcc\fP a napisanie .if n ``r'' .if t \f(CWr\fP ponownie wykonuje ostatnie polecenie. .sp 1 Jeżeli użyta została pierwsza postać, to wartością zwracaną jest 0, chyba że napotkano nieprawidłową opcję lub \fIpierwszy\fP albo \fIostatni\fP określają wiersze historii spoza zakresu. Jeżeli podano opcję \fB\-e\fP, 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 \fIpolecenie\fP nie określa poprawnego wiersza poleceń \-\- wówczas \fBfc\fP zwraca porażkę. .TP \fBfg\fP [\fIzadanie\fP] Wznawia \fIzadanie\fP na pierwszym planie i czyni je zadaniem bieżącym. Jeżeli nie podano \fIzadania\fP, używane jest \fIbieżące zadanie\fP w pojęciu powłoki. Wartością zwracaną jest wartość polecenia umieszczonego na pierwszym planie, lub porażka jeżeli \fBfb\fP uruchomiono przy wyłączonej kontroli zadań, lub uruchomiono je przy włączonej kontroli zadań, ale \fIzadanie\fP nie określa prawidłowego zadania lub \fIzadanie\fP określa zadanie, które zostało uruchomione bez kontroli zadań. .TP \fBgetopts\fP \fIłańcuch_opcji\fP \fInazwa\fP [\fIargumenty\fP] \fBgetopts\fP używane jest przez procedury powłoki do analizy parametrów pozycyjnych. \fIŁańcuch opcji\fP 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 nie mogą wystąpić dwukropek i znak zapytania. Przy każdym wywołaniu \fBgetopts\fP umieszcza następną opcję w zmiennej powłoki \fInazwa\fP, inicjując \fInazwę\fP jeśli nie istniała. Indeks następnego argumentu do przetwarzania umieszczany jest w zmiennej .SM \fBOPTIND\fP. .SM \fBOPTIND\fP inicjowany jest na 1 za każdym razem, gdy wywoływana jest powłoka lub skrypt powłoki. Gdy opcja wymaga argumentu, \fBgetopts\fP umieszcza go w zmiennej .SM \fBOPTARG\fP. Powłoka nie resetuje .SM \fBOPTIND\fP automatycznie; musi być on resetowany ręcznie pomiędzy wielokrotnymi odwołaniami do \fBgetopts\fP w tym samym wywołaniu powłoki, jeśli używany ma być nowy zestaw parametrów. .sp 1 Po napotkaniu końca opcji, \fBgetopts\fP kończy pracę zwracając wartość większą od zera. .SM \fBOPTIND\fP ustawiane jest na indeks pierwszego argumentu nie będącego opcją, zaś \fBnazwa\fP ustawiana jest na ?. .sp 1 \fBgetopts\fP normalnie analizuje parametry pozycyjne, ale jeśli w \fIargumentach\fP, podano więcej argumentów, to \fBgetopts\fP przetwarza je zamiast parametrów pozycyjnych. .sp 1 \fBgetopts\fP może zgłaszać błędy na dwa sposoby. Jeżeli pierwszym znakiem \fIłańcucha opcji\fP jest dwukropek, to stosowane jest \fIciche\fP (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 .SM \fBOPTERR\fP ustawiona jest na 0, nie będą wyświetlane żadne komunikaty błędów, nawet jeśli pierwszym znakiem \fIłańcucha opcji\fP nie jest dwukropek. .sp 1 Przy napotkaniu nieprawidłowej opcji \fBgetopts\fP umieszcza ? w \fInazwie\fP i, jeśli nie pracuje w trybie cichym, wypisuje komunikat błędu i kasuje .SM \fBOPTARG\fP. Jeżeli \fBgetopts\fP pracuje w trybie cichym, to znaleziony znak opcji umieszczany jest w .SM \fBOPTARG\fP i nie jest wypisywany żaden komunikat diagnostyczny. .sp 1 Jeśli nie znaleziono wymaganego argumentu, a \fBgetopts\fP nie pracuje w trybie cichym, w \fInazwa\fP umieszczany jest znak zapytania (\^\fB?\fP\^), kasowane jest .SM \fBOPTARG\fP i wyświetlany jest komunikat błędu. Jeżeli \fBgetopts\fP pracuje w trybie cichym, to w \fInazwie\fP umieszczany jest dwukropek (\^\fB:\fP\^), a .SM \fBOPTARG\fP ustawiane jest na znaleziony znak opcji. .sp 1 \fBgetopts\fP 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. .TP \fBhash\fP [\fB\-lr\fP] [\fB\-p\fP \fIplik\fP] [\fB\-dt\fP] [\fInazwa\fP] Dla każdej \fInazwy\fP określana i zapamiętywana jest pełna nazwa plikowa polecenia wyszukanego w katalogach \fB$PATH\fP. Jeżeli podano opcję \fB\-p\fP, nie jest wykonywane przeszukanie ścieżki, a \fIplik\fP używane jest jako pełna nazwa pliku polecenia. Opcja \fB\-r\fP powoduje, że powłoka zapomina wszystkie zapamiętane wcześniej miejsca. Opcja \fB\-d\fP powoduje, że powłoka zapomina wszystkie zapamiętane wcześniej miejsca dla każdej \fInazwy\fP. Jeśli podano opcję \fB\-t\fP, to wypisywana jest odpowiadająca \fInazwie\fP pełna nazwa pliku. Jeżeli przy więcej niż jednym argumencie \fInazwy\fP podano \fB\-t\fP, to przed każdą przechowywaną pełną nazwą wypisywana jest \fInazwa\fP. Opcja \fB\-l\fP powoduje wyświetlanie wyniku w formacie, który może zostać ponownie wykorzystany jako wejście. Jeżeli nie podano żadnych argumentów, to wypisywana jest informacja o zapamiętanych poleceniach. Kodem zwracanym jest prawda, chyba że nie odnaleziono \fInazwy\fP lub podano nieprawidłową opcję. .TP \fBhelp\fP [\fB\-dms\fP] [\fIwzorzec\fP] Wyświetla pomocne informacje o poleceniach wbudowanych. Jeżeli podano \fIwzorzec\fP, to \fBhelp\fP daje szczegółową pomoc dotyczącą wszystkich poleceń pasujących do \fIwzorca\fP; w przeciwnym razie wypisywana jest pomoc dla wszystkich poleceń wbudowanych i struktur sterujących powłoki. .RS .PD 0 .TP \fB\-d\fP Wyświetla krótki opis dla każdego \fIwzorca\fP .TP \fB\-m\fP Wyświetla opis dla każdego \fIwzorca\fP w formacie podobnym do strony man .TP \fB\-s\fP Wyświetla jedynie krótkie podsumowanie użycia każdego \fIwzorca\fP .PD .PP Kodem zakończenia jest 0, chyba nie nie dopasowano żadnego polecenia do \fIwzorca\fP. .RE .TP \fBhistory [\fP\fIn\fP\fB]\fP .PD 0 .TP \fBhistory\fP \fB\-c\fP .TP \fBhistory \-d\fP \fIprzesunięcie\fP .TP \fBhistory\fP \fB\-anrw\fP [\fIplik\fP] .TP \fBhistory\fP \fB\-p\fP \fIarg\fP [\fIarg ...\fP] .TP \fBhistory\fP \fB\-s\fP \fIarg\fP [\fIarg ...\fP] .PD Bez żadnych opcji, wyświetla listę historii poleceń z numerami wierszy. Wiersze ukazane z \fB*\fP zostały zmienione. Argument \fIn\fP pokazuje jedynie ostatnich \fIn\fP wierszy. Jeśli ustawiono zmienną powłoki .SM \fBHISTTIMEFORMAT\fP i nie jest ona pusta, to do wyświetlania pieczątek czasowych związanych z każdym wyświetlanym wpisem historii używany jest format łańcucha do \fIstrftime\fP(3). Pomiędzy formatowaną pieczątką czasową a wierszem historii nie jest wstawiany odstęp. Jeżeli podano \fIplik\fP, to używany jest on jako nazwa pliku historii; jeśli nie, to używana jest wartość .SM \fBHISTFILE\fP. Opcje, jeżeli je podano, mają następujące znaczenie: .RS .PD 0 .TP \fB\-c\fP Czyści listę historii usuwając wszystkie jej pozycje. .TP \fB\-d\fP \fIprzesunięcie\fP Usuwa wpis historii z pozycji \fIprzesunięcie\fP. .TP \fB\-a\fP Dodaje "nowe" wiersze do pliku historii. Są to wiersze historii wprowadzone od początku bieżącej sesji \fBbash\fP, lecz nie dodane jeszcze do pliku historii. .TP \fB\-n\fP 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 \fBbash\fP. .TP \fB\-r\fP Czyta zawartość pliku historii i dodaje ją do bieżącej listy historii. .TP \fB\-w\fP Zapisuje bieżącą listę historii do pliku historii, nadpisując jego zawartość. .TP \fB\-p\fP Na zadanych \fIargumentach\fP wykonuje podstawianie historii (history substitution). Wyświetla wyniki na standardowym wyjściu. Nie zachowuje wyników na liście. Każdy z \fIargumentów\fP musi być cytowany, by wyłączyć normalną interpretację historii. .TP \fB\-s\fP Zachowuje \fIargumenty\fP na liście historii jako pojedynczą pozycję. Przed dodaniem \fIargumentów\fP z listy usuwane jest ostatnie polecenie. .PD .PP Jeśli ustawiona jest zmienna .SM \fBHISTTIMEFORMAT\fP, to do pliku historii zapisywana jest informacja o czasie związanym z każdym wpisem historii, oznaczona znakiem komentarza historii. Gdy plik historii jest odczytywany, wiersze zaczynające się znakiem komentarza historii, po którym występuje bezpośrednio cyfra, są interpretowane jako czasy kolejnego wpisu. 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 \fIoffset\fP opcji \fB\-d\fP, lub nie powiodła się interpretacja historii podanej jako argument \fB\-p\fP. .RE .TP \fBjobs\fP [\fB\-lnprs\fP] [ \fIzadanie\fP ... ] .PD 0 .TP \fBjobs\fP \fB\-x\fP \fIpolecenie\fP [ \fIargumenty\fP ... ] .PD Pierwsza postać podaje aktywne zadania. Opcje mają następujące znaczenie: .RS .PD 0 .TP \fB\-l\fP Oprócz zwykłej informacji podaje identyfikatory procesów. .TP \fB\-n\fP Wyświetla wyłącznie informację o zadaniach, które zmieniły status od chwili, gdy użytkownik był ostatnio powiadamiany o ich statusie. .TP \fB\-p\fP Listuje tylko ID procesu lidera grupy procesów zadania. .TP \fB\-r\fP Wyświetla jedynie działające zadania. .TP \fB\-s\fP Wyświetla jedynie zatrzymane zadania. .PD .PP Jeżeli podano \fIzadanie\fP, wyniki ograniczane są do informacji o tym zadaniu. Kodem zwracanym jest 0, chyba że napotkano nieprawidłową opcję lub podano nieprawidłowe \fIzadanie\fP. .PP Jeżeli podano opcję \fB\-x\fP, to \fBjobs\fP zastępuje wszelkie \fIzadania\fP znalezione w \fIpoleceniu\fP lub \fIargumentach\fP odpowiednim ID grupy procesów, wykonuje \fIpolecenie\fP przesyłając mu \fIargumenty\fP, i zwraca jego kod zakończenia. .RE .TP \fBkill\fP [\fB\-s\fP \fIsigspec\fP | \fB\-n\fP \fIsignum\fP | \fB\-\fP\fIsigspec\fP] [\fIpid\fP | \fIjobspec\fP] ... .PD 0 .TP \fBkill\fP \fB\-l\fP|\fB\-L\fP [\fIsigspec\fP | \fIexit_status\fP] .PD Wysyła sygnały określony przez \fIsigspec\fP lub \fIsignum\fP do procesu określonego przez \fIpid\fP lub \fIjobspec\fP. \fIsigspec\fP jest albo nazwą sygnału, jak np. .SM \fBSIGKILL\fP (z lub bez przedrostka .SM \fBSIG\fP) albo numerem sygnału; \fIsignum\fP jest numerem sygnału. Jeśli nie podano \fIsigspec\fP, to przyjmuje się .SM \fBSIGTERM\fP. Opcja \fB\-l\fP listuje nazwy sygnałów. Jeżeli przy podanym \fB\-l\fP użyto jakichś argumentów, to listowane są sygnały odpowiadające tym argumentom, a kodem zwracanym jest 0. Argument \fIexit_status\fP opcji \fB\-l\fP jest liczbą określającą numer sygnału lub kod zakończenia procesu przerwanego przez sygnał. Opcja \fB\-L\fP jest równoważna \fB\-l\fP. \fBkill\fP 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ę. .TP \fBlet\fP \fIarg\fP [\fIarg\fP ...] Każdy \fIargument\fP jest wyrażeniem arytmetycznym, jakie ma zostać zinterpretowane (zobacz .SM \fBOBLICZANIE WYRAŻEŃ ARYTMETYCZNYCH\fP). Jeżeli ostatni z nich interpretowany jest jako zero, to \fBlet\fP zwraca 1; w przeciwnym wypadku zwracane jest 0. .TP \fBlocal\fP [\fIopcja\fP] [\fInazwa\fP[=\fIwartość\fP] ... | \- ] Dla każdego argumentu tworzona jest zmienna lokalna o nazwie \fInazwa\fP i jest jej przypisywana \fIwartość\fP. \fIOpcją\fP może być każda z opcji akceptowanych przez \fBdeclare\fP. Gdy \fBlocal\fP używane jest wewnątrz funkcji, powoduje, że zmienna \fInazwa\fP ma zasięg widzialności ograniczony do tej funkcji i jej potomków. Jeśli \fInazwą\fP jest \fB\-\fP, ustawienie opcji powłoki jest lokalne w stosunku do funkcji w której \fBlocal\fP wywołano: opcje powłoki zmienione za pomocą\ polecenia wbudowanego \fBset\fP wewnątrz funkcji są\ przywracane do pierwotnych wartości po powrocie funkcji. Bez operandów, \fBlocal\fP wysyła listę zmiennych lokalnych na standardowe wyjście. Błędem jest użycie \fBlocal\fP poza funkcją. Zwracany jest kod 0, chyba że \fBlocal\fP zostanie użyte poza funkcją lub podano nieprawidłową \fInazwę\fP, albo \fInazwa\fP jest zmienną tylko do odczytu. .TP \fBlogout\fP Kończy pracę powłoki zgłoszeniowej. .TP \fBmapfile\fP [\fB\-d\fP \fIsep\fP] [\fB\-n\fP \fIliczba\fP] [\fB\-O\fP \fIindeks\fP] [\fB\-s\fP \fIliczba\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIwywoł\-zwr\fP] [\fB\-c\fP \fIwielkość\fP] [\fItablica\fP] .PD 0 .TP \fBreadarray\fP [\fB\-d\fP \fIsep\fP] [\fB\-n\fP \fIliczba\fP] [\fB\-O\fP \fIindeks\fP] [\fB\-s\fP \fIliczba\fP] [\fB\-t\fP] [\fB\-u\fP \fIfd\fP] [\fB\-C\fP \fIwywoł\-zwr\fP] [\fB\-c\fP \fIwielkość\fP] [\fItablica\fP] .PD Odczytuje wiersze ze standardowego wejścia do indeksowanej zmiennej tablicowej \fItablica\fP lub, jeśli podano opcję \fB\-u\fP, z deskryptora pliku \fIfd\fP. Domyślną \fItablicą\fP jest zmienna .SM \fBMAPFILE\fP Opcje, jeśli je podano, mają następujące znaczenie: .RS .PD 0 .TP \fB\-d\fP Pierwszy znak \fIsep\fP służy do zakończenia każdego wiersza wejścia, zamiast znaku nowego wiersza. .TP \fB\-n\fP Kopiuje najwyżej \fIliczbę\fP wierszy. Gdy \fIliczba\fP wynosi 0, kopiowane są wszystkie wiersze. .TP \fB\-O\fP Rozpoczyna przypisywanie do \fItablicy\fP od indeksu \fIindeks\fP. Domyślnym jest 0. .TP \fB\-s\fP Pomija pierwsze \fIliczba\fP wierszy. .TP \fB\-t\fP Usuwa końcowy \fIsep\fP (domyślnie znak nowego wiersza) z każdego odczytanego wiersza. .TP \fB\-u\fP Odczytuje wiersze z deskryptora pliku \fIfd\fP zamiast ze standardowego wejścia. .TP \fB\-C\fP Oblicza \fIwywoł\-zwr\fP po każdym odczytaniu liczby \fIwielkość\fP wierszy. Opcja \fB\-c\fP określa \fIwielkość\fP. .TP \fB\-c\fP Określa liczbę wierszy odczytanych pomiędzy każdym odwołaniem do \fIwywoł\-zwr\fP. .PD .PP Jeśli podano \fB\-C\fP bez \fB\-c\fP, to domyślną wielkością jest 5000. Gdy wykonywane jest \fIwywoł\-zwr\fP, jako dodatkowe argumenty przekazywane są mu indeks następnego elementu tablicy do przypisania i wiersza, który ma być przypisy do tego elementu. \fIWywoł\-zwr\fP jest wykonywane po odczytaniu wiersza, ale przed przypisaniem elementu tablicy. .PP Jeśli nie podano indeksu, \fBmapfile\fP wyczyści \fItablicę\fP przed przypisaniem do niej wartości. .PP Polecenie \fBmapfile\fP zwraca sukces, chyba że podano nieprawidłową opcję lub argument opcji, \fItablica\fP jest nieprawidłowa, nie da się do niej przypisać wartości lub nie jest tablicą indeksowaną. .RE .TP \fBpopd\fP [\-\fBn\fP] [+\fIn\fP] [\-\fIn\fP] Usuwa pozycje ze stosu katalogów. Bez argumentów, usuwa katalog z wierzchołka stosu i wykonuje \fBcd\fP do nowego katalogu na wierzchołku. Argumenty, jeśli występują, mają następujące znaczenie: .RS .PD 0 .TP \fB\-n\fP Nie wykonuje zwykłej zmiany katalogu podczas usuwania katalogów ze stosu, tak że zmieniany jest tylko stos. .TP \fB+\fP\fIn\fP Usuwa \fIn\fPtą pozycję, licząc od lewej, listy pokazywanej przez \fBdirs\fP, zaczynając od zera. Na przykład .if n ``popd +0'' .if t \f(CWpopd +0\fP usuwa pierwszy katalog, a .if n ``popd +1'' .if t \f(CWpopd +1\fP drugi. .TP \fB\-\fP\fIn\fP Usuwa \fIn\fPtą pozycję, licząc od prawej, listy pokazywanej przez \fBdirs\fP, zaczynając od zera. Na przykład .if n ``popd -0'' .if t \f(CWpopd -0\fP usuwa ostatni katalog, a .if n ``popd -1'' .if t \f(CWpopd -1\fP przedostatni. .PD .PP Jeżeli polecenie \fBpopd\fP powiedzie się, to wykonywane jest również \fBdirs\fP, a kodem zwracanym jest 0. \fBpopd\fP 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. .RE .TP \fBprintf\fP [\fB\-v\fP \fIzmienna\fP] \fIformat\fP [\fIargumenty\fP] Zapisuje sformatowane \fIargumenty\fP na standardowe wyjście przy pomocy zadanego \fIformatu\fP. Opcja \fB\-v\fP przypisuje wynik do zmiennej \fIzmienna\fP zamiast wyświetlać je na standardowe wyjściowe. .sp 1 \fIformat\fP 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 \fIargumentu\fP. Oprócz standardowych formatów \fIprintf\fP(1), interpretuje on również następujące rozszerzenia: .RS .PD 0 .TP \fB%b\fP powoduje, że \fBprintf\fP interpretuje sekwencje ucieczki z ukośnikiem w danym \fIargumencie\fP w ten sam sposób co \fBecho \-e\fP. .TP \fB%q\fP powoduje, że \fBprintf\fP wysyła odpowiedni \fIargument\fP w formacie, jaki może być ponownie wykorzystany jako wejście powłoki. .TP \fB%(\fP\fIformat\-daty\fP\fB)T\fP powoduje, że \fBprintf\fP wyświetla łańcuch daty/czasu jako rezultat użycia \fIformatu\-daty\fP jako łańcucha formatu do \fIstrftime\fP(3). Powiązany \fIargument\fP jest liczba całkowitą odpowiadającą liczbie sekund od początku epoki [Uniksa]. Można użyć dwóch specjalnych wartości argumentu: \-1 reprezentuje bieżący czas, a \-2 odpowiada czasowi wywołania powłoki. Jeśli nie poda się argumentu, konwersja przebiega tak, jak gdyby podano \-1. Jest to wyjątek w zwyczajnym zachowaniu \fBprintf\fP. .PD .PP Argumenty do specyfikacji formatu niebędących łańcuchami są traktowane jako stałe C, z wyjątkiem początkowego znaku plus lub minus, który jest dozwolony oraz przypadku gdy pierwszy znak jest pojedynczym lub podwójnym apostrofem, gdy wartością jest wartość ASCII następującego po cudzysłowie znaku. .PP W razie potrzeby \fIformat\fP wykorzystywany jest ponownie, aż do obsłużenia wszystkich \fIargumentów\fP. Jeżeli \fIformat\fP wymaga większej ilości \fIargumentów\fP 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. .RE .TP \fBpushd\fP [\fB\-n\fP] [+\fIn\fP] [\-\fIn\fP] .PD 0 .TP \fBpushd\fP [\fB\-n\fP] [\fIkatalog\fP] .PD Dodaje katalog na wierzchołek stosu katalogów, albo obraca stos, czyniąc nowy wierzchołek stosu bieżącym katalogiem roboczym. Bez argumentów, \fBpushd\fP 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: .RS .PD 0 .TP \fB\-n\fP Nie wykonuje zwykłej zmiany katalogu podczas obracania lub dodawania katalogów do stosu, tak że zmieniany jest tylko stos. .TP \fB+\fP\fIn\fP Obraca stos, tak że \fIn\fPty katalog (licząc od lewej listy pokazywanej przez \fBdirs\fP, poczynając od zera) staje się wierzchołkiem. .TP \fB\-\fP\fIn\fP Obraca stos, tak że \fIn\fPty katalog (licząc od prawej listy pokazywanej przez \fBdirs\fP, poczynając od zera) staje się wierzchołkiem. .TP \fIkatalog\fP Odkłada \fIkatalog\fP na wierzchołek stosu, czyniąc go nowym bieżącym katalogiem roboczym, jak gdyby podano go jako argument do polecenia wbudowanego \fBcd\fP. .PD .PP Jeżeli polecenie \fBpushd\fP powiodło się, to wykonywane jest również \fBdirs\fP. Jeżeli używana jest pierwsza postać \fBpushd\fP, to zwracane jest 0, chyba że nie udało się cd na \fIkatalog\fP. Przy drugiej postaci, \fBpushd\fP 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. .RE .TP \fBpwd\fP [\fB\-LP\fP] Wypisuje bezwzględną nazwę pliku bieżącego katalogu roboczego. Pokazana nazwa nie zawiera żadnych dowiązań symbolicznych jeśli podano opcję \fB\-P\fP albo włączona jest opcja \fB\-o physical\fP wbudowanego polecenia \fBset\fP. Jeśli użyto opcji \fB\-L\fP, 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ę. .TP \fBread\fP [\fB\-ers\fP] [\fB\-a\fP \fIanazwa\fP] [\fB\-d\fP \fIznak\-odst\fP] [\fB\-i\fP \fItekst\fP] [\fB\-n\fP \fInznaki\fP] [\fB\-N\fP \fInznaki\fP] [\fB\-p\fP \fIzachęta\fP] [\fB\-t\fP \fIczas\-oczek\fP] [\fB\-u\fP \fIfd\fP] [\fInazwa\fP ...] Czytany jest pojedynczy wiersz ze standardowego wejścia lub z deskryptora pliku \fIfd\fP podanego jako argument do opcji \fB\-u\fP, dzielony na słowa, w sposób opisany powyżej w rozdziale \fBPodział na słowa\fP, a jego pierwsze słowo jest przypisywane do pierwszej \fInazwy\fP, drugie słowo do drugiej \fInazwy\fP i tak dalej. Jeśli jest więcej słów niż nazw, pozostałe słowa i rozdzielające je separatory przypisane zostaną do ostatniej \fInazwy\fP. 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 .SM \fBIFS\fP, korzystając z tych samych zasad, jakich powłoka używa do interpretacji (opisanych powyżej w rozdziale \fBPodział na słowa\fP). Znaku odwrotnego ukośnika (\fB\e\fP) 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: .RS .PD 0 .TP \fB\-a \fP\fIanazwa\fP Słowa są przypisywane do kolejnych indeksów zmiennej tablicowej \fIanazwa\fP, poczynając od 0. \fIanazwa\fP jest kasowana przed przypisaniem nowych wartości. Inne argumenty \fInazwa\fP są ignorowane. .TP \fB\-d \fP\fIsep\fP Pierwszy znak \fIsep\fP służy do zakończenia wiersza wejścia, zamiast znaku nowej linii. .TP \fB\-e\fP Jeżeli standardowe wejście pochodzi z terminala, to do uzyskania wiersza używane jest \fBreadline\fP (zobacz .SM \fBREADLINE\fP powyżej). Readline używa bieżących (lub domyślnych, jeśli edycja wiersza nie była wcześniej aktywna) ustawień edycyjnych. .TP \fB\-i \fP\fItekst\fP Gdy do odczytu wiersza jest używane \fBreadline\fP, \fItekst\fP jest umieszczany w buforze edycyjnym przed rozpoczęciem edycji. .TP \fB\-n \fP\fInznaki\fP \fBread\fP powraca po przeczytaniu \fInznaki\fP znaków, zamiast czekać na cały wiersz wejścia, ale przestrzega znaku odstępu jeśli odczytano mniej niż \fInznaki\fP znaków przed odstępem. .TP \fB\-N \fP\fInznaki\fP Polecenie \fBread\fP powraca pod przeczytaniu dokładnie \fInznaków\fP, zamiast czekać na cały wiersz wejścia, chyba że wystąpił koniec wiersza lub czas oczekiwania \fBread\fP minął. Znaki odstępu napotkane w wejściu nie są traktowane w sposób specjalny i nie powodują powrotu \fBread\fP, dopóki nie zostanie przeczytanych \fInznaków\fP. Wynik nie jest dzielony na znaki w \fBIFS\fP; założenie jest takie, że zmienna jest przypisywana dokładnie odczytanym znakom (z wyłączeniem ukośnika; zob. opcja \fB\-r\fP poniżej). .TP \fB\-p \fP\fIzachęta\fP Wyświetla \fIzachętę\fP (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. .TP \fB\-r\fP 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. .TP \fB\-s\fP Tryb cichy. Jeżeli wejście pochodzi z terminala, to znaki nie są powtarzane (bez echa). .TP \fB\-t \fP\fIczas\-oczek\fP Powoduje, że \fBread\fP zwraca niepowodzenie, jeśli w ciągu \fIczas\-oczek\fP sekund nie zostanie przeczytany pełny wiersz wejścia (lub określona liczba znaków). \fICzas\-oczek\fP może być liczbą dziesiętną z częścią ułamkową po znaku kropce. Opcja działa jedynie gdy \fBread\fP odczytuje wejście z terminala, potoku lub innego pliku specjalnego, nie działa natomiast podczas czytania ze zwykłych plików. Jeśli \fBread\fP przeterminuje się, \fBread\fP zachowuje odczytane częściowe wejście do podanej zmiennej \fInazwa\fP. Jeśli \fIczas\-oczek\fP ustawiono na 0, to \fBread\fP zwraca kod zakończenia natychmiast, bez próby odczytu jakichkolwiek danych. Kodem zakończenia jest 0, jeśli wejście jest dostępne na określonym deskryptorze pliku lub zwraca kod niezerowy w przeciwnym wypadku. Kod zakończenia jest większy od 128, jeśli przekroczono czas oczekiwania. .TP \fB\-u \fP\fIfd\fP Czyta wejście z deskryptora pliku \fIfd\fP. .PD .PP Jeśli nie podano żadnych \fInazw\fP, odczytany wiersz przypisywany jest zmiennej .SM \fBREPLY\fP. Zwracany kod zakończenia wynosi 0, chyba że napotkano koniec pliku lub \fBread\fP przekroczy czas oczekiwania (w takim przypadku jest on większy od 128) wystąpi błąd przypisania zmiennej (takich jak przypisanie do zmiennej tylko do odczytu) lub jako argument do \fB\-u\fP podano nieprawidłowy deskryptor pliku. .RE .TP \fBreadonly\fP [\fB\-aAf\fP] [\fB\-p\fP] [\fInazwa\fP[=\fIsłowo\fP] ...] .PD Podane \fInazwy\fP oznaczane są jako readonly; wartości tych \fInazw\fP nie mogą być zmieniane następującymi później przypisaniami. Jeśli podano opcję \fB\-f\fP, oznaczane są funkcje o nazwach odpowiadających \fInazwom\fP. Opcja \fB\-a\fP ogranicza zmienne do tablic indeksowanych, a \fB\-A\fP do tablic asocjacyjnych. Jeśli podano obie opcje, pierwszeństwo ma opcja \fB\-A\fP. Jeśli nie podano argumentów \fInazw\fP lub jeśli podano opcję \fB\-p\fP, wypisywane jest zestawienie wszystkich nazw o atrybucie readonly. Inne opcje mogą zostać użyte do ograniczenia wyniku do podzbioru nazw readonly. Opcja \fB\-p\fP powoduje, że wyniki będą wyświetlane w formacie, który może być ponownie wykorzystany jako wejście. Jeśli po nazwie zmiennej występuje =\fIsłowo\fP, to wartość zmiennej jest ustawiana na \fIsłowo\fP. Zwracany jest kod równy 0, chyba że napotkano nieprawidłową opcję, jedna z \fInazw\fP nie jest poprawną nazwą zmiennej powłoki lub podano \fB\-f\fP z \fInazwą\fP, która nie jest funkcją. .TP \fBreturn\fP [\fIn\fP] Powoduje, że funkcja przerywa wykonywanie i zwraca wartość określoną przez \fIn\fP do wywołującego. Jeśli pominięto \fIn\fP, kodem zakończenia jest kod ostatniego polecenia wykonanego w ciele funkcji. Jeśli \fBreturn\fP jest wykonywane przez obsługę\ pułapki, ostatnie polecenie służące do określenia statusu jest ostatnim poleceniem wykonywanym przed obsługą\ pułapki. Jeśli \fBreturn\fP jest wykonywane podczas pułapki \fBDEBUG\fP, ostatnie polecenie użyte do określenia statusu jest ostatnim poleceniem wykonanym przez obsługę\ pułapki przed tym, zanim wywołano \fBreturn\fP. Jeżeli \fBreturn\fP zostanie użyte poza funkcją, ale podczas wykonywania skryptu przez polecenie \&\fB.\fP (\fBsource\fP), powoduje zatrzymanie wykonywania tego skryptu przez powłokę i zwrócenie albo \fIn\fP albo kodu zakończenia ostatniego wykonanego w skrypcie polecenia. Jeśli poda się \fIn\fP, zwracaną wartością jest 8 bitów najmniej znaczących. Kod zakończenia jest niezerowy, jeśli \fBreturn\fP poda się argument nienumeryczny lub jeżeli jest ono użyte poza funkcją i nie podczas wykonywania skryptu przez \fB.\fP\^ lub \fBsource\fP. Wszystkie polecenia związane z pułapką (trap) \fBRETURN\fP są wykonywane przez wznowieniem wykonywania po powrocie do funkcji lub skryptu. .TP \fBset\fP [\fB\-\-abefhkmnptuvxBCEHPT\fP] [\fB\-o\fP \fIopcja\fP] [\fIarg\fP ...] .PD 0 .TP \fBset\fP [\fB+abefhkmnptuvxBCEHPT\fP] [\fB+o\fP \fIopcja\fP] [\fIarg\fP ...] .PD 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 do ustawiania lub ponownego ustawiania aktualnie ustawionych zmiennych. Zmienne tylko do odczytu nie mogą być ponownie ustawiane. W trybie \fIposix\fP, wypisywane są jedynie zmienne powłoki. 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 \fB$1\fP, \fB$2\fP, \&\fB...\fP \fB$\fP\fIn\fP. Opcje, jeśli je podano, mają następujące znaczenie: .RS .PD 0 .TP 8 \fB\-a\fP Każdej utworzonej lub zmodyfikowanej zmiennej lub funkcji nadawany jest atrybut eksportu oraz oznaczane są one jako do wyeksportowania ich do środowiska kolejnych poleceń. .TP 8 \fB\-b\fP 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ń. .TP 8 \fB\-e\fP Zakończ natychmiast, jeśli \fIpotok\fP (który może składać się z pojedynczego \fIpolecenia prostego\fP), \fIlisty\fP lub \fIpolecenia złożonego\fP (zob. .SM \fBGRAMATYKA POWŁOKI\fP powyżej) kończy pracę z kodem niezerowym. Powłoka nie kończy pracy jeśli polecenie, które się nie powiodło znajduje się zaraz za słowem kluczowym \fBwhile\fP lub \fBuntil\fP, jest częścią tekstu po słowach zastrzeżonych \fBif\fP lub \fBelif\fP, jest częścią listy \fB&&\fP lub \fB\(bv\(bv\fP, jest częścią każdego poza ostatnim poleceniem potoku, lub wartość zwrócona przez polecenie została odwrócona przez \fB!\fP. Jeśli polecenie złożone inne niż podpowłoka zwróci niezerowy status z powodu niepowodzenia polecenia, gdy \fB\-e\fP było ignorowane, powłoka nie wyjdzie. Przed zakończeniem pracy powłoki wykonywana jest pułapka na sygnał \fBERR\fP, jeśli była ustawiona. Ta opcja stosuje się do środowiska powłoki i oddzielnie do każdej podpowłoki środowiska (zobacz .SM \fBŚRODOWISKO\fP \fBWYKONYWANIA\fP \fBPOLECEŃ\fP powyżej) i może spowodować zakończenie podpowłok przed wykonaniem wszystkich poleceń w podpowłoce. .if t .sp 0.5 .if n .sp 1 Jeśli polecenie złożone lub funkcja powłoki jest wykonywana w kontekście, w którym \fB\-e\fP jest ignorowane, to żadne z poleceń wykonywanych w poleceniu złożonym lub ciele funkcji nie zostanie dotknięte ustawieniem \fB\-e\fP, nawet jeśli \fB\-e\fP jest ustawione, a polecenie zwróci kod błędu. Jeśli polecenie złożone lub funkcja powłoki ustawi \fB\-e\fP w trakcie wykonywania w kontekście, w którym \fB\-e\fP jest ignorowane, to ustawienie nie odniesie żadnego skutku dopóki polecenie złożone lub polecenie zawierające wywołanie funkcji nie zakończy się. .TP 8 \fB\-f\fP Wyłącza rozwijanie nazw plików. .TP 8 \fB\-h\fP Zapamiętuje położenie poleceń przy wyszukiwania ich do wykonania. Domyślnie włączone. .TP 8 \fB\-k\fP Wszystkie argumenty występujące w postaci instrukcji przypisania umieszczane są w środowisku polecenia, nie zaś tylko te, które poprzedzają nazwę polecenia. .TP 8 \fB\-m\fP 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 .SM \fBSTEROWANIE ZADANIAMI\fP powyżej). Wszystkie procesy działają w odrębnej grupie procesów. Gdy zadanie działające w tle zakończy się, powłoka wypisuje wiersz zawierający jego kod zakończenia. .TP 8 \fB\-n\fP 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. .TP 8 \fB\-o \fP\fInazwa\-opcji\fP \fINazwą\-opcji\fP może być jedna z poniższych: .RS .TP 8 \fBallexport\fP To samo, co \fB\-a\fP. .TP 8 \fBbraceexpand\fP To samo, co \fB\-B\fP. .TP 8 \fBemacs\fP 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ą \fB\-\-noediting\fP. Wpływa to również na interfejs edycyjny używany przez \fBread \-e\fP. .TP 8 \fBerrexit\fP To samo, co \fB\-e\fP. .TP 8 \fBerrtrace\fP To samo, co \fB\-E\fP. .TP 8 \fBfunctrace\fP To samo, co \fB\-T\fP. .TP 8 \fBhashall\fP To samo, co \fB\-h\fP. .TP 8 \fBhistexpand\fP To samo, co \fB\-H\fP. .TP 8 \fBhistory\fP Włącza historię poleceń, jak opisano powyżej w sekcji .SM \fBHISTORII\fP. Opcja ta jest domyślnie włączona w powłokach interaktywnych. .TP 8 \fBignoreeof\fP Efekt jest taki, jakby zostało wykonane polecenie powłoki .if t \f(CWIGNOREEOF=10\fP .if n ``IGNOREEOF=10'' (zobacz powyżej \fBZmienne powłoki\fP). .TP 8 \fBkeyword\fP To samo, co \fB\-k\fP. .TP 8 \fBmonitor\fP To samo, co \fB\-m\fP. .TP 8 \fBnoclobber\fP To samo, co \fB\-C\fP. .TP 8 \fBnoexec\fP To samo, co \fB\-n\fP. .TP 8 \fBnoglob\fP To samo, co \fB\-f\fP. .TP 8 \fBnolog\fP Obecnie ignorowane. .TP 8 \fBnotify\fP To samo, co \fB\-b\fP. .TP 8 \fBnounset\fP To samo, co \fB\-u\fP. .TP 8 \fBonecmd\fP To samo, co \fB\-t\fP. .TP 8 \fBphysical\fP To samo, co \fB\-P\fP. .TP 8 \fBpipefail\fP Gdy ustawione, zwracana wartość potoku jest wartością ostatniego (po prawej) polecenia, które zakończyło się z kodem niezerowym lub zero, gdy wszystkie polecenia w potoku zakończyły się sukcesem. Opcja jest domyślnie wyłączona. .TP 8 \fBposix\fP Zmienia zachowanie \fBbash\fP tam, gdzie domyślne działanie różni się od standardu POSIX, tak by spełniać standard (\fItryb posix\fP). Więcej informacji o tym, jak tryb posix wpływa na zachowanie powłoki można znaleźć w dokumencie do którego odsyła .SM \fBZOBACZ TAKŻE\fP. .TP 8 \fBprivileged\fP To samo, co \fB\-p\fP. .TP 8 \fBverbose\fP To samo, co \fB\-v\fP. .TP 8 \fBvi\fP Używa interfejsu edycji wiersza poleceń w stylu vi. Wpływa to również na interfejs edycyjny używany przez \fBread \-e\fP. .TP 8 \fBxtrace\fP To samo, co \fB\-x\fP. .sp .5 .PP Jeżeli podano \fB\-o\fP bez \fInazwy\-opcji\fP, to wypisywane są wartości bieżących opcji. Jeżeli podano \fB+o\fP bez \fInazwy\-opcji\fP, na standardowym wyjściu wyświetlana jest seria poleceń \fBset\fP potrzebnych do odtworzenia aktualnych ustawień opcji. .RE .TP 8 \fB\-p\fP Włącza tryb \fIuprzywilejowany\fP (privileged). W tym trybie pliki .SM \fB$ENV\fP i .SM \fB$BASH_ENV\fP nie są przetwarzane, funkcje powłoki nie są dziedziczone ze środowiska, a zmienne .SM \fBSHELLOPTS,\fP .SM \fBBASHOPTS\fP, .SM \fBCDPATH\fP i .SM \fBGLOBIGNORE\fP, jeśli występują w środowisku, są ignorowane. Jeśli powłoka została uruchomiona z efektywnym id użytkownika (grupy) różnym od id rzeczywistego a nie podano opcji \fB\-p\fP, to podejmowane są opisane wyżej akcje a efektywny id użytkownika jest ustawiany na identyfikator rzeczywisty. Jeżeli przy uruchamianiu podano opcję \fB\-p\fP, 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. .TP 8 \fB\-t\fP Kończy pracę po przeczytaniu i wykonaniu jednego polecenia. .TP 8 \fB\-u\fP Podczas interpretacji parametrów traktuje nieustawione zmienne i parametry (poza parametrami specjalnymi "@" i "*") 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. .TP 8 \fB\-v\fP Wypisuje wiersze wejściowe powłoki przy ich odczytywaniu. .TP 8 \fB\-x\fP Po interpretacji każdego \fIpolecenia prostego\fP, poleceń \fBfor\fP, \fBcase\fP i \fBselect\fP lub polecenia arytmetycznego \fBfor\fP wyświetla zinterpretowaną wartość .SM \fBPS4\fP, po której następuje polecenie i jego zinterpretowane argumenty lub powiązana lista słów. .TP 8 \fB\-B\fP Powłoka wykonuje interpretacją nawiasów (zobacz \fBInterpretacja nawiasów\fP powyżej). Domyślnie włączone. .TP 8 \fB\-C\fP Jeśli włączone, \fBbash\fP nie nadpisuje istniejącego pliku przy użyciu operatorów przekierowania \fB>\fP, \fB>&\fP i \fB<>\fP. Można to ominąć tworząc pliki wyjściowe przy użyciu operatora przekierowania \fB>|\fP zamiast \fB>\fP. .TP 8 \fB\-E\fP Gdy ustawiona, pułapka \fBERR\fP jest dziedziczona przez funkcje powłoki, uzupełnienia poleceń i polecenia wykonywane w środowisku podpowłoki. Pułapka \fBERR\fP normalnie nie jest dziedziczona w takich przypadkach. .TP 8 \fB\-H\fP Włącza zastępowanie historii w stylu \fB!\fP. Opcja ta jest domyślnie włączona dla powłoki interaktywnej. .TP 8 \fB\-P\fP Jeżeli jest ustawiona, to powłoka nie rozwiązuje dowiązań symbolicznych podczas wykonywania poleceń zmieniających bieżący katalog roboczy, jak \fBcd\fP. Używa zamiast tego fizycznej struktury katalogów. Domyślnie, \fBbash\fP podąża za logicznym łańcuchem katalogów podczas wykonywania poleceń zmieniających bieżący katalog roboczy. .TP 8 \fB\-T\fP Gdy ustawiona, pułapki \fBDEBUG\fP i \fBRETURN\fP są dziedziczone przez funkcje powłoki, uzupełnienia poleceń i polecenia wykonywane w środowisku podpowłoki. Pułapki \fBDEBUG\fP i \fBRETURN\fP nie są normalnie dziedziczone w takich przypadkach. .TP 8 \fB\-\-\fP Jeżeli po tej opcji nie występują żadne argumenty, to parametry pozycyjne są kasowane. W przeciwnym razie, parametry pozycyjne ustawiane są na \fIargument\fPy, nawet jeśli niektóre z nich zaczynają się od znaku \fB\-\fP. .TP 8 \fB\-\fP Sygnalizuje koniec opcji, powodując przypisanie wszystkich pozostałych \fIargument\fPów do parametrów pozycyjnych. Opcje \fB\-x\fP i \fB\-v\fP są wyłączane. Jeżeli nie ma \fIargumentów\fP, to parametry pozycyjne pozostają bez zmian. .PD .PP 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 \fB$\-\fP. Zwracanym kodem jest zawsze prawda, chyba że napotkano nieprawidłową opcję. .RE .TP \fBshift\fP [\fIn\fP] Parametrom pozycyjnym od \fIn\fP+1 ... zmienia nazwy na \fB$1\fP \&\fB....\fP. Parametry reprezentowane przez liczby \fB$#\fP w dół do \fB$#\fP\-\fIn\fP+1 są usuwane. \fIn\fP musi być liczbą nieujemną mniejszą lub równą \fB$#\fP. Jeżeli \fIn\fP wynosi 0, parametry nie są zmieniane. Jeżeli nie podano \fIn\fP, zakłada się, że wynosi 1. Jeżeli \fIn\fP jest większe od \fB$#\fP, parametry pozycyjne nie są zmieniane. Kod zakończenia jest większy od zera jeżeli \fIn\fP jest większe od \fB$#\fP lub mniejsze od zera; w przeciwnym wypadku 0. .TP \fBshopt\fP [\fB\-pqsu\fP] [\fB\-o\fP] [\fInazwa_opcji\fP ...] Przełącza wartości ustawień sterujących opcjonalnym zachowaniem powłoki. Ustawieniami mogą być te wypisane poniżej lub, gdy użyje się opcji \fB\-o\fP, ustawienia dostępne z opcją \fB\-o\fP do polecenia wbudowanego \fBset\fP.Bez żadnych opcji, albo z opcją \fB\-p\fP, wyświetlana jest lista wszystkich dających się ustawić opcji, ze wskazaniem dla każdej czy jest ona ustawiona czy nie. Opcja \fB\-p\fP 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: .RS .PD 0 .TP \fB\-s\fP Włącz (ustaw) każdą \fInazwę_opcji\fP. .TP \fB\-u\fP Wyłącz (usuń) każdą \fInazwę_opcji\fP. .TP \fB\-q\fP Zaniechaj zwykłego wyświetlania (tryb cichy); zwracany kod wskazuje na to czy \fInazwa_opcji\fP jest ustawiona czy nie ustawiona. Jeżeli z \fB\-q\fP podano wiele argumentów \fInazw_opcji\fP, to zwracanym kodem jest zero, gdy wszystkie \fInazwy_opcji\fP są włączone; w przeciwnym razie kod jest niezerowy. .TP \fB\-o\fP Ogranicza wartości \fInazwy_opcji\fP do wartości zdefiniowanych dla opcji \fB\-o\fP wbudowanego polecenia \fBset\fP. .PD .PP Jeżeli użyto albo \fB\-s\fP albo \fB\-u\fP bez argumentów \fInazw_opcji\fP, \fBshopt\fP pokazuje jedynie te opcji, które, odpowiednio, są ustawione bądź nieustawione. Jeżeli nie wskazano inaczej, opcje \fBshopt\fP są domyślnie wyłączone (nie ustawione). .PP Przy listowaniu opcji zwracany jest kod zerowy jeśli wszystkie \fInazwy_opcji\fP są włączone, niezerowy w przeciwnym wypadku. Przy ustawianiu lub kasowaniu opcji zwracany jest zerowy kod, chyba że \fInazwa_opcji\fP nie jest poprawną opcją powłoki. .PP Lista opcji \fBshopt\fP obejmuje: .if t .sp .5v .if n .sp 1v .PD 0 .TP 8 \fBautocd\fP Jeśli jest ustawiona, nazwa polecenia będąca nazwą katalogu jest wykonywana identycznie, jak gdyby była argumentem polecenia \fBcd\fP. Opcja ta jest używana tylko w powłokach interaktywnych. .TP 8 \fBcdable_vars\fP Jeśli jest ustawiona, to nie będący katalogiem argument wbudowanego polecenia \fBcd\fP uważany jest za nazwę zmiennej; wartością tej zmiennej jest katalog, na który ma nastąpić zmiana. .TP 8 \fBcdspell\fP Jeśli jest ustawiona, to pomniejsze błędy w pisowni składowej katalogu w poleceniu \fBcd\fP 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. .TP 8 \fBcheckhash\fP Jeśli jest ustawiona, \fBbash\fP 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. .TP 8 \fBcheckjobs\fP Jeśli jest ustawiona, \fBbash\fP wypisuje status każdego zatrzymanego i działającego zadania, przed wyjściem z powłoki interaktywnej. Jeśli jakieś zadanie działa, powoduje to odroczenia wyjścia do momentu, gdy zostanie przeprowadzona druga próba wyjścia, bez uruchamiania dodatkowych poleceń pomiędzy próbami (patrz .SM \fBKONTROLA ZADAŃ\fP powyżej). Powłoka zawsze wstrzymuje wychodzenie, gdy jakiekolwiek zadanie jest zatrzymane. .TP 8 \fBcheckwinsize\fP Jeżeli jest ustawione, \fBbash\fP sprawdza rozmiar okna po każdym poleceniu i, jeśli zachodzi potrzeba, aktualizuje wartość .SM \fBLINES\fP i .SM \fBCOLUMNS\fP. .TP 8 \fBcmdhist\fP Jeżeli jest ustawione, \fBbash\fP usiłuje zapisać wszystkie wiersze polecenia wielowierszowego w tej samej pozycji historii. Pozwala to na łatwą ponowną edycję poleceń obejmujących wiele wierszy. .TP 8 \fBcompat31\fP Gdy jest ustawiona, \fBbash\fP używa swego zachowania z wersji 3.1, respektując argumenty cytowane do operatora \fB=~\fP polecenia warunkowego \fB[[\fP orazporównywanie łańcuchów z uwzględnieniem locale, gdy używane są operatory \fB<\fP i \fB>\fP polecenia warunkowego \fB[[\fP. Wersje do bash\-4.1 używają kolejności ASCII i \fIstrcmp\fP(3); wersje od bash\-4.1 używają bieżącej kolejności locale i \fIstrcoll\fP(3). .TP 8 \fBcompat32\fP Gdy jest ustawiona, \fBbash\fP używa swego zachowania z wersji 3.2, respektując porównywanie łańcuchów z uwzględnieniem locale, gdy używane są operatory \fB<\fP i \fB>\fP polecenia warunkowego \fB[[\fP (patrzy opis wyżej) oraz efekt przerywania listy poleceń. Bash w wersji 3.2 i wcześniejszych po przerwaniu bieżącego polecenia kontynuował do następnego polecenia w liście. .TP 8 \fBcompat40\fP Gdy jest ustawiona, \fBbash\fP używa swego zachowania z wersji 4.0, respektując porównywanie łańcuchów z uwzględnieniem locale, gdy używane są operatory \fB<\fP i \fB>\fP polecenia warunkowego \fB[[\fP (zob. opis \fBcompat31\fP) oraz efekt przerywania listy poleceń. Bash w wersji 4.0 i późniejszych przerywa listę jeśli powłoka otrzyma przerwanie; poprzednie wersje kontynuowały do następnego polecenia w liście. .TP 8 \fBcompat41\fP Gdy ustawiona, \fBbash\fP, gdy jest w trybie \fIposix\fP, traktuje pojedyncze cudzysłowy w interpretacji ujętej w podwójne cudzysłowy, jako znak specjalny. Pojedynczy cudzysłów musi pasować (musi występować ich parzysta liczba), a znaki pomiędzy pojedynczymi cudzysłowami są traktowane jako cytowane. Jest to zachowanie trybu posix w wersji 4.1. Domyślne zachowania basha pozostaje takie samo, jak w poprzednich wersjach. .TP 8 \fBcompat42\fP Gdy ustawiona, \fBbash\fP nie przeprowadza zamiany łańcuchów przy w podstawianiu wzorców rozwijanych słów za pomocą usuwania cytowań. .TP 8 \fBcompat43\fP Jeśli jest ustawiona, \fBbash\fP nie ostrzega przy próbie użycia cytowanego, złożonego przypisania tablicy jako argumentu do \fBdeclare\fP, co powoduje, że błędy interpretacji słów stają się niekrytyczne, powodując niepowodzenie bieżącego polecenia (domyślne zachowanie to uczynienie tych błędów krytycznymi, co prowadzi do zakończenia powłoki) i nie resetowanie stanu pętli przy wykonywaniu funkcji powłoki (co pozwala poleceniom \fBbreak\fP i \fBcontinue\fP w funkcji powłoki wpływać na pętle w wywołującym je środowisku). .TP 8 \fBcomplete_fullquote\fP Gdy ustawiona, \fBbash\fP cytuje wszystkie metaznaki powłoki w nazwach plików i katalogów w trakcie wykonywania uzupełniania. Gdy nieustawiona, \fBbash\fP usuwa metaznaki takie jak znak dolara z zestawu cytowanych znaków w uzupełnianych nazwach plików, gdy te metaznaki pojawiają się w odniesieniach do zmiennych powłoki, w słowach do uzupełnienia. Oznacza to, że znaki dolara w nazwach zmiennych uzupełnianych do katalogów nie będą cytowane, jednak znaki dolara pojawiające się w nazwach plików w ogóle nie będą cytowane. Jest to aktywne tylko wówczas, gdy bash używa odwrotnego ukośnika do cytowania uzupełnianych nazw plików. Zmienna ta jest domyslnie ustawiana, co jest domyślnym zachowaniem basha w wersjach do 4.2. .TP 8 \fBdirexpand\fP Gdy ustawiona, \fBbash\fP zastępuje nazwy katalogów wynikami rozwijania słów przy przeprowadzaniu uzupełnienia nazw plików. W ten sposób zmieniana jest zawartość bufora edycji readline. Jeśli nie jest ustawiona, \fBbash\fP stara się zachować treść wpisaną przez użytkownika. .TP 8 \fBdirspell\fP Jeżeli jest ustawiona, \fBbash\fP stara się poprawić pomyłki w nazwach katalogów podczas uzupełniania słów, jeśli nazwa katalogu wprowadzonego pierwotnie, nie istnieje. .TP 8 \fBdotglob\fP Jeżeli jest ustawione, to \fBbash\fP do wyników rozwinięcia nazw plików włącza także nazwy plików rozpoczynające się kropką `.'. .TP 8 \fBexecfail\fP Jeżeli jest ustawione, to powłoka nie\-interaktywna nie zakończy pracy nie mogąc wykonać pliku określonego jako argument wbudowanego polecenia \fBexec\fP. Powłoka interaktywna nie kończy pracy, jeśli \fBexec\fP zawiedzie. .TP 8 \fBexpand_aliases\fP Jeżeli jest ustawiona, aliasy są interpretowane jak opisano powyżej w .SM \fBALIASY\fP. Opcja ta jest włączona domyślnie dla powłok interaktywnych. .TP 8 \fBextdebug\fP Jeśli jest ustawiona przy wywołaniu powłoki, powoduje wykonanie profilu debuggera przed uruchomieniem powłoki, identycznie jak opcja \fB\-\-debugger\fP. Jeśli jest ustawiona po wywołaniu, włączane jest zachowanie przeznaczone do użycie przez debuggera: .RS .TP \fB1.\fP Opcja \fB\-F\fP wbudowanego polecenia \fBdeclare\fP wyświetla nazwę pliku źródłowego i numer wiersza odpowiadający każdej nazwie funkcji podanej jako argument. .TP \fB2.\fP Jeśli polecenie uruchomione przez pułapkę \fBDEBUG\fP zwraca wartość niezerową, kolejne polecenie jest pomijane i nie jest wykonywane. .TP \fB3.\fP Jeśli polecenie uruchamiane przez pułapkę \fBDEBUG\fP zwróci wartość 2, a powłoka wykonywana w podprogramie (funkcja powłoki lub skrypt powłoki wykonywany wbudowanymi \fB.\fP lub \fBsource\fP), to symulowane jest wywołanie do \fBreturn\fP. .TP \fB4.\fP .SM \fBBASH_ARGC\fP i .SM \fBBASH_ARGV\fP są aktualizowane zgodnie z opisem w opisie tych zmiennych powyżej. .TP \fB5.\fP Włączone jest śledzenie funkcji: podstawianie poleceń, funkcje powłoki i podpowłoki przywołane za pomocą \fB(\fP \fIpolecenie\fP \fB)\fP dziedziczą pułapki \fBDEBUG\fP i \fBRETURN\fP. .TP \fB6.\fP Włączone jest śledzenie błędów: podstawianie poleceń, funkcje powłoki i podpowłoki przywołane za pomocą \fB(\fP \fIpolecenie\fP \fB)\fP dziedziczą pułapkę \fBERR\fP. .RE .TP 8 \fBextglob\fP Jeśli jest włączona, włączane są rozszerzone funkcje dopasowywania wzorców opisane powyżej w \fBRozwijanie nazw plików\fP. .TP 8 \fBextquote\fP Jeżeli jest włączona, cytowania \fB$\fP\(aq\fIłańcuch\fP\(aq and \fB$\fP"\fIłańcuch\fP" są przeprowadzane wewnątrz interpretacji \fB${\fP\fIparametr\fP\fB}\fP ujętych w podwójne cudzysłowy. Opcja jest domyślnie włączona. .TP 8 \fBfailglob\fP Jeśli jest włączona, wzorce do których nie dopasowano nazw plików podczas rozwinięcia nazw plików, dają w wyniku błąd rozwinięcia (interpretacji). .TP 8 \fBforce_fignore\fP Jeśli jest ustawiona, przyrostki określone zmienną powłoki .SM \fBFIGNORE\fP powodują ignorowanie słów podczas przeprowadzania uzupełniania słów nawet, gdy ignorowane słowa są jedynymi dostępnymi uzupełnieniami. Proszę zapoznać się z .SM \fBZMIENNE POWŁOKI\fP, aby uzyskać opis .SM \fBFIGNORE\fP. Opcja jest domyślnie włączona. .TP 8 \fBglobasciiranges\fP Jeśli jest ustawiona, wyrażenia zakresu użyte we wzorcu dopasowującego wyrażenia nawiasowe (zob. .SM \fBDopasowanie wzorca\fP powyżej) zachowują się jak w tradycyjnym locale C przy przeprowadzaniu porównań. Znaczy to, że sekwencja sortowania bieżącego locale nie jest brana pod uwagę, więc \fBb\fP nie jest sortowane między \fBA\fP i \fBB\fP, a wielkie i małe znaki ASCII są\ sortowane razem. .TP 8 \fBglobstar\fP Gdy jest ustawiona, wzorzec \fB**\fP używany w kontekście rozwijania nazw plików, dopasowuje wszystkie pliki i zero lub więcej katalogów i podkatalogów. Jeśli po wzorcu występuje \fB/\fP, to dopasowywane są jedynie katalogi i podkatalogi. .TP 8 \fBgnu_errfmt\fP Jeżeli jest ustawiona, komunikaty błędów powłoki są wypisywane w standardowym formacie błędów GNU. .TP 8 \fBhistappend\fP Jeżeli jest ustawiona, to do pliku o nazwie wskazanej zmienną .SM \fBHISTFILE\fP podczas kończenia pracy przez powłokę dodawana jest lista historii, zamiast nadpisywania tego pliku listą. .TP 8 \fBhistreedit\fP Jeżeli jest ustawione, a używane jest \fBreadline\fP, to użytkownik ma możliwość ponownej edycji nieudanego podstawienia historii historii. .TP 8 \fBhistverify\fP Jeżeli jest ustawione, a używane jest \fBreadline\fP, to wyniki podstawiania historii nie są natychmiast przesyłane do analizatora powłoki. Zamiast tego, wiersz wynikowy ładowany jest do bufora edycyjnego \fBreadline\fP, pozwalając na dalsze zmiany. .TP 8 \fBhostcomplete\fP Jeżeli jest ustawione, a używane jest \fBreadline\fP, \fBbash\fP będzie usiłować wykonać uzupełnianie nazwy hosta podczas uzupełniania słowa zawierającego \fB@\fP (zobacz \fBUzupełnianie\fP w .SM \fBREADLINE\fP powyżej). Domyślnie włączone. .TP 8 \fBhuponexit\fP Jeżeli jest ustawione, to \fBbash\fP wyśle .SM \fBSIGHUP\fP do wszystkich zadań podczas kończenia pracy interaktywnej powłoki zgłoszeniowej. .TP 8 \fBinherit_errexit\fP Jeśli jest ustawione, uzupełnianie poleceń dziedziczy wartość opcji \fBerrexit\fP, zamiast kasować ją w środowisku podpowłoki. Opcja ta jest włączana jeśli włączony jest \fItryb posix\fP. .TP 8 \fBinteractive_comments\fP Jeśli jest włączone, pozwala by słowo rozpoczynające się od \fB#\fP powodowało pominięcie tego słowa i wszystkich pozostałych znaków wiersza w powłoce interaktywnej (zobacz powyżej .SM \fBKOMENTARZE).\fP Opcja domyślnie włączona. .TP 8 \fBlastpipe\fP Jeśli jest ustawiona, a kontrola zadań nie jest aktywna, powłoka uruchamia ostatnie polecenie potoku, który nie jest wykonywany w tle, w bieżącym środowisku powłoki. .TP 8 \fBlithist\fP Jeśli jest ustawione, a włączona jest opcja \fBcmdhist\fP, 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. .TP 8 \fBlogin_shell\fP Powłoka ustawia tę opcję jeśli zostanie uruchomiona jako zgłoszeniowa (zobacz .SM \fBWYWOŁANIE\fP powyżej). Ta wartość nie może być zmieniona. .TP 8 \fBmailwarn\fP Jeżeli jest ustawione, zaś do pliku, w którym sprawdza pocztę \fBbash\fP sięgano od czasu ostatniego sprawdzania, to zostanie wyświetlony komunikat ,,The mail in \fIplikpoczty\fP has been read\*(rq (Poczta w \fIplikpoczty\fP została przeczytana). .TP 8 \fBno_empty_cmd_completion\fP Jeśli jest ustawione, i stosowane jest \fBreadline\fP, to \fBbash\fP nie będzie usiłował szukać w \fBPATH\fP możliwych uzupełnień, gdy próba uzupełniania wystąpi w pustym wierszu. .TP 8 \fBnocaseglob\fP Jeśli zostało ustawione, to \fBbash\fP przy rozwijaniu nazw plików dopasowuje je nie zwracając uwagi na wielkość liter (zobacz \fBRozwijanie nazw plików\fP powyżej). .TP 8 \fBnocasematch\fP Gdy jest ustawiona, \fBbash\fP dopasowuje wzorce ignorując wielkość liter, podczas wykonywania dopasowania, w czasie wykonywania poleceń warunkowych \fBcase\fP lub \fB[[\fP, przy wykonywaniu interpretacji zastępowania słów wzorców lub podczas filtrowania możliwych dopełnień jako części programowalnych dopełnień. .TP 8 \fBnullglob\fP Jeśli jest ustawione, to, \fBbash\fP pozwala by wzorce nie dopasowujące żadnych plików (zobacz \fBRozwijanie nazw plików\fP powyżej) rozwijały się w łańcuch pusty, zamiast na same siebie. .TP 8 \fBprogcomp\fP Jeżeli jest ustawione, to włączone są usługi programowalnego uzupełniania (zobacz powyżej \fBProgramowalne uzupełnianie\fP). Domyślnie włączone. .TP 8 \fBpromptvars\fP Jeżeli jest ustawione, to łańcuchy zachęty podlegają interpretacji zmiennych i podstawianiu parametrów po interpretacji zachęty opisanej w .SM \fBZACHĘTA\fP powyżej. Opcja ta jest domyślnie włączona. .TP 8 \fBrestricted_shell\fP Powłoka ustawia tę opcję jeśli została uruchomiona w trybie okrojonym (zobacz .SM \fBPOWŁOKA OKROJONA\fP 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. .TP 8 \fBshift_verbose\fP Jeżeli jest ustawiona, to wbudowane \fBshift\fP wypisuje komunikat o błędzie gdy liczba przesunięć (przez shift) przekracza liczbę parametrów pozycyjnych. .TP 8 \fBsourcepath\fP Jeśli jest ustawiona, to polecenie wbudowane \fBsource\fP (\fB.\fP) posługuje się wartością .SM \fBPATH\fP do znalezienia katalogu zawierającego plik podany jako argument. Opcja domyślnie włączona. .TP 8 \fBxpg_echo\fP Jeżeli jest ustawiona, to dla wbudowanego polecenia \fBecho\fP włączane jest domyślne interpretowanie sekwencji specjalnych z odwrotnym ukośnikiem. .RE .PD .TP \fBsuspend\fP [\fB\-f\fP] Zawiesza wykonywanie tej powłoki do otrzymania przez nią sygnału .SM \fBSIGCONT\fP. Opcja \fB\-f\fP mówi, by nie narzekać, jeśli użyto \fBsuspend\fP 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 \fB\-f\fP, lub gdy nie jest włączona kontrola zadań. .TP \fBtest\fP \fIwyraż\fP .PD 0 .TP \fB[\fP \fIwyraż\fP \fB]\fP Zwraca kod 0 (prawda) lub 1 (fałsz) w zależności od interpretacji wyrażenia warunkowego \fIwyraż\fP. każdy operator i operand musi być odrębnym argumentem. Wyrażenia składając się ze składowych opisanych powyżej w .SM \fBWYRAŻENIA\fP \fBWARUNKOWE\fP. \fBtest\fP nie akceptuje żadnych opcji, ani nie akceptuje i nie ignoruje argumentu \fB\-\-\fP jako wskaźnika końca opcji. .if t .sp 0.5 .if n .sp 1 Wyrażenia mogą być łączone przy użyciu poniższych operatorów, podanych w kolejności malejącego priorytetu. Ich interpretacja zależy od liczby argumentów; patrz niżej. Priorytet operatorów jest używany gdy występuje pięć argumentów lub więcej. .RS .PD 0 .TP \fB! \fP\fIwyraż\fP Prawda jeśli \fIwyraż\fP jest fałszem. .TP \fB( \fP\fIwyraż\fP\fB )\fP Zwraca wartość \fIwyraż\fP. Może być stosowane do obejścia zwykłej kolejności operatorów. .TP \fIwyraż1\fP \-\fBa\fP \fIwyraż2\fP Prawda jeśli oba: \fIwyraż1\fP i \fIwyraż2\fP są prawdziwe. .TP \fIwyraż1\fP \-\fBo\fP \fIwyraż2\fP Prawda jeśli \fIwyraż1\fP lub \fIwyraż2\fP jest prawdziwe. .PD .PP \fBtest\fP i \fB[\fP interpretują wyrażenia warunkowe posługując się zestawem reguł opartych o liczbę argumentów. .if t .sp 0.5 .if n .sp 1 .PD 0 .TP 0 argumentów Wyrażenie jest fałszywe. .TP 1 argument Wyrażenie jest prawdziwe wtedy i tylko wtedy gdy argument nie jest pusty (null). .TP 2 argumenty Jeśli pierwszym argumentem jest \fB!\fP, 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 .SM \fBWYRAŻENIA WARUNKOWE\fP, 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. .TP 3 argumenty Następujące warunki są stosowane w wypisanej kolejności. Jeżeli drugi argument jest jednym z dwuargumentowych operatorów warunkowych podanych powyżej w .SM \fBWYRAŻENIA WARUNKOWE\fP, to wynik wyrażenia jest wynikiem dwuargumentowego testu z zastosowaniem pierwszego i trzeciego argumentu jako operandów. Operatory \fB\-a\fP i \fB\-o\fP są uważane za dwuargumentowe, jeśli występują trzy argumenty. Jeśli pierwszym argumentem jest \fB!\fP, to wartość stanowi negację testu dwuargumentowego przy użyciu drugiego i trzeciego argumentu. Jeśli pierwszym argumentem jest dokładnie \fB(\fP a trzecim argumentem dokładnie \fB)\fP, to wynik jest jednoargumentowym testem drugiego argumentu. W pozostałych przypadkach wyrażenie jest fałszywe. .TP 4 argumenty Jeśli pierwszym argumentem jest \fB!\fP, 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. .TP 5 lub więcej argumentów Wyrażenie jest poddawanie analizie składni i interpretowane zgodnie z priorytetami przy zastosowaniu reguł podanych powyżej. .if t .sp 0.5 .if n .sp 1 .LP Gdy operatory \fB<\fP i \fB>\fP są używane z \fBtest\fP lub \fB[\fP, sortują zgodnie z porządkiem leksykograficznym używając kolejności ASCII. .RE .PD .TP \fBtimes\fP Wypisuje sumaryczne czasy użytkownika i systemu dla powłoki i procesów z niej uruchomionych. Kodem zwracanym jest 0. .TP \fBtrap\fP [\fB\-lp\fP] [\fIargument\fP] [\fIsigspec\fP ...] Polecenie \fIargument\fP ma zostać odczytane i wykonane, gdy powłoka otrzyma sygnał(y) \fIsigspec\fP. Jeśli nie występuje \fIargument\fP (i występuje pojedynczy \fIsigspec\fP) lub jest to \fB\-\fP, 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 \fIargument\fP jest łańcuchem pustym, to sygnał określony przez każde \fIsigspec\fP jest ignorowany przez powłokę i polecenia, jakie ona wywołuje. Jeżeli nie wystąpił \fIargument\fP a podano \fB\-p\fP, wyświetlane są polecenia związane z przechwyceniem każdego z sygnałów \fIsigspec\fP. Jeżeli nie podano żadnych argumentów lub jeśli podano tylko \fB\-p\fP, to \fBtrap\fP wypisuje listę poleceń związanych z każdym z numerów sygnałów. Każde \fB\-l\fP powoduje wypisanie przez powłokę listy nazw sygnałów i odpowiadających im nazw. Każdy \fIsigspec\fP jest albo nazwą sygnału zdefiniowaną w <\fIsignal.h\fP> albo numerem sygnału. Wielkość liter nazw sygnałów nie ma znaczenia, a przedrostek .SM \fBSIG\fP jest opcjonalny. .if t .sp 0.5 .if n .sp 1 Jeżeli \fIsigspec\fP jest sygnałem .SM \fBEXIT\fP (0), to polecenie \fIargument\fP wykonywane jest przy kończeniu pracy przez powłokę. Jeżeli \fIsigspec\fP jest równe .SM \fBDEBUG\fP, to polecenie \fIargument\fP wykonywane jest po każdym \fIpoleceniu prostym\fP, poleceniach \fIfor\fP, \fIcase\fP i \fIselect\fP, każdym poleceniem arytmetycznym \fIfor\fP i przed wykonaniem pierwszego polecenia w funkcji powłoki (zobacz .SM \fBGRAMATYKA POWŁOKI\fP powyżej). Proszę zapoznać się z opisem opcji \fBextdebug\fP do wbudowanego \fBshopt\fP, aby dowiedzieć się więcej na temat jej wpływu na pułapkę \fBDEBUG\fP. Jeśli \fIsigspec\fP to .SM \fBRETURN\fP, to polecenie \fIargument\fP jest wykonywane zawsze, gdy funkcja powłoki lub skrypt wykonywany wbudowanymi \fB.\fP lub \fBsource\fP kończą swe wykonanie. .if t .sp 0.5 .if n .sp 1 Jeśli \fIsigspec\fP jest .SM \fBERR\fP, wówczas polecenie \fIargument\fP wykonywane gdy potok (mogący składać się z jednego polecenia prostego), lista, lub polecenie złożone zwróci niezerowy kod zakończenia. Pułapka zastawiona na .SM \fBERR\fP nie jest wykonywana gdy polecenie, które zakończyło się niepowodzeniem jest występuje bezpośrednio po słowach kluczowych \fIwhile\fP lub \fIuntil\fP, jest częścią testu instrukcji \fIif\fP, częścią poleceń wykonywanych w listach \fB&&\fP lub \fB||\fP z wyjątkiem polecenia za ostatnim \fB&&\fP lub \fB||\fP, dowolnym poleceniem w potoku z wyjątkiem ostatniego lub jeśli wartość zwracana przez to polecenie jest wstawiana za pomocą \fB!\fP. Identyczne warunki są przestrzegane przez opcję \fBerrexit\fP. .if t .sp 0.5 .if n .sp 1 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 \fIsigspec\fP jest nieprawidłowy; w przeciwnym razie \fBtrap\fP zwraca true. .TP \fBtype\fP [\fB\-aftpP\fP] \fInazwa\fP [\fInazwa\fP ...] Bez opcji wskazuje, jak powinna być interpretowana każda z \fInazw\fP, jeśli zostanie użyta jako nazwa polecenia. Jeżeli użyto opcji \fB\-t\fP, to \fBtype\fP wypisuje łańcuch będący jednym z \fIalias\fP, \fIkeyword\fP, \fIfunction\fP, \fIbuiltin\fP lub \fIfile\fP, jeśli \fInazwa\fP jest odpowiednio aliasem, zastrzeżonym słowem powłoki, funkcją, poleceniem wbudowanym lub plikiem dyskowym. Jeśli nie znaleziono \fInazwy\fP, to nie jest wypisywane nic i jako kod zakończenia zwracany jest fałsz. Jeśli posłużono się opcją \fB\-p\fP to \fBtype\fP zwraca albo nazwę pliku dyskowego, który zostałby wykonany jeśli \fInazwa\fP zostałaby podana jako nazwa polecenia, albo nic jeśli .if t \f(CWtype -t name\fP .if n ``type -t name'' nie zwróciłoby \fIfile\fP. Opcja \fB\-P\fP wymusza na .SM \fBPATH\fP wyszukiwanie każdego \fIname\fP, nawet jeśli .if t \f(CWtype -t name\fP .if n ``type -t name'' nie zwróciłoby \fIfile\fP. Jeśli polecenie zostało zapamiętane poleceniem hash, to \fB\-p\fP i \fB\-P\fP wypisuje jego wartość, który niekoniecznie jest plikiem pojawiającym się jako pierwszy w .SM \fBPATH\fP. Jeśli użyto opcji \fB\-a\fP, to \fBtype\fP wypisuje wszystkie miejsca zawierające plik wykonywalny o nazwie \fInazwa\fP. Aliasy i funkcje są uwzględniane wyłącznie jeśli nie podano również opcji \fB\-p\fP. Tablica zapamiętanym poleceń nie jest sprawdzana, jeśli użyto \fB\-a\fP. Opcja \fB\-f\fP przesłania funkcję wyszukiwania powłoki jak wbudowanym \fBcommand\fP. \fBtype\fP zwraca prawdę jeśli odnaleziono wszystkie argumenty i fałsz, gdy któregoś z nich nie odnaleziono. .TP \fBulimit\fP [\fB\-HSabcdefiklmnpqrstuvxPT\fP [\fIlimit\fP]] Zapewnia kontrolę nad zasobami dostępnymi powłoce i procesów jakie ona uruchamia, na systemach umożliwiających taką kontrolę. Opcje \fB\-H\fP i \fB\-S\fP określają, że dla danego zasobu ustawiane jest twarde (hard) lub miękkie (soft) ograniczenie. Ograniczenie twarde nie może być zwiększane przez zwykłego użytkownika po ustawieniu; ograniczenie miękkie może być zwiększane aż do wartości ograniczenia twardego. Jeśli nie podano ani \fB\-H\fP ani \fB\-S\fP, to ustawiane jest zarówno ograniczenie miękkie jak i twarde. Ograniczenie \fIlimit\fP może być liczbą w jednostkach określonych dla zasobu lub jedną ze specjalnych wartości: \fBhard\fP, \fBsoft\fP lub \fBunlimited\fP, oznaczających odpowiednio: bieżące twarde ograniczenie, bieżące miękkie ograniczenie oraz brak ograniczenia. Jeżeli pominięto \fIlimit\fP, wypisywana jest bieżąca wartość ograniczenia miękkiego danego zasobu, chyba że podano opcję \fB\-H\fP. 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: .RS .PD 0 .TP \fB\-a\fP Podawane są wszystkie bieżące ograniczenia .TP \fB\-b\fP Maksymalny rozmiar bufora gniazda .TP \fB\-c\fP Maksymalny rozmiar tworzonych plików core .TP \fB\-d\fP Maksymalny rozmiar segmentu danych procesu .TP \fB\-e\fP Maksymalny priorytet planisty ("nice") .TP \fB\-f\fP Maksymalny rozmiar plików zapisywanych przez powłokę i jej potomków .TP \fB\-i\fP Maksymalna liczba oczekujących sygnałów .TP \fB\-k\fP Maksymalna liczba kqueue które można przypisać .TP \fB\-l\fP Maksymalny rozmiar, jaki może zostać zablokowany w pamięci .TP \fB\-m\fP Maksymalny rozmiar części rezydentnej (wiele systemów nie przestrzega tego limitu) .TP \fB\-n\fP Maksymalna liczba otwartych deskryptorów pliku (większość systemów nie pozwala na ustawianie tej wartości) .TP \fB\-p\fP Rozmiar potoku w blokach 512\-bajtowych (może nie być ustawione) .TP \fB\-q\fP Maksymalny rozmiar kolejek komunikatów POSIX, w bajtach .TP \fB\-r\fP Maksymalny priorytet rzeczywisty planisty .TP \fB\-s\fP Maksymalny rozmiar stosu .TP \fB\-t\fP Maksymalny czas CPU w sekundach .TP \fB\-u\fP Maksymalna liczba procesów dostępnych dla pojedynczego użytkownika .TP \fB\-v\fP Maksymalna wielkość pamięci wirtualnej dostępna dla powłoki i, w niektórych systemach, dla jej potomków. .TP \fB\-x\fP Maksymalna liczba plików blokad .TP \fB\-P\fP Maksymalna liczba pseudoterminali .TP \fB\-T\fP Maksymalna liczba wątków .PD .PP Jeżeli podano \fIlimit\fP i nie użyto opcji \fB\-a\fP, to \fIlimit\fP staje się nową wartością ograniczenia zadanego zasobu. Jeżeli nie podano żadnej opcji, to zakłada się opcję \fB\-f\fP. Wartości podawane są przyrostowo co 1024\-bajty, z wyjątkiem \fB\-t\fP, podawanego w sekundach, \fB\-p\fP, w jednostkach 512\-bajtowych bloków, \fB\-P\fP, \fB\-T\fP, \fB\-b\fP, \fB\-k\fP, \fB\-n\fP i \fB\-u\fP, które są wartościami bez miana; oraz w trybie Posix, \fB\-c\fP i \fB\-f\fP, podawanych w przyrostach 512\-bajtowych.Zwracanym kodem jest 0, chyba że podano nieprawidłową opcję lub argument albo podczas ustawiania nowego ograniczenia wystąpił błąd. .RE .TP \fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fItryb\fP] Maska praw dostępu dla plików tworzonych przez użytkownika ustawiana jest na \fItryb\fP. Jeżeli \fItryb\fP rozpoczyna się od cyfry, jest interpretowany jako liczba ósemkowa; w przeciwnym razie interpretowany jest jako maska w trybie symbolicznym, podobnie jak akceptowane przez \fIchmod\fP(1). Jeżeli pominięto \fItryb\fP wypisywana jest aktualna wartość maski. Opcja \fB\-S\fP powoduje, że maska zostanie wypisana w postaci symbolicznej; domyślne wyjście jest w postaci liczby ósemkowej. Jeżeli podano opcję \fB\-p\fP i pominięto \fItryb\fP, 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 \fItryb\fP, zaś fałsz w pozostałych sytuacjach. .TP \fBunalias\fP [\-\fBa\fP] [\fInazwa\fP ...] Usuwa każdą z \fInazw\fP z listy zdefiniowanych aliasów. Jeżeli podano \fB\-a\fP, to usuwane są definicje wszystkich aliasów. Zwracanym kodem jest prawda, chyba że podana \fInazwa\fP nie jest zdefiniowanym aliasem. .TP \fBunset\fP [\-\fBfv\fP] [\-\fBn\fP] [\fInazwa\fP ...] Dla każdej \fInazwy\fP, usuwa odpowiadającą jej wartość lub funkcję. Jeżeli podano opcję \fB\-v\fP, to każda z \fInazw\fP odnosi się do zmiennej powłoki. Zmienne read\-only nie mogą być kasowane. Jeżeli podano \fB\-f\fP, to każda z \fInazw\fP wskazuje na funkcję powłoki, a definicja funkcji jest usuwana. Jeśli podano opcję \fB\-n\fP, a \fInazwa\fP jest zmienną\ z parametrem \fInazwa referencyjna\fP, to zostanie usunięta \fInazwa\fP zamiast zmiennej referencyjnej. \fB\-n\fP nie daje efektu, jeśli podano opcję \fB\-f\fP. Jeśli nie podano żadnych opcji, każda z \fInazw\fP odnosi się do zmiennej; jeśli nie ma zmiennej o tej nazwie, to usunięte zostaną funkcje z tą\ nazwą. 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 .SM \fBCOMP_WORDBREAKS\fP, .SM \fBRANDOM\fP, .SM \fBSECONDS\fP, .SM \fBLINENO\fP, .SM \fBHISTCMD\fP, .SM \fBFUNCNAME\fP, .SM \fBGROUPS\fP, lub .SM \fBDIRSTACK\fP, to traci ona swe specjalne właściwości, nawet jeśli zostanie następnie ponownie ustawiona. Kodem zakończenia jest prawda, chyba że \fInazwa\fP nie istnieje lub jest readonly. .TP \fBwait\fP [\fB\-n\fP] [\fIn ...\fP] Czeka na każdy podany proces potomny i zwraca jego kod zakończenia. \fIn\fP 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 \fIn\fP, następuje oczekiwanie na wszystkie aktualnie aktywne procesy potomne i zwracany jest kod zerowy. Jeśli podano opcję \fB\-n\fP, to \fBwait\fP czeka na zakończenie każdego zadania i zwraca jego kod zakończenia. Jeśli \fIn\fP 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. .if \n(zZ=1 .ig zZ .\" bash_builtins .SH "POWŁOKA OKROJONA" .\" rbash.1 .zY .PP Jeśli \fBbash\fP uruchomiony jest pod nazwą \fBrbash\fP, lub przy jego wywołaniu posłużono się opcją \fB\-r\fP, 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 \fBbash\fP z wyjątkiem tego, że poniższe nie są dozwolone lub nie są wykonywane: .IP \(bu zmiana katalogów przy pomocy \fBcd\fP .IP \(bu ustawianie lub kasowanie wartości .SM \fBSHELL\fP, .SM \fBPATH\fP, .SM \fBENV\fP lub .SM \fBBASH_ENV\fP .IP \(bu podawanie nazw poleceń zawierających \fB/\fP .IP \(bu podawanie nazw plików zawierających \fB/\fP jako argumentu wbudowanego polecenia \fB.\fP (kropka). .IP \(bu podawanie nazwy pliku zawierającej ukośnik jako argument do opcji \fB\-p\fP wbudowanego polecenia \fBhash\fP. .IP \(bu importowanie definicji funkcji ze środowiska powłoki przy uruchamianiu .IP \(bu analiza wartości .SM \fBSHELLOPTS\fP ze środowiska powłoki przy uruchamianiu .IP \(bu przekierowywanie wyjścia przy pomocy operatorów >, >|, <>, >&, &> i >> .IP \(bu posługiwanie się wbudowanym poleceniem \fBexec\fP w celu zastąpienia powłoki innym poleceniem .IP \(bu dodawanie lub usuwanie poleceń przy pomocy opcji \fB\-f\fP i \fB\-d\fP wbudowanego polecenia \fBenable\fP .IP \(bu używanie wbudowanego polecenia \fBenable\fP do włączania wyłączonych wbudowanych poleceń powłoki .IP \(bu podawanie opcji \fB\-p\fP wbudowanego polecenia \fBcommand\fP .IP \(bu wyłączanie trybu okrojonego za pomocą \fBset +r\fP lub \fBset +o restricted\fP. .PP Powyższe ograniczenia wymuszane są po przeczytaniu plików uruchomieniowych. .PP .ie \n(zY=1 Jeśli wykonywane polecenie okaże się skryptem powłoki, .el \{ Jeśli wykonywane polecenie okaże się skryptem powłoki (patrz .SM .B "WYKONYWANIE POLECEŃ" powyżej), to \} \fBrbash\fP wyłącza wszelkie ograniczenia w powłoce zrodzonej do wykonania skryptu. .if \n(zY=1 .ig zY .\" end of rbash.1 .SH "ZOBACZ TAKŻE" .PD 0 .TP \fIBash Features\fP, Brian Fox i Chet Ramey .TP \fIThe Gnu Readline Library\fP, Brian Fox i Chet Ramey .TP \fIThe Gnu History Library\fP, Brian Fox i Chet Ramey .TP \fIPortable Operating System Interface (POSIX) Part 2: Shell and Utilities\fP, IEEE \-\- http://pubs.opengroup.org/onlinepubs/9699919799/ .TP http://tiswww.case.edu/~chet/bash/POSIX \-\- opis trybu posix .TP \fIsh\fP(1), \fIksh\fP(1), \fIcsh\fP(1) .TP \fIemacs\fP(1), \fIvi\fP(1) .TP \fIreadline\fP(3) .PD .SH PLIKI .PD 0 .TP .FN /bin/bash Plik wykonywalny powłoki \fBbash\fP .TP .FN /etc/profile Ogólnosystemowy plik inicjujący, wykonywany dla powłok zgłoszeniowych .TP .FN /etc/bash.bashrc Ogólnosystemowy plik startowy dla powłoki interaktywnej .TP .FN /etc/bash.bash.logout Ogólnosystemowy plik porządkujący dla powłoki zgłoszeniowej, wykonywany podczas kończenia przez nią pracy .TP .FN ~/.bash_profile Osobisty plik inicjujący, wykonywany dla powłok zgłoszeniowych .TP .FN ~/.bashrc Indywidualny plik startowy dla powłoki trybu interaktywnego .TP .FN ~/.bash_logout Indywidualny plik porządkujący dla powłoki zgłoszeniowej, wykonywany podczas kończenia przez nią pracy .TP .FN ~/.inputrc Indywidualny plik inicjujący do \fIreadline\fP .PD .SH AUTORZY Brian Fox, Free Software Foundation .br bfox@gnu.org .PP Chet Ramey, Case Western Reserve University .br chet.ramey@case.edu .SH "ZGŁOSZENIA BŁĘDÓW" Jeśli znajdziesz w \fBbash\fP 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 \fBbash\fP jaką masz. Jest ona zawsze dostępna pod adresem \fIftp://ftp.gnu.org/pub/gnu/bash/\fP. .PP Po ustaleniu, że błąd faktycznie istnieje, użyj polecenia \fIbashbug\fP 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 \fIbug\-bash@gnu.org\fP lub wysyłane na grupę dyskusyjną \fBgnu.bash.bug\fP. .PP WSZYSTKIE zgłoszenia błędów powinny zawierać: .PP .PD 0 .TP 20 Numer wersji \fBbash\fP .TP Sprzęt i system operacyjny .TP Użyty kompilator .TP Opis błędnego zachowania .TP Krótki skrypt lub przepis na uzyskanie błędu .PD .PP \fIbashbug\fP wstawia pierwsze trzy pozycje automatycznie do szablonu jaki udostępnia w celu wypełnienia zgłoszenia błędów. .PP Komentarze i zgłoszenia błędów dotyczące tej strony podręcznika [oryginału] powinny być kierowane na adres \fIchet.ramey@case.edu\fP. .SH BŁĘDY .PP Jest za duży i zbyt wolny. .PP Istnieje trochę subtelnych różnic pomiędzy \fBbash\fP a tradycyjnymi wersjami \fBsh\fP, głównie z powodu specyfikacji .SM \fBPOSIX\fP. .PP Aliasy w niektórych zastosowaniach wprawiają w zakłopotanie. .PP Poleceń wbudowanych powłoki i funkcji nie można zatrzymywać/wznawiać. .PP 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ępne 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ść. .PP Zmienne tablicowe nie mogą być (na razie) eksportowane. .PP Może istnieć tylko jeden aktywny koproces w danym czasie. .zZ .zY .SH TŁUMACZENIE Autorami polskiego tłumaczenia niniejszej strony podręcznika man są: Wojtek Kotwica (PTM) i Michał Kułach . .PP Polskie tłumaczenie jest częścią projektu manpages-pl; uwagi, pomoc, zgłaszanie błędów na stronie http://sourceforge.net/projects/manpages-pl/. Jest zgodne z wersją \fB 4.4 \fPoryginału.