Sh - Linux Command - Unix Command

NÁZOV

bash - GNU Bourne-Again SHELL

SYNOPSA

bash [možnosti] [súbor]

POPIS

Bash je interpretátor príkazového jazyka kompatibilný s jazykom sh, ktorý spúšťa príkazy čítané zo štandardného vstupu alebo zo súboru. Bash tiež obsahuje užitočné funkcie z Korn a C shellov ( ksh a csh ).

Bash je konformná implementácia špecifikácie IEEE POSIX Shell and Tools (IEEE Working Group 1003.2).

MOŽNOSTI

Okrem volieb jedného znakového prostredia zdokumentovaných v popise nastaveného vstavaného príkazu bash interpretuje pri vyvolávaní tieto možnosti:

-c reťazec

Ak je prítomná voľba -c , potom sa príkazy prečítajú z reťazca . Ak existujú argumenty po reťazci , sú priradené k polohovým parametrom, počnúc $ 0 .

-i

Ak je k dispozícii voľba -i , shell je interaktívny .

-l

Vytvorte bash konať tak, akoby bol vyvolaný ako prihlasovací shell (pozrite si INVOCATION nižšie).

-r

Ak je prítomná voľba -r , shell sa stáva obmedzený (pozrite si časť RESTRICTED SHELL nižšie).

-s

Ak je k dispozícii voľba -s alebo ak po spracovaní voľby nezostanú žiadne argumenty, potom sa príkazy prečítajú zo štandardného vstupu. Táto voľba umožňuje nastavenie polohových parametrov pri vyvolaní interaktívneho shellu.

-D

Zoznam všetkých reťazcov s dvojitým kódom, ktorým predchádza $, je vytlačený na štandardnom výstupe. Jedná sa o reťazce, ktoré sú predmetom jazykového prekladu, keď súčasné prostredie nie je C alebo POSIX . To znamená voľbu -n ; nebudú vykonané žiadne príkazy.

[- +] O [ Shopt_option ]

shopt_option je jedna z možností shell prijatých šifrovaným vstavaným (pozri SHELL BUILTIN COMMANDS nižšie). Ak je prítomná funkcia shopt_option , -O nastaví hodnotu tejto možnosti; + O to odošle. Ak nie je poskytnutá možnosť shopt_option , názvy a hodnoty možností shellu, ktoré prijal šoty, sú vytlačené na štandardnom výstupe. Ak je voľba vyvolania + O , výstup sa zobrazí vo formáte, ktorý môže byť opätovne použitý ako vstup.

A - signalizuje koniec možností a zakáže ďalšie spracovanie volieb. Všetky argumenty po - sa považujú za názvy súborov a argumenty. Argument - je ekvivalentný - .

Bash tiež interpretuje niekoľko možností viacerých znakov. Tieto možnosti sa musia zobraziť na príkazovom riadku ešte predtým, ako sa rozpoznajú jednoznakové možnosti.

--dump-PO-struny

Rovnako ako -D , ale výstup je vo formáte GNU gettext po (prenosný objekt).

--dump-struny

Rovnako ako -D .

--Pomoc

Zobrazte správu o používaní na štandardnom výstupe a úspešne ukončite.

- súbor súboru

- súbor rcfile

Spustite príkazy zo súboru namiesto štandardného osobného inicializačného súboru ~ / .bashrc, ak je shell interaktívny (pozrite si INVOCATION nižšie).

--Prihlásiť sa

Rovnako ako -l .

--noediting

Nepoužívajte GNU readline knižnicu na čítanie príkazových riadkov, keď je shell interaktívny.

--noprofile

Nečítajte spúšťací súbor / etc / profile ani žiadny z osobných inicializačných súborov ~ / .bash_profile , ~ / .bash_login alebo ~ / .profile . Podľa predvoleného nastavenia bash prečíta tieto súbory, keď je vyvolaný ako prihlasovací shell (pozrite si INVOCATION nižšie).

--norc

Nečítajte a nevykonajte osobný inicializačný súbor ~ / .bashrc, ak je shell interaktívny. Táto možnosť je predvolene zapnutá, ak je shell vyvolaný ako sh .

--posix

Zmeňte správanie bash, ak sa predvolená operácia líši od štandardu POSIX 1003.2 tak, aby zodpovedala štandardnému ( režim posix ).

--restricted

Obal sa stáva obmedzený (viď nižšie).

--rpm, vyžaduje

Vytvorte zoznam súborov, ktoré sú potrebné pre spúšťanie skriptu shell. To znamená "-n" a podlieha rovnakým obmedzeniam ako kontrolná kontrola chyby pri kompilácii; Základy, [] testy a evals nie sú analyzované, takže niektoré závislosti môžu byť vynechané. --verbose Rovnako ako -v .

--version

Zobraziť informácie o verzii pre túto inštanciu bash na štandardnom výstupe a úspešne ukončiť.

ARGUMENTY

Ak po spracovaní možností ostávajú argumenty a nebola dodaná žiadna voľba -c alebo -s, predpokladá sa, že prvý argument je názov súboru obsahujúceho shellové príkazy. Ak je bash vyvolaný týmto spôsobom, $ 0 je nastavené na názov súboru a polohové parametre sú nastavené na zostávajúce argumenty. Bash číta a spúšťa príkazy z tohto súboru, potom sa ukončí. Stav ukončenia Bashu je stav ukončenia posledného príkazu vykonaného v skripte. Ak nie sú vykonané žiadne príkazy, stav ukončenia je 0. Najskôr sa vykoná pokus o otvorenie súboru v aktuálnom adresári a ak sa nenájde žiadny súbor, potom shell vyhľadá adresáre v PATH pre skript.

zaklínanie

Prihlasovací shell je ten, ktorého prvý znak argumentu nula je - , alebo jedna začína voľbou --login .

Interaktívny shell je jeden začatý bez argumentov bez možnosti a bez možnosti -c, ktorých štandardné vstupy a výstupy sú oba pripojené k terminálom (ako to určuje isatty (3)), alebo jedna začína voľbou -i . PS1 je nastavený a $ - obsahuje i, ak je bash interaktívny, čo umožňuje skript pre shell alebo spúšťací súbor na otestovanie tohto stavu.

Nasledujúce odstavce opisujú, ako bash spúšťa svoje spúšťacie súbory. Ak niektorý zo súborov existuje, ale nedá sa prečítať, bash hlási chybu. Tildy sú rozšírené v názvoch súborov, ako je popísané nižšie v časti Rozšírenie Tilde v časti EXPANSION .

Keď je bash vyvolaný ako interaktívny prihlasovací shell, alebo ako neinteraktický shell s voľbou - login, najprv prečíta a vykoná príkazy zo súboru / etc / profile , ak daný súbor existuje. Po prečítaní súboru hľadá ~ / .bash_profile , ~ / .bash_login a ~ / .profile v tomto poradí a číta a spustí príkazy z prvej, ktorá existuje a je čitateľná. Možnosť - noprofile môže byť použitá, keď shell začal tento spôsob chýbať .

Keď sa ukončí prihlasovací shell, bash číta a vykoná príkazy zo súboru ~ / .bash_logout , ak existuje.

Keď sa spustí interaktívny shell, ktorý nie je prihlasovací shell, bash číta a vykoná príkazy zo súboru ~ / .bashrc , ak daný súbor existuje. Toto môže byť zablokované pomocou možnosti -norc . Možnosť súboru --rcfile núti bash čítať a vykonávať príkazy zo súboru namiesto ~ / .bashrc .

Keď je bash spustený neinteraktivne, spustiť skript pre shell, napríklad hľadá premennú BASH_ENV v prostredí, rozširuje svoju hodnotu, ak sa tam zobrazí a použije rozbalenú hodnotu ako názov súboru na čítanie a vykonanie , Bash sa správa tak, akoby bol vykonaný nasledujúci príkaz:

ak [-n "$ BASH_ENV"]; potom. "$ BASH_ENV"; fi

ale hodnota premennej PATH sa nepoužíva na vyhľadanie názvu súboru.

Ak sa bash spúšťa s názvom sh , pokúsi sa napodobniť spúšťacie správanie historických verzií sh čo najmenšie a zároveň sa zhoduje s POSIX štandardom. Keď sa vyvolá ako interaktívny prihlasovací shell alebo neinteraktický shell s voľbou - login, najprv sa pokúsi čítať a vykonávať príkazy z / etc / profile a ~ / .profile v tomto poradí. Možnosť - noprofile sa môže použiť na potlačenie tohto správania. Keď sa vyvolá ako interaktívny shell s názvom sh , bash hľadá premennú ENV , rozširuje svoju hodnotu, ak je definovaná a používa rozšírenú hodnotu ako názov súboru na čítanie a vykonávanie. Pretože shell vyvolaný ako sh sa nepokúša čítať a vykonávať príkazy z iných spúšťacích súborov, voľba --rcfile nemá žiadny efekt. Neinteraktický shell vyvolaný názvom sh sa nepokúša čítať žiadne ďalšie spúšťacie súbory. Keď sa vyvolá ako sh , bash vstúpi do režimu posix po načítaní štartovacích súborov.

Keď je bash spustený v posix režime, rovnako ako vo voľbe príkazového riadka - posix , postupuje podľa štandardu POSIX pre spúšťacie súbory. V tomto režime interaktívne škrupiny rozširujú premennú ENV a príkazy sa čítajú a vykonávajú zo súboru, ktorého názov je rozšírená hodnota. Nečítajú sa žiadne ďalšie spúšťacie súbory.

Bash sa pokúša určiť, kedy je spustený vzdialeným démonom shellu, zvyčajne rshd . Ak bash určuje, že je spustený rshd , číta a spúšťa príkazy z ~ / .bashrc , ak tento súbor existuje a je čitateľný. Nebude to robiť, ak je vyvolané ako š . Možnosť -norc sa môže použiť na zablokovanie tohto správania a voľba --rcfile môže byť použitá na nútenie iného súboru na čítanie, ale rshd vo všeobecnosti nevyvoláva shell s týmito možnosťami, alebo im umožňuje špecifikovať.

Ak je shell spustený s efektívnym ID užívateľa (group), ktorý sa nerovná skutočnému ID užívateľa (group) a voľba -p nie je dodaná, nie sú čítané žiadne spúšťacie súbory, funkcie shell nie sú zdedené z prostredia, SHELLOPTS premenná, ak sa objaví v prostredí, je ignorovaná a efektívne ID používateľa je nastavené na skutočné ID používateľa. Ak je pri vyvolávaní pridaná voľba -p , správanie pri spustení je rovnaké, ale efektívne ID používateľa nie je obnovené.

Definícia

Nasledujúce definície sa používajú po zvyšok tohto dokumentu.

prázdny

Priestor alebo karta.

slovo

Sekvencia znakov považovaná za jednu jednotku shellom. Tiež známy ako token .

názov

Slovo pozostávajúce len z alfanumerických znakov a podčiarkov a začínajúce abecedným znakom alebo podčiarknutím. Označuje sa aj ako identifikátor .

metaznaky

Charakter, ktorý pri nekotótovaní oddeľuje slová. Jeden z nasledujúcich spôsobov:

| &; () <> miesto

operátorom kontroly

Token, ktorý vykonáva kontrolnú funkciu. Je to jeden z nasledujúcich symbolov:

|| & &&; ;; ()

REZERVOVANÉ SLOVÁ

Vyhradené slová sú slová, ktoré majú osobitný význam pre shell. Nasledujúce slová sú rozpoznané ako rezervované, keď sú nekotované a buď prvé slovo jednoduchého príkazu (pozri SHELL GRAMMAR nižšie) alebo tretie slovo prípadu alebo príkaz:

! prípad urobiť elif inak esac fi pre funkciu, ak vo výberu potom dovtedy, kým {} čas [[]]

SHELL GRAMMAR

Jednoduché príkazy

Jednoduchý príkaz je sekvencia voliteľných príkazov premenných, za ktorými nasledujú prázdne oddelené slová a presmerovania a ukončuje sa kontrolným operátorom . Prvé slovo špecifikuje príkaz, ktorý sa má vykonať, a prechádza ako argument nula. Zostávajúce slová sa prenesú ako argumenty k vyvolanému príkazu.

Vrátená hodnota jednoduchého príkazu je jeho stav výstupu alebo 128 + n, ak príkaz ukončí signál n .

plynovody

Potrubie je sekvencia jedného alebo viacerých príkazov oddelených znakom | , Formát potrubia je:

[ čas [ -p ]] [! ] príkaz [ command2 ...]

Štandardný výstup príkazu je pripojený cez potrubie k štandardnému vstupu príkazu2 . Toto spojenie sa vykoná pred každým presmerovaním určeným príkazom (pozri nižšie REDIRECTION ).

Ak rezervované slovo ! predchádza plynovodu, výstupný stav tohto potrubia je logickým NOT stavu výstupu posledného príkazu. V opačnom prípade je stav potrubia výstupným stavom posledného príkazu. Shell čaká, aby všetky príkazy v potrubí skončili pred vrátením hodnoty.

Ak časovo vyhradené slovo predchádza plynovodu, uplynie uplynulý čas, ako aj používateľský a systémový čas spotrebovaný jeho realizáciou, keď sa plynovod ukončí. Voľba -p zmení výstupný formát na formát špecifikovaný v POSIX. Premenná TIMEFORMAT môže byť nastavená na formátovací reťazec, ktorý špecifikuje, ako by sa mali zobrazovať informácie o časovaní; viď popis TIMEFORMAT pod premennými Shell nižšie.

Každý príkaz v potrubí sa spúšťa ako samostatný proces (tj v podsúbore).

zoznamy

Zoznam je poradie jedného alebo viacerých potrubí oddelených jedným z prevádzkovateľov ; , & , && , alebo || , a prípadne je ukončený jedným z ; , & , alebo .

Z týchto zoznamov operátorov, && a || mať rovnakú prioritu, za ktorou nasleduje ; a &, ktoré majú rovnakú prioritu.

V zozname namiesto bodkočiarky na vymedzenie príkazov sa môže objaviť sekvencia jedného alebo viacerých riadkov.

Ak príkaz ukončí operátor & & , shell vykoná príkaz v pozadí v podsvete. Soket nečaká na dokončenie príkazu a stav návratu je 0. Príkazy oddelené znakom a ; sú vykonávané postupne; škrupina čaká, aby každý príkaz skončil. Stav vrátenia je stav výstupu posledného vykonaného príkazu.

Ovládacie operátory & & a || označte AND zoznamy a OR zoznamy. Zoznam AND obsahuje formulár

command1 && command2

príkaz2 sa vykoná, ak a iba ak príkaz1 vráti stav výstupu nulu.

Zoznam OR má formulár

command1 || príkaz2

príkaz2 sa vykoná, ak a len ak príkaz1 vráti stav nenulového výstupu. Stav návratu zoznamov AND a OR je stav výstupu posledného príkazu vykonaného v zozname.

Zložené príkazy

Zložený príkaz je jeden z nasledujúcich:

( zoznam )

zoznam sa vykoná v podsúbore. Variabilné priradenia a vstavané príkazy, ktoré ovplyvňujú prostredie prostredia shell, zostanú v platnosti po dokončení príkazu. Stav návratu je stav výstupu zo zoznamu .

{ list ; }

zoznam je jednoducho spustený v aktuálnom prostredí prostredia shell. zoznam musí byť ukončený novým riadkom alebo bodkočiarkou. Toto je známe ako príkaz skupiny . Stav návratu je stav výstupu zo zoznamu . Upozorňujeme, že na rozdiel od metaznačiek ( a ) , { a }rezervované slová a musia sa vyskytnúť tam, kde je povolené rozpoznať vyhradené slovo. Keďže nespôsobujú prerušenie slova, musia byť oddelené od zoznamu podľa medzery.

(( výraz ))

Tento výraz sa hodnotí podľa pravidiel popísaných nižšie v časti ARITMETICKÉ HODNOTENIE . Ak je hodnota výrazu nenulová, stav návratu je 0; inak je stav vrátenia 1. To je presne rovnocenné s nechať " výraz ".

[[ výraz ]]

V závislosti od hodnotenia výrazu podmieneného výrazu vráťte stav 0 alebo 1. Výrazy sa skladajú z primárnych prvkov popísaných nižšie pod podmienkami CONDITIONAL EXPRESSIONS . Rozdelenie slov a rozšírenie názvu cesty sa nevykonávajú na slovách medzi [[ a ]] ; rozšírenie tildu, parametrické a variabilné rozšírenie, aritmetická expanzia, substitúcia príkazu, náhrada procesu a odstránenie citácie.

Keď sa používajú operátori == a ! = , Reťazec vpravo od operátora sa považuje za vzor a zodpovedá pravidlám popísaným nižšie v časti Pattern Matching . Hodnota návratnosti je 0, ak reťazec zodpovedá alebo nesúhlasí so vzorom a 1 inak. Každá časť vzoru môže byť kótovaná tak, aby nútila, aby bola porovnaná ako reťazec.

Výrazy sa môžu kombinovať pomocou nasledujúcich operátorov, ktoré sú uvedené v zostupnom poradí:

( výraz )

Vráti hodnotu výrazu . Toto môže byť použité na prekonanie bežnej priority prevádzkovateľov.

! vyjadrenie

Je pravda, ak je výraz nepravdivý.

výraz1 && výraz2

Pravda, ak sú výrazy1 aj výraz2 pravdivé.

výraz1 || výraz2 Je pravda, či je pravdivý buď výraz1, alebo výraz2.

&& a || operátori nehodnotia výraz2, ak hodnota expression1 stačí na určenie návratovej hodnoty celého podmieneného výrazu.

pre meno [ v slove ]; urobiť zoznam ; hotový

Zoznam nasledujúcich slov je rozšírený a generuje zoznam položiek. Názov premennej je nastavený na každý prvok tohto zoznamu a zoznam sa vykoná vždy. Ak je slovo vynechané, príkaz for pre vykonanie zoznamu raz pre každý nastavený pozicový parameter (pozri PARAMETRE nižšie). Stav vrátenia je stav výstupu posledného príkazu, ktorý sa vykoná. Ak rozšírenie položiek nasledujúcich v výsledkoch v prázdnom zozname sa nevykonajú žiadne príkazy a stav vrátenia je 0.

pre (( expr1 ; expr2 ; exp3 )); urobiť zoznam ; hotový

Po prvé, aritmetický výraz expr1 sa hodnotí podľa pravidiel popísaných nižšie v časti ARITMETICKÉ HODNOTENIE . Arrmetický výraz expr2 sa potom vyhodnocuje opakovane, kým sa vyhodnotí na nulu. Pokaždé, keď je hodnota expr2 vyhodnotená na nenulovú hodnotu, vykoná sa zoznam a hodnotí sa aritmetický výraz expr3 . Ak sa niektorý výraz vynechá, správa sa tak, akoby ho vyhodnotila na hodnotu 1. Návratová hodnota je stav ukončenia posledného príkazu zo zoznamu, ktorý je vykonaný, alebo false, ak je niektorý z výrazov neplatný.

vyberte meno [ v slove ]; urobiť zoznam ; hotový

Zoznam nasledujúcich slov je rozšírený a generuje zoznam položiek. Sada rozšírených slov sa vytlačí na štandardnú chybu, z ktorej každá predchádza číslo. Ak sa slovo vynechá, vytlačí sa polohové parametre (pozri PARAMETRE nižšie). Následne sa zobrazí výzva na systém PS3 a čítaj riadok zo štandardného vstupu. Ak sa riadok skladá z čísla zodpovedajúceho jednému z zobrazených slov, hodnota názvu sa nastaví na toto slovo. Ak je riadok prázdny, zobrazia sa znovu slová a výzva. Ak sa číta EOF, príkaz sa ukončí. Každá iná hodnota čítania spôsobí, že meno je nastavené na hodnotu null. Prečítaná čiarka sa uloží do premennej ODPOVEĎ . Tento zoznam sa vykoná po každom výbere, kým sa nevykoná príkaz break . Stav ukončenia výberu je stav ukončenia posledného príkazu vykonaného v zozname alebo nula, ak neboli vykonané žiadne príkazy.

prípadové slovo v [[(] vzorec [ | vzor ]

Príkaz príkazu najskôr rozširuje slovo a pokúša sa ho porovnať s každým vzorkou postupne, pričom použije rovnaké pravidlá na priraďovanie názvov cesty (pozri rozšírenie Názov cesty). Keď sa nájde zhoda, vykoná sa príslušný zoznam . Po prvom zápase sa nepokúšajú žiadne ďalšie zápasy. Stav ukončenia je nulový, ak sa nezhoduje so vzorom. V opačnom prípade ide o stav ukončenia posledného príkazu vykonaného v zozname .

ak je zoznam ; potom zozname; [ zoznam elifov ; potom zozname ; ] ... [ iný zoznam ; ] fi

Ak je zoznam vykonaný. Ak je stav výstupu nulový, vykoná sa potom zoznam . V opačnom prípade sa každý zoznam elifov vykoná v poradí a ak jeho výstupný stav je nulový, vykoná sa príslušný zoznam potom a príkaz sa ukončí. V opačnom prípade sa vykoná iný zoznam , ak je k dispozícii. Stav ukončenia je stav výstupu posledného spusteného príkazu alebo nula, ak nie je podmienka testovaná pravdivá.

pri zozname ; urobiť zoznam ; hotový

do zoznamu ; urobiť zoznam ; hotový

Príkaz while zároveň priebežne vykonáva zoznam vykonávacích funkcií, pokiaľ posledný príkaz v zozname vráti stav výstupu nulu. Príkaz until je totožný s príkazom while , okrem toho, že test je negovaný; zoznam sa vykoná tak dlho, kým posledný príkaz v zozname vráti stav nenulového výstupu. Stav ukončenia momentu a do príkazov je stav ukončenia posledného vykonaného zoznamu vykonaného príkazu alebo nula, ak žiadny nebol vykonaný.

[ function ] meno () { list ; }

Definuje funkciu s názvom názov . Telom funkcie je zoznam príkazov medzi {a}. Tento zoznam sa spustí vždy, keď je meno zadané ako názov jednoduchého príkazu. Stav ukončenia funkcie je výstupný stav posledného príkazu vykonaného v tele. (Pozri FUNKCIE nižšie.)

KOMENTÁRE

V neinteraktickom shelle alebo v interaktívnom shelle, v ktorom je povolená možnosť interactive_comments na vstavanú šifru (pozri SHELL BUILTIN COMMANDS nižšie), slovo začínajúce znakom # spôsobí ignorovanie tohto slova a všetkých zostávajúcich znakov na tomto riadku. Interaktívny shell bez povolenej možnosti interactive_comments nepovoľuje komentáre. Voľba interactive_comments je predvolene zapnutá v interaktívnych shelloch.

citovať

Citácia sa používa na odstránenie špeciálneho významu určitých znakov alebo slov do shellu. Citácia sa môže použiť na vypnutie špeciálneho spracovania špeciálnych znakov, zabránenie uznania vyhradených slov ako takých a zabránenie rozšírenia parametrov.

Každá z metaznačiek uvedených vyššie v DEFINÍCII má pre shell osobitný význam a musí byť citovaná, ak sa má reprezentovať.

Keď sa používajú zariadenia na rozširovanie príkazov, rozšírenie charakteru histórie , zvyčajne ! , aby sa zabránilo rozšíreniu histórie.

Existujú tri mechanizmy citovania: znak escape , jednoduché úvodzovky a dvojité úvodzovky.

Nezávislé spätné lomítko ( \ ) je escape znak . Zachová sa doslovná hodnota nasledujúceho znaku, ktorý nasleduje, s výnimkou . Ak sa objaví pár \ a samotné spätné lomítko nie je citované, \ sa považuje za pokračovanie v riadku (to znamená, že je odstránené zo vstupného prúdu a účinne ignorované).

Zapísanie znakov do jednotlivých úvodzoviek zachováva literálnu hodnotu každého znaku v úvodzovkách. Jedna cenová ponuka sa nesmie vyskytnúť medzi jednotlivými úvodzovkami, a to ani vtedy, ak ich predchádza spätné lomítko.

Uzatvorenie znakov v dvojitých úvodzovkách zachováva doslovnú hodnotu všetkých znakov v úvodzovkách s výnimkou znakov $ , ` a \ . Znaky $ a ` zachovajú svoj špeciálny význam v rámci dvojitých úvodzoviek. Spätné lomítko si zachováva svoj zvláštny význam iba vtedy, keď nasleduje jeden z nasledujúcich znakov: $ , ` , ' , \ alebo . Dvojitá citácia sa môže uviesť v rámci dvojitých úvodzoviek tak, že ju zadáte spätným lomítkom.

Špeciálne parametre * a @ majú osobitný význam pri dvojitých úvodzovkách (pozri PARAMETRE nižšie).

Slová formátu $ ' string ' sa spracúvajú špeciálne. Slovo sa rozširuje na reťazec a znaky uniknuté spätným lomikom sa nahradia podľa špecifikácie normy ANSI C. Sekvencie úniku lomítka, ak sú prítomné, sa dekódujú nasledovne:

\ a

upozornenie (zvon)

\ b

backspace

\ e

únikový znak

\ f

form feed

\ n

Nový riadok

\ r

vrátenie vozidla

\ t

vodorovná záložka

\ v

vertikálna záložka

\\

obrátenej lomítko

\ '

jednoduchá cenová ponuka

\ nnn

osembitový znak, ktorého hodnota je osmičková hodnota nnn (jedna až tri číslice)

\ x HH

osembitový znak, ktorého hodnota je hexadecimálna hodnota HH (jedna alebo dve hexadecimálne číslice)

\ c x

ovládací znak x

Rozšírený výsledok je jednočinný, akoby nebol prítomný znak dolára.

Dvojkotónový reťazec, ktorému predchádza znamienko dolára ( $ ), spôsobí, že reťazec bude preložený podľa aktuálneho jazyka. Ak je aktuálne miestne nastavenie C alebo POSIX , znak dolára sa ignoruje. Ak je reťazec preložený a nahradený, náhrada je dvojitá.

PARAMETRE

Parameter je subjekt, ktorý ukladá hodnoty. Môže to byť meno , číslo alebo niektorý zo špeciálnych znakov uvedených nižšie v časti Špeciálne parametre . Pre účely shellu je premenná parameter označený menom . Premenná má hodnotu a nula alebo viac atribútov . Atribúty sú priradené pomocou deklarácie vstavaného príkazu (pozri nižšie v SHELL BUILTIN COMMANDS ).

Ak je priradená hodnota, nastaví sa parameter. Nulový reťazec je platná hodnota. Akonáhle je premenná nastavená, môže byť deaktivovaná iba pomocou príkazu unset builtin (viď SHELL BUILTIN COMMANDS nižšie).

Premennej môže byť priradená výpisom formulára

name = [ hodnota ]

Ak nie je daná hodnota , premenná je priradená nulovému reťazcu. Všetky hodnoty podliehajú expanzii tilde, parametrizácii a variabilnej expanzii, substitúcii príkazov, aritmetickej expanzii a odstráneniu citátov (pozrite EXPANSION nižšie). Ak má premenná nastavený celočíselný atribút, potom hodnota podlieha aritmetickej expanzii aj vtedy, ak sa nepoužije rozšírenie $ ((...)) (pozri Aritmetické rozšírenie nižšie). Rozdelenie slov nie je vykonané, s výnimkou "$ @", ako je vysvetlené nižšie v časti Špeciálne parametre . Rozšírenie názvu cesty sa nevykoná. Príkazy priradenia sa môžu tiež zobrazovať ako argumenty pre deklarované , písané typy , exportné , readonly a miestne vstavané príkazy.

Polohové parametre

Pozíciový parameter je parameter označený jednou alebo viacerými číslicami, inými než jednopísmennými číslicami. Pozícia parametrov je priradená z argumentov shellu pri jeho vyvolaní a môže byť priradená pomocou zadaného vstavaného príkazu. Polohové parametre nemusia byť priradené k údajom o priradení. Polohové parametre sa dočasne vymenia, keď sa vykoná funkcia shell (pozri FUNKCIE nižšie).

Ak sa rozširuje polohový parameter pozostávajúci z viac ako jednej číslice, musí byť priložený do závor (pozri EXPANSION nižšie).

Špeciálne parametre

Plášť spracováva špeciálne niekoľko parametrov. Tieto parametre možno odkazovať iba; priradenie k nim nie je povolené.

*

Rozbalí sa na pozíciu parametrov, počnúc od jedného. Keď sa rozšírenie vyskytne v rámci dvojitých úvodzoviek, rozšíri sa na jedno slovo s hodnotou každého parametra oddeleného prvým znakom špeciálnej premennej IFS . To znamená, že " $ * " zodpovedá " $ 1 c $ 2 c ... ", kde c je prvý znak hodnoty premennej IFS . Ak je IFS nenastavený, parametre sú oddelené medzerami. Ak je IFS nulový, parametre sa spájajú bez zasahujúcich separátorov.

@

Rozbalí sa na pozíciu parametrov, počnúc od jedného. Keď sa rozšírenie vyskytne v rámci dvojitých úvodzoviek, každý parameter sa rozširuje na samostatné slovo. To znamená, že " $ @ " je ekvivalentom " $ 1 " " $ 2 " ... Keď nie sú žiadne pozícia parametre, " $ @ " a $ @ rozbaliť na nič (tj, sú odstránené).

#

Rozbalí sa na počet polohových parametrov v desatinných číslach.

?

Rozbalí sa na stav nedávno vykonaného potrubia popredia.

-

Rozbalí sa na príznaky aktuálnej voľby, ako je zadané pri vyvolaní, nastaveným vstavaným príkazom alebo tým nastaveným samotným shellom (napríklad voľba -i ).

$

Rozbalí sa na ID procesu pre shell. V subshell () sa rozšíri na ID procesu aktuálneho shell, nie na podsúbor.

!

Rozbalí sa na ID procesu posledného spusteného (pozadia asynchrónneho) príkazu.

0

Rozbalí sa na názov shellového alebo shellového skriptu. Toto je nastavené na inicializáciu shellu. Ak je bash vyvolaný súborom príkazov, $ 0 je nastavené na názov súboru. Ak je bash spustený s voľbou -c , potom $ 0 je nastavené na prvý argument po reťazci, ktorý sa má vykonať, ak je prítomný. V opačnom prípade je nastavený na názov súboru, ktorý sa používa na vyvolanie bash , ako to udáva argument nula.

_

Pri spúšťaní shellu nastavte na absolútny názov súboru shellu alebo shell skriptu, ktorý sa vykoná ako prešiel v zozname argumentov. Následne sa po rozšírení rozšíri na posledný príkaz na predchádzajúci príkaz. Tiež nastaviť na plný názov súboru každého príkazu vykonaného a umiestneného do prostredia exportovaného do tohto príkazu. Pri kontrole pošty obsahuje tento parameter názov aktuálne kontrolovaného poštového súboru.

Premenné Shell

Nasledujúce premenné sú nastavené shellom:

BASH

Rozbalí sa na úplný názov súboru, ktorý sa používa na vyvolanie tejto inštancie bash .

BASH_VERSINFO

Premenná čitateľného poľa, ktorej členovia obsahujú informácie o verzii pre túto inštanciu bash . Hodnoty priradené k členom poľa sú nasledovné:

BASH_VERSINFO [ 0]

Hlavné číslo verzie ( vydanie ).

BASH_VERSINFO [ 1]

Menšie číslo verzie ( verzia ).

BASH_VERSINFO [ 2]

Úroveň náplasti.

BASH_VERSINFO [ 3]

Verzia zostavenia.

BASH_VERSINFO [ 4]

Stav uvoľnenia (napr. Beta1 ).

BASH_VERSINFO [ 5]

Hodnota MACHTYPE .

BASH_VERSION

Rozbalí sa na reťazec popisujúci verziu tejto inštancie bash .

COMP_CWORD

COMP_LINE

Aktuálny príkazový riadok. Táto premenná je k dispozícii iba v shell funkciách a externých príkazoch vyvolaných programovateľnými zariadeniami pre dokončenie (pozri Programovateľné dokončenie nižšie).

COMP_POINT

COMP_WORDS

Premenná poľa (pozrite nižšie uvedené pole ) pozostávajúce z jednotlivých slov v aktuálnom príkazovom riadku. Táto premenná je k dispozícii iba v funkciách škrupín vyvolaných programovateľnými zariadeniami na dokončenie (pozri programovateľné vyplnenie nižšie).

DIRSTACK

Premenná poľa (pozri nižšie uvedené súbory) obsahujúce aktuálny obsah balíka adresárov. Adresáre sa v zásobníku nachádzajú v poradí, v akom sú zobrazené vstavané priečinky. Priradenie k členom tohto premenného môže byť použité na zmenu adresárov, ktoré sú už v zásobníku, ale musia byť vložené a odstránené adresáre. Priradenie tejto premennej nezmení aktuálny adresár. Ak je zariadenie DIRSTACK vypnuté , stratí jeho špeciálne vlastnosti, aj keď sa následne vynuluje.

EUID

Rozbalí sa na efektívne ID používateľa aktuálneho používateľa, inicializované pri štarte shellu. Táto premenná je readonly.

FUNCNAME

Názov aktuálne vykonávanej funkcie shell. Táto premenná existuje len vtedy, keď sa vykonáva funkcia shell. Priradenia do služby FUNCNAME nemajú žiadny vplyv a vrátia chybový stav. Ak je funkcia FUNCNAME zrušená , stratí jej špeciálne vlastnosti, aj keď sa následne vynuluje.

SKUPINY

Premenná poľa obsahujúca zoznam skupín, ktorých súčasným používateľom je člen. Priradenia do skupín nemajú žiadny vplyv a vrátia chybový stav. Ak je SKUPINA nenastavená, stratí svoje špeciálne vlastnosti, aj keď sa následne vynuluje.

HISTCMD

Číslo histórie alebo index v zozname histórie aktuálneho príkazu. Ak je HISTCMD nenastavený, stratí svoje špeciálne vlastnosti, aj keď sa následne vynuluje.

MENO HOSŤA

Automaticky sa nastaví na názov aktuálneho hostiteľa.

HOSTTYPE

Automaticky nastavte reťazec, ktorý jednoznačne popisuje typ stroja, na ktorom sa vykonáva bash . Predvolená hodnota závisí od systému.

linen

Vždy, keď je tento parameter odkazovaný, shell nahrádza desatinné číslo reprezentujúce aktuálne poradové číslo (od 1) v rámci skriptu alebo funkcie. Ak nie je v skripte alebo funkcii, nie je zaručená zmysluplná náhrada. Ak je LINENO vypnuté , stratí svoje špeciálne vlastnosti, aj keď sa následne vynuluje.

MACHTYPE

Automatické nastavenie na reťazec, ktorý úplne opisuje typ systému, na ktorom sa bash vykonáva, v štandardnom formáte GNU cpu-company-system . Predvolená hodnota závisí od systému.

OLDPWD

Predchádzajúci pracovný adresár nastavený príkazom cd .

OPTARG

Hodnota argumentu poslednej možnosti spracovanej príkazom getopts vstavaný (pozri SHELL BUILTIN COMMANDS nižšie).

OPTIND

Index ďalšieho argumentu, ktorý má byť spracovaný príkazom getopts builtin (pozri SHELL BUILTIN COMMANDS nižšie).

OSTYPE

Automaticky nastaviť na reťazec, ktorý popisuje operačný systém, na ktorom sa vykonáva bash . Predvolená hodnota závisí od systému.

PIPESTATUS

Premenná poľa (pozrite nižšie uvedené súbory) obsahuje zoznam hodnôt stavu výstupu z procesov v najnovšie spustenom potrubí popredia (ktorý môže obsahovať iba jeden príkaz).

PPID

ID procesu rodiča shellu. Táto premenná je readonly.

PWD

Aktuálny pracovný adresár nastavený príkazom cd .

RANDOM

Pri každom odkazovaní na tento parameter sa generuje náhodné celé číslo medzi 0 a 32767. Postupnosť náhodných čísel môže byť inicializovaná priradením hodnoty RANDOM . Ak je RANDOM nenastavené, stratí svoje špeciálne vlastnosti, aj keď sa následne vynuluje.

ODPOVEĎ

Ak nie sú k dispozícii žiadne argumenty, nastavte riadok vstupu načítavaný príkazom na čítanie .

SECONDS

Zakaždým, keď je tento parameter odkazovaný, sa vráti počet sekúnd od vyvolania. Ak je hodnota priradená k SECONDS , hodnota vrátená pri nasledujúcich referenciách je počet sekúnd od priradenia plus priradená hodnota. Ak je SECONDS nenastavené, stratí svoje špeciálne vlastnosti, aj keď sa následne vynuluje.

SHELLOPTS

Zoznam povolených funkcií shell oddelený dvojbodkou. Každé slovo v zozname je platným argumentom pre voľbu -o pre nastavený vstavaný príkaz (pozri SHELL BUILTIN COMMANDS nižšie). Možnosti zobrazené v SHELLOPTS sú tie, ktoré sú nahlásené ako zapnuté setom . Ak je táto premenná v prostredí pri spustení bash , každá možnosť shellu v zozname bude povolená pred prečítaním akýchkoľvek spúšťacích súborov. Táto premenná je iba na čítanie.

SHLVL

Zvýšená o jeden pri každom spustení inštancie bash .

UID

Rozbalí sa na používateľské ID aktuálneho používateľa, inicializované pri štarte shellov. Táto premenná je readonly.

Nasledujúce premenné sa používajú v shell. V niektorých prípadoch bash priraďuje k premennej predvolenú hodnotu; tieto prípady sú uvedené nižšie.

BASH_ENV

Ak je tento parameter nastavený, keď bash vykonáva skript pre shell, jeho hodnota sa interpretuje ako názov súboru obsahujúci príkazy na inicializáciu shell, ako v ~ / .bashrc . Hodnota BASH_ENV je pred interpretáciou ako názov súboru vystavená rozšíreniu parametrov, substitúcii príkazov a aritmetickej expanzii. PATH sa nepoužíva na vyhľadávanie výsledného názvu súboru.

CDPATH

Vyhľadávacia cesta pre príkaz cd . Ide o zoznam adresárov oddelených dvojbodkami, v ktorom shell hľadá cieľové adresáre špecifikované príkazom cd . Hodnota vzorky je ".: /: Usr".

COLUMNS

Používa sa výberom vstavaného príkazu na určenie šírky koncovky pri tlači výberových zoznamov. Automaticky nastaviť po prijatí SIGWINCH.

COMPREPLY

Pole premennej, z ktorej bash číta možné komplexy generované funkciou shell vyvolanej programovateľným dokončovacím zariadením (pozrite nižšie Programovateľné dokončenie ).

FCEDIT

Predvolený editor príkazu fc builtin.

FIGNORE

Zoznam adries s oddelenými čiarami, ktoré sa majú ignorovať pri vykonávaní dokončovania názvu súboru (pozri READLINE nižšie). Názov súboru, ktorého prípona zodpovedá jednej z položiek v FIGNORE, je vylúčená zo zoznamu zodpovedajúcich názvov súborov. Hodnota vzorky je ".o: ~".

GLOBIGNORE

Zoznam zostáv oddelených dvojbodkami definujúci súbor názvov súborov, ktoré sa majú ignorovať rozšírením názvu cesty. Ak sa názov súboru, ktorý zodpovedá vzoru rozšírenia cesty, taktiež zhoduje s niektorým z modelov v jazyku GLOBIGNORE , je odstránený zo zoznamu zápasov.

HISTCONTROL

Ak je hodnota ignorespace nastavená na hodnotu, riadky, ktoré začínajú znakom medzery, nie sú v zozname histórie zadané. Ak je nastavená hodnota ignoredups , riadky zodpovedajúce poslednému riadku histórie sa nezadajú. Hodnota ignoreboth kombinuje dve možnosti. Ak je nastavená alebo ak je nastavená na akúkoľvek inú hodnotu ako vyššie, všetky riadky prečítané analyzátorom sú uložené v zozname histórie podľa hodnoty HISTIGNORE . Funkciu tejto premennej nahrádza HISTIGNORE . Druhé a nasledujúce riadky zloženého príkazu pre viaceré riadky nie sú testované a pridávajú sa do histórie bez ohľadu na hodnotu HISTCONTROL .

HISTFILE

Názov súboru, v ktorom je uložená história príkazov (pozrite si časť HISTÓRIA nižšie). Predvolená hodnota je ~ / .bash_history . Ak je vypnutá, história príkazov sa neuloží po ukončení interaktívneho shellu.

HISTFILESIZE

Maximálny počet riadkov obsiahnutý v súbore histórie. Keď je tejto premennej priradená hodnota, súbor histórie je v prípade potreby skrátený, aby obsahoval viac ako tento počet riadkov. Predvolená hodnota je 500. Súbor histórie je taktiež skrátený na túto veľkosť po jeho zapísaní, keď sa ukončí interaktívny shell.

HISTIGNORE

Zoznam zoznamov vzoriek oddelených od hrubého čreva, ktorý sa používa na určenie toho, ktoré príkazové riadky by sa mali uložiť do zoznamu histórie. Každý vzor je ukotvený na začiatku riadku a musí zodpovedať úplnej línii (nie je pripojený žiadny implicitný znak * ). Každý vzor sa testuje na línii po tom, ako sa použijú kontroly uvedené v HISTCONTROL . Okrem znakov zodpovedajúcich bežným vzorom škrupín sa výraz ` & 'zhoduje s predchádzajúcim riadkom histórie. ` & 'môže uniknúť pomocou spätného lomka; spätné lomítko sa odstráni pred pokusom o zápas. Druhý a nasledujúci riadok zloženého príkazu pre viacero riadkov nie je testovaný a pridáva sa do histórie bez ohľadu na hodnotu HISTIGNORE .

HISTSIZE

Počet príkazov, ktoré si musíte zapamätať v histórii príkazov (pozri HISTÓRIA nižšie). Predvolená hodnota je 500.

DOMOV

Domovský adresár aktuálneho používateľa; predvolený argument pre príkaz cd vstavaný. Hodnota tejto premennej sa používa aj pri vykonávaní rozšírenia tilde.

HOSTFILE

Obsahuje názov súboru v rovnakom formáte ako / etc / hosts, ktorý by mal byť čítaný, keď shell potrebuje dokončiť názov hostiteľa. Zoznam možných dokončení názvu hostiteľa sa môže zmeniť počas spustenia shellu; pri ďalšom pokuse o dokončenie názvu hostiteľa po zmene hodnoty, bash pridá obsah nového súboru do existujúceho zoznamu. Ak je HOSTFILE nastavená, ale nemá žiadnu hodnotu, pokusy bash o čítanie / etc / hosts získajú zoznam možných dokončení názvu hostiteľa. Keď je HOSTFILE zrušený , zoznam hostiteľov sa vymaže.

IFS

Vnútorný separátor polí, ktorý sa používa na rozdelenie slov po rozšírení a na rozdelenie riadkov na slová s vkladaným príkazom na čítanie . Predvolená hodnota je `` ''.

IGNOREEOF

Ovláda činnosť interaktívneho shellu po prijatí znaku EOF ako jediného vstupu. Ak je nastavená hodnota, je to počet po sebe idúcich znakov EOF, ktoré musia byť zadané ako prvé znaky na vstupnom riadku pred ukončením bash . Ak premenná existuje, ale nemá číselnú hodnotu alebo nemá žiadnu hodnotu, predvolená hodnota je 10. Ak ju neexistuje, EOF označuje koniec vstupu do shell.

INPUTRC

Názov súboru pre spúšťací súbor readline , ktorý má prednosť pred nastavením ~ / .inputrc (pozri READLINE nižšie).

LANG

Používa sa na určenie kategórie lokality pre ktorúkoľvek kategóriu, ktorá nie je špecificky vybraná s premennou začínajúcou na LC_ .

LC_ALL

Táto premenná má prednosť pred hodnotou LANG a ľubovoľnej inej premennej LC_ určujúcej kategóriu lokality.

LC_COLLATE

Táto premenná určuje poradie zoradenia používané pri triedení výsledkov rozšírenia cesty a určuje správanie výrazov rozsahu, tried ekvivalencie a sekvencií zoradenia v rámci rozšírenia cesty a vzájomného porovnávania vzorov.

LC_CTYPE

Táto premenná určuje interpretáciu znakov a správanie tried znakov v rámci rozšírenia cesty a vzájomného porovnávania vzorov.

LC_MESSAGES

Táto premenná určuje lokalizáciu používanú na preklad dvojitých reťazcov, pred ktorými stojí hodnota $ .

LC_NUMERIC

Táto premenná určuje kategóriu lokality používanú na formátovanie čísel.

LINKY

Používa sa výberom zabudovaným príkazom na určenie dĺžky stĺpca pre tlač výberových zoznamov. Automaticky nastaviť po prijatí SIGWINCH.

MAIL

Ak je tento parameter nastavený na názov súboru a premenná MAILPATH nie je nastavená, bash informuje používateľa o príchode pošty do zadaného súboru.

MAILCHECK

Určuje, ako často (v sekundách) bash kontroluje poštu. Predvolená hodnota je 60 sekúnd. Keď je čas na kontrolu pošty, shell to urobí pred zobrazením primárneho výzvy. Ak je táto premenná nenastavená alebo je nastavená na hodnotu, ktorá nie je väčšia alebo rovná nule, shell zakáže kontrolu pošty.

MAILPATH

Zoznam názvov súborov oddelených dvojbodkami, ktoré sa majú skontrolovať pre poštu. Správa, ktorá sa má vytlačiť po príchode pošty do konkrétneho súboru, môže byť zadaná oddelením názvu súboru od správy pomocou tlačidla `? '. Keď sa použije v texte správy, $ _ sa rozširuje na názov aktuálneho poštového súboru. Príklad:

MAILPATH = '/ var / mail / bfox?' Máte poštu ': ~ / shell-mail?' $ _ Má poštu!

Bash dodáva predvolenú hodnotu pre túto premennú, ale umiestnenie používateľských poštových súborov, ktoré používa, závisí od systému (napr. / Var / mail / $ USER ).

OPTERR

Ak je nastavená hodnota 1, bash zobrazí chybové hlásenia generované príkazom getopts builtin (pozri SHELL BUILTIN COMMANDS nižšie). OPTERR sa inicializuje na 1 vždy, keď sa vyvolá shell alebo sa spustí shellový skript.

PATH

Vyhľadávacia cesta pre príkazy. Jedná sa o zoznam adresárov oddelených dvojbodkami, v ktorých shell hľadá príkazy (pozri príkaz COMMAND EXECUTION nižšie). Predvolená cesta je závislá od systému a je nastavená správcom, ktorý inštaluje bash . Bežná hodnota je `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :.

POSIXLY_CORRECT

Ak je táto premenná v prostredí pri spustení bash , pred čítaním spúšťacích súborov vstúpi shell do režimu posix , ako keby bola dodaná možnosť vyvolania - posix . Ak je nastavená počas spustenia shellu, bash umožňuje posix režim , akoby bol vykonaný príkaz set -o posix .

PROMPT_COMMAND

Ak je hodnota nastavená, hodnota sa vykoná ako príkaz pred vydaním každého primárneho výzvy.

PS1

Hodnota tohto parametra je rozšírená (pozri nižšie RIEŠENIE ) a používa sa ako hlavný reťazec výzvy. Predvolená hodnota je `` \ s- \ v \ $ ''.

PS2

Hodnota tohto parametra sa rozširuje ako u PS1 a používa sa ako sekundárny riadok výzvy. Predvolená hodnota je `` > ''.

PS3

Hodnota tohto parametra sa používa ako výzva pre príkaz select (pozri SHELL GRAMMAR vyššie).

PS4

Hodnota tohto parametra sa rozširuje rovnako ako u PS1 a hodnota sa vytlačí pred každým zobrazením príkazu bash počas trasy vykonávania. Prvý znak PS4 sa replikuje niekoľkokrát, ak je to potrebné, na označenie viacerých úrovní nepriamej orientácie. Predvolená hodnota je `` + ''.

FORMÁT ČASU

Hodnota tohto parametra sa používa ako formátový reťazec, ktorý špecifikuje, ako by sa mali zobraziť informácie o časovaní pre potrubia s predponovaným časovo vyhradeným slovom. Znak % predstavuje únikovú sekvenciu, ktorá sa rozbalí na časovú hodnotu alebo iné informácie. Únikové sekvencie a ich významy sú nasledovné: závesy označujú voliteľné časti.

%%

Doslovný % .

% [ p ] [l] R

Uplynutý čas v sekundách.

% [ p ] [l] U

Počet CPU sekúnd strávených v režime používateľa.

% [ p ] [l] S

Počet CPU sekúnd strávených v režime systému.

% P

Percento CPU, vypočítané ako (% U +% S) /% R.

Voliteľná p je číslica určujúca presnosť , počet zlomkových číslic za desatinnou čiarkou. Hodnota 0 spôsobí, že sa nezobrazí žiadna desatinná čiara. Môžeme špecifikovať najviac tri miesta za desatinnou čiarkou; Hodnoty p väčšie ako 3 sa zmenia na 3. Ak p nie je zadané, použije sa hodnota 3.

Voliteľná voľba l špecifikuje dlhší formát, vrátane minút, formulára MM m SS . FF s. Hodnota p určuje, či je frakcia zahrnutá alebo nie.

Ak táto premenná nie je nastavená, bash pôsobí ako keby mala hodnotu $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' . Ak je hodnota null, nebudú zobrazené žiadne informácie o časovaní. Nasledujúci riadok sa pridá, keď sa zobrazí formátový reťazec.

TMOUT

Ak je hodnota TMOUT nastavená na hodnotu väčšiu ako nula, považuje sa za predvolený časový limit pre čítanie vložené. Príkaz select sa ukončí, ak vstup nepríde po sekundách TMOUT, keď vstup pochádza z terminálu. V interaktívnom systéme sa hodnota interpretuje ako počet sekúnd na čakanie na zadanie po vydaní primárneho výzvy. Bash končí po čakaní na tento počet sekúnd, ak vstup nepríde.

auto_resume

Táto premenná riadi spôsob interakcie shellu s používateľom a ovládaním úloh. Ak je táto premenná nastavená, jednoduché príkazy jednoduchého slova bez presmerovania sa považujú za kandidátov na obnovenie existujúcej zastavenej úlohy. Nie je povolená nejednoznačnosť; ak existuje viac ako jedno úlohy začínajúce zadaným reťazcom, je vybratá práca naposledy prístupná. Názov zastavenej úlohy v tomto kontexte je príkazový riadok použitý na jej spustenie. Ak je nastavená hodnota presná , dodaný reťazec musí presne zodpovedať názvu zastavenej úlohy. ak je nastavený na substring , dodaný reťazec musí zodpovedať podreťazce názvu zastavenej úlohy. Hodnota podreťazca poskytuje funkciu analogickú s hodnotou %? identifikátor pracovnej pozície (pozrite nižšie JOB CONTROL ). Ak je nastavená ľubovoľná iná hodnota, dodaný reťazec musí byť predponou názvu zastaveného úlohy. toto poskytuje funkciu analogickú s identifikátorom % úlohy.

histchars

Dve alebo tri znaky, ktoré riadia rozšírenie histórie a tokenizáciu (viď časť ROZŠÍRENIE HISTÓRIE nižšie). Prvým znakom je znak rozšírenia histórie, charakter, ktorý signalizuje začiatok rozšírenia histórie, zvyčajne ` ! '. Druhým znakom je rýchly substitučný znak, ktorý sa používa ako skratka pre opätovné spustenie predchádzajúceho zadaného príkazu, ktorý v príkaze nahrádza jeden reťazec za iný. Predvolená hodnota je ` ^ '. Voliteľný tretí znak je znak, ktorý označuje, že zvyšok riadku je komentár, keď sa nachádza ako prvý znak slova, zvyčajne " # ". Znak komentára histórie spôsobuje, že nahradzovanie histórie sa preskočí pre zvyšné slová na riadku. Nevytvára nevyhnutne, aby syntaktický analyzátor spracoval zvyšok riadku ako komentár.

poľa

Bash poskytuje jednorozmerné premenné poľa. Každá premenná môže byť použitá ako pole; deklarovať vstavaný bude explicitne deklarovať pole. Neexistuje maximálna hranica veľkosti poľa ani požiadavka, aby členovia boli indexovaní alebo priradení súvislý. Polia sú indexované pomocou celých čísel a sú založené na nulách.

Ak je pre každú premennú priradený názov syntaxe [ index ] = hodnota, automaticky sa vytvorí pole. Dolný index sa považuje za aritmetický výraz, ktorý sa musí vyhodnotiť na číslo väčšie alebo rovné nule. Ak chcete explicitne deklarovať pole, použite deklarovať - meno (pozri SHELL BUILTIN COMMANDS nižšie). deklarovať - je tiež prijaté meno [ dolný index ]; index je ignorovaný. Atribúty môžu byť špecifikované pre premennú poľa pomocou deklarovaných a readonly builtins. Každý atribút sa vzťahuje na všetkých členov poľa.

Polia sú priradené k použitiu zložených priradení formulára name = ( hodnota 1 ... hodnota n ) , kde každá hodnota je formulára [ index ] = reťazec . Vyžaduje sa iba reťazec . Ak sa dodávajú voliteľné zátvorky a index, index je priradený; inak index priradeného prvku je posledný index priradený výkazom plus jeden. Indexovanie začína na nulu. Táto syntax je tiež akceptovaná vyhlásením vstavaného. Jednotlivé elementy poľa môžu byť priradené k použitiu vyššie uvedenej syntaxe názvu [ subscript ] = value .

Nevytvorená inštalácia sa používa na zničenie polí. zrušiť názov [ index ] zničí prvok poľa na indexy indexu. zrušiť názov , kde je názov poľa alebo unset name [ index ], kde index je * alebo @ , odstráni celé pole.

Deklarované lokálne a readonly builtins každý prijímajú -a možnosť určiť pole. Čítaná vstavaná prijíma voľbu -a na priradenie zoznamu slov čítaných zo štandardného vstupu do poľa. Nastaviť a deklarovať vstavané hodnoty poľa zobrazenia spôsobom, ktorý umožňuje ich opätovné použitie ako priradenia.

EXPANZIA

Rozšírenie sa vykoná na príkazovom riadku po rozdelení na slová. Existuje sedem druhov rozšírenia: roztiahnutie náklonu, rozšírenie tilde , parametrizácia a variabilná expanzia , substitúcia príkazov , aritmetická expanzia , rozdelenie slov a rozšírenie cesty .

Poradie rozširovania je: rozšírenie ozdôb, rozšírenie tilde, parametre, premenná a aritmetická expanzia a substitúcia príkazov (vykonaná ľavostranným spôsobom), rozdelenie slov a rozšírenie názvu cesty.

Na systémoch, ktoré ju podporujú, existuje dodatočná expanzia: náhrada procesu .

Brace rozšírenie

Rozšírenie závesu je mechanizmus, pomocou ktorého sa môžu generovať ľubovoľné reťazce. Tento mechanizmus je podobný rozšíreniu názvov ciest , ale vygenerované názvy súborov nemusia existovať. Vzory, ktoré sa majú rozšíriť, majú formu voliteľnej preambuly , za ktorou nasleduje séria reťazcov oddelených čiarkou medzi párom zátvoriek, po ktorých nasleduje voliteľný postscript . Preambula je predponovaná každému reťazcu obsiahnutému v zátvorkách a následný zápis je potom pripojený ku každému výslednému reťazcu a rozširuje sa zľava doprava.

Rozšírenia podpery môžu byť vnorené. Výsledky každého rozšíreného reťazca nie sú zoradené. zľava doprava sa zachová. Napríklad { d, c, b } sa rozširuje na "ade es abe".

Pred rozšírením sa vykoná rozšírenie zátvoriek a vo výsledku sa zachovajú akékoľvek znaky špeciálne pre iné rozšírenia. Je to striktne textové. Bash neuplatňuje žiadnu syntaktickú interpretáciu v kontexte rozšírenia alebo textu medzi rovinkami.

Tento konštrukt sa zvyčajne používa ako skratka, keď je spoločná predpona reťazcov, ktoré sa majú generovať, dlhšia ako v predchádzajúcom príklade:

mkdir / usr / local / src / bash / {starý, nový, dist, bugs}

alebo

chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}

Rozšírenie Brace prináša miernu nezlučiteľnosť s historickými verziami š . šs sa netýka otvárania alebo zatvárania vzpery špeciálne, keď sa objavia ako súčasť slova, a zachovajú ich na výstupe. Bash odstraňuje vzpery od slov ako dôsledok rozšírenia ozdôb. Napríklad slovo zadané do súboru sh {1,2} sa na výstupe zobrazí rovnako. Rovnaké slovo je výstupom ako súbor1 súbor2 po rozšírení o bash . Ak je potrebná prísna kompatibilita s sh , spustite bash s voľbou + B alebo vypnite rozšírenie nákružku pomocou možnosti + B na nastavený príkaz (pozri SHELL BUILTIN COMMANDS nižšie).

Rozšírenie Tilde

Ak sa slovo začína nekótovaným znakom tilde (` ~ '), všetky znaky predchádzajúce prvému nekótovanému lomítko (alebo všetky znaky, ak neexistuje žiadna nekótovaná lomka) sa považujú za predponu tilde . Ak nie je uvedený žiadny z znakov v prefixu tilde, znaky v prefixu tilde po tilde sa považujú za možné prihlasovacie meno . Ak je toto prihlasovacie meno reťazcom null, tilde sa nahradí hodnotou parametra shell HOME . Ak je DOM zrušená, namiesto toho sa nahradí domovský adresár používateľa, ktorý vykoná shell. V opačnom prípade je predpona tilde nahradená domácim adresárom spojeným so zadaným prihlasovacím menom.

Ak je predpona tilda "~ +", hodnota premennej PWD premennej prefix tilde. Ak je predpona tilda "~ -", hodnota premennej shell OLDPWD , ak je nastavená, sa nahradí. Ak znaky, ktoré nasledujú po tilde v prefixu tilde, pozostávajú z čísla N , voliteľne predpony "+" alebo "-", predpona tilde sa nahradí zodpovedajúcim prvkom z množiny adresárov, ako by to bolo zobrazené pomocou dir vstavaného s predponou tilde ako argumentom. Ak znaky, ktoré nasledujú po tilde v prefixu tilde, pozostávajú z čísla bez prednej "+" alebo "-", predpokladá sa "+".

Ak je prihlasovacie meno neplatné alebo ak rozšírenie tilde zlyhá, slovo sa nezmení.

Každé priradenie premenných sa kontroluje pre nepridelené prefixy tilde bezprostredne za : alebo. V týchto prípadoch sa tiež vykonáva rozšírenie tilde. V dôsledku toho je možné priradenie názvov súborov s tildami do priradení k PATH , MAILPATH a CDPATH a shell priradí rozšírenú hodnotu.

Rozšírenie parametrov

Znak " $ " predstavuje rozšírenie parametrov, náhradu príkazov alebo aritmetické rozšírenie. Názov parametra alebo symbol, ktorý sa má rozšíriť, môže byť priložený do zátvoriek, ktoré sú voliteľné, ale slúžia na ochranu premennej, ktorá sa má rozšíriť zo znakov bezprostredne nasledujúcich, ktoré by mohli byť interpretované ako súčasť mena.

Keď sa používajú závorky, zodpovedajúca koncová vzpera je prvý ` } ', ktorý unikol spätným lomítkom alebo v rámci citovaného reťazca, a nie v rámci vloženej aritmetickej expanzie, výmeny príkazov alebo rozšírenia paramteru.

Hodnota parametra sa nahradí. Konzoly sú požadované, keď parameter je polohový parameter s viac ako jednou číslicou, alebo keď nasleduje parameter, znak, ktorý sa nemá interpretovať ako súčasť jeho názvu.

V každom z nasledujúcich prípadov je slovo predmetom rozšírenia tilde, rozšírenia parametrov, substitúcie príkazov a aritmetickej expanzie. Ak nevykonáte rozširovanie podreziet, testy bash pre parameter, ktorý je nenastavený alebo nulový; vynechanie dvojbodky má za následok test len ​​pre nenastavený parameter.

Použiť predvolené hodnoty . Ak je parameter nenastavený alebo nulový, rozšírenie slova sa nahradí. V opačnom prípade sa hodnota parametra nahrádza.

Priradiť predvolené hodnoty . Ak je parameter nenastavený alebo nulový, rozšírenie slova je priradené parametru . Hodnota parametra sa potom nahradí. Polohové parametre a špeciálne parametre nemusia byť priradené týmto spôsobom.

Chyba zobrazenia, ak je null alebo Unset . Ak je parameter null alebo nenastavený, rozšírenie slova (alebo hlásenie v tomto smere, ak slovo nie je prítomné) je zapísané do štandardnej chyby a shell, ak nie je interaktívne, opustí. V opačnom prípade sa hodnota parametra nahrádza.

Použite Alternate Value . Ak je parameter nulový alebo nenastavený, nič sa nenahradí, inak sa rozširuje slovo .

Rozbalí sa na názvy premenných, ktorých názvy začínajú predponou , oddelené prvým znakom špeciálnej premennej IFS .

Dĺžka znakov hodnoty parametra sa nahradí. Ak je parameter * alebo @ , substituovaná hodnota je počet polohových parametrov. Ak je parametrom názov poľa priradený * alebo @ , substituovaná hodnota je počet prvkov v poli.

Slovo sa rozbalí tak, aby vytvorilo vzor rovnako ako pri rozšírení cesty. Ak sa vzorec zhoduje so začiatkom hodnoty parametra , potom výsledkom rozšírenia je rozšírená hodnota parametra s najkratším vzorom (`` # '') alebo najdlhšia zhoda (`` ## ' prípad "). Ak je parameter @ alebo * , operácia na odstránenie vzoru sa postupne aplikuje na každý pozíciový parameter a rozšírenie je výsledným zoznamom. Ak je parametrom matica premenná zaregistrovaná s @ alebo * , operácia odstránenia vzorov sa aplikuje na každý člen poľa a jeho rozšírenie je výsledným zoznamom.

Slovo sa rozširuje tak, aby vytvorilo vzor rovnako ako pri rozšírení cesty. Ak sa vzorec zhoduje s koncovou časťou rozšírenej hodnoty parametra , potom výsledkom rozšírenia je rozšírená hodnota parametra s najkratším vzorom zhodnosti (prípad " % ") alebo najdlhšia vzorová zhoda (" %" % '' prípad). Ak je parameter @ alebo * , operácia na odstránenie vzoru sa postupne aplikuje na každý pozíciový parameter a rozšírenie je výsledným zoznamom. Ak je parametrom matica premenná zaregistrovaná s @ alebo * , operácia odstránenia vzorov sa aplikuje na každý člen poľa a jeho rozšírenie je výsledným zoznamom.

Vzor sa rozširuje tak, aby vytvoril vzor rovnako ako pri rozšírení cesty. Parameter sa rozbalí a najdlhšia zhoda vzoru s jeho hodnotou sa nahradí reťazcom . V prvej forme sa nahradí iba prvý zápas. Druhá forma spôsobí, že všetky súbory vzoru sa nahradia reťazcom . Ak vzor začína znakom # , musí sa zhodovať na začiatku rozšírenej hodnoty parametra . Ak vzor začína znakom % , musí sa zhodovať s koncom rozšírenej hodnoty parametra . Ak je reťazec nulový, zhody vzoru sa vymažú a / nasledujúci vzor sa môže vynechať. Ak je parameter @ alebo * , substitučná operácia sa použije na každý pozíciový parameter a jeho rozšírenie je výsledný zoznam. Ak parameter je premenná poľa podpísaná s @ alebo * , substitučná operácia sa použije na každý člen poľa a jeho rozšírenie je výsledný zoznam.

Command Substitution

Nahradenie príkazu umožňuje výstup príkazu nahradiť názov príkazu. Existujú dve formy:

$ ( príkaz )

alebo

príkaz "

Bash vykoná rozširovanie vykonaním príkazu a nahradením náhrady príkazu štandardným výstupom príkazu, pričom všetky nové riadky sú odstránené. Vložené nové riadky sa neodstránia, ale môžu byť odstránené pri rozdeľovaní slov. Nahradenie príkazu $ ( súbor mačky ) môže byť nahradené ekvivalentným, ale rýchlejším $ (< súborom ).

Keď sa použije substitučná metóda starého štýlu, spätné lomítko si zachováva svoj doslovný význam okrem prípadov, keď nasleduje $ , ` , alebo \ . Prvý spätný posun, ktorému nepredchádza spätné lomítko, ukončí výmenu príkazu. Pri použití príkazu $ ( príkaz ), všetky znaky medzi zátvorkami tvoria príkaz; žiadne sa nezaobchádza špeciálne.

Substitucie príkazov môžu byť vnorené. Ak chcete hniezdiť pri použití spätného formulára, uniknúť z vnútorných spätných väzieb spätnými lomkami.

Ak sa substitúcia objaví v rámci dvojitých úvodzoviek, rozdelenie slov a rozšírenie názvu cesty sa na výsledkoch nevykonajú.

Aritmetická expanzia

Aritmetická expanzia umožňuje vyhodnotenie aritmetického vyjadrenia a nahradenie výsledku. Formát pre aritmetické rozšírenie je:

$ (( výraz ))

Výraz sa považuje za dvojitý úvod, ale dvojitá citácia v zátvorkách nie je spracovaná špeciálne. Všetky znaky výrazu podliehajú rozšíreniu parametrov, rozšíreniu reťazca, výmene príkazov a odstráneniu citátov. Aritmetické substitúcie môžu byť vnorené.

Hodnotenie sa vykonáva podľa pravidiel uvedených nižšie pod ARITMETICKÝM HODNOTENÍM . Ak je výraz neplatný, bash vytlačí správu indikujúcu zlyhanie a nedôjde k žiadnej výmene.

Nahradenie procesu

Nahradenie procesov je podporované systémami, ktoré podporujú pomenované potrubia ( FIFO ) alebo metóda / dev / fd pomenovania otvorených súborov. Má formu <( zoznam ) alebo > ( zoznam ) . Zoznam procesov sa spúšťa so vstupom alebo výstupom pripojeným k FIFO alebo k niektorému súboru v / dev / fd . Názov tohto súboru sa odovzdáva ako argument aktuálneho príkazu ako výsledok rozšírenia. Ak sa použije formulár > ( zoznam ) , zápis do súboru poskytne vstup pre zoznam . Ak sa použije formulár <( zoznam ) , mal by byť prečítaný súbor, ktorý bol odovzdaný ako argument, aby sa získal výstup zoznamu .

Ak je k dispozícii, substitúcia procesu sa vykonáva súčasne s parametrom a variabilnou expanziou, substitúciou príkazov a aritmetickou expanziou.

Rozdelenie slov

Obálka skenuje výsledky rozšírenia parametrov, náhrady príkazov a aritmetickej expanzie, ktoré sa nevyskytli v rámci dvojitých úvodzoviek na rozdelenie slov .

Obal pokrýva každý znak IFS ako oddeľovač a rozdeľuje výsledky ostatných rozšírení na slová na týchto znakoch. Ak je IFS deaktivovaný alebo jeho hodnota je presne , predvolená hodnota potom slúži na delimitáciu slov. Ak IFS má inú hodnotu ako predvolenú hodnotu, potom sa na začiatku a na konci slova ignorujú sekvencie medzery a medzery znakov, pokiaľ je znak biely znak v hodnote IFS (znak IFS ). Akékoľvek znaky v IFS, ktoré nie sú medzery IFS , spolu s akýmkoľvek priľahlým znakom medzery IFS , vymedzuje pole. Postupnosť znakov medzery IFS sa tiež považuje za oddeľovač. Ak je hodnota IFS nulová, nedôjde k rozdeleniu slov.

Explicitné nulové argumenty ( "" alebo "" ) sú zachované. Nekotované implicitné argumenty null, ktoré sú výsledkom rozšírenia parametrov bez hodnôt, sú odstránené. Ak sa parameter s žiadnou hodnotou nerozšíri v rámci dvojitých úvodzoviek, výsledok null a výsledok zostane zachovaný.

Upozorňujeme, že ak nedôjde k rozšíreniu, nedôjde k rozdeleniu.

Rozšírenie názvu cesty

Po rozdelení slov, ak nie je nastavená voľba -f , bash skenuje každé slovo pre znaky * ,? , a [ . Ak sa zobrazí jeden z týchto znakov, slovo sa považuje za vzor a nahradí sa abecedným zoznamom názvov súborov zodpovedajúcich vzoru. Ak sa nenájdu žiadne zodpovedajúce názvy súborov a nullglob je zakázaná, slovo zostane nezmenené. Ak je nastavená voľba nullglob a nedôjde k nájdeniu zhody, slovo sa odstráni. Ak je povolená možnosť shell nocaseglob , zhoda sa vykoná bez ohľadu na prípad abecedných znakov. Keď sa vzor použije na rozšírenie názvu cesty, znak "`. '' Na začiatku názvu alebo bezprostredne po lomítko musí byť explicitne prispôsobený, pokiaľ nie je nastavená možnosť shell dotglob . Pri párovaní názvu cesty musí byť znak lomítka vždy zodpovedajúci explicitne. V ostatných prípadoch sa znak ``. '' Nezaobchádza špeciálne. Pozrite popis štepu nižšie pod SHELL BUILTIN COMMANDS pre opis možností nocaseglob , nullglob a dotglob shellu.

Hromadnú premennú GLOBIGNORE možno použiť na obmedzenie množiny názvov súborov zodpovedajúcich vzoru . Ak je nastavená funkcia GLOBIGNORE , každý zodpovedajúci názov súboru, ktorý sa tiež zhoduje s jedným zo vzorov v GLOBIGNORE, sa odstráni zo zoznamu zápasov. Názvy súborov ``. '' A `` .. '' sú vždy ignorované aj pri nastavení funkcie GLOBIGNORE . Nastavenie GLOBIGNORE má však za následok povolenie možnosti dotglob shellu, takže všetky ostatné názvy súborov začínajúce na ``. '' Sa zhodujú. Ak chcete získať staré správanie pri ignorovaní názvov súborov začínajúcich na ``. '' , Urobte ``. * '' Jeden z modelov v GLOBIGNORE . Možnosť dotglob je vypnutá, keď je GLOBIGNORE nenastavené.

Zhoda s modelmi

Každý znak, ktorý sa objaví vo vzorke, okrem znakov špeciálneho vzoru popísaných nižšie, sa zhoduje. NUL znak nemôže nastať v vzore. Špeciálne znakové znaky musia byť citované, ak majú byť doslova zosúladené.

Špeciálne znakové znaky majú nasledujúce významy:

*

Zodpovedá ľubovoľnému reťazcu vrátane nulového reťazca.

?

Zodpovedá ľubovoľnému jednotlivému znaku.

[...]

Zodpovedá akémukoľvek priloženému znaku. Pár znakov oddelených pomlčkou označuje rozsahový výraz ; akýkoľvek znak, ktorý zoradí medzi týmito dvoma znakmi, vrátane, pričom sa použije súčasná sekvencia zoradenia a množina znakov. Ak prvý znak nasledujúci po [ je ! alebo a, potom je zhodný ľubovoľný znak, ktorý nie je uzavretý. Poradie zoradenia znakov v rozsahu výrazov je určené aktuálnym miestom a hodnotou premennej shell LC_COLLATE , ak je nastavená. A - môže byť zhodná tým, že sa v ňom zaradí ako prvý alebo posledný znak. A ] možno zaradiť tak, že ho zahrniete ako prvý znak v súprave.

V rámci [ a ] je možné špecifikovať triedy znakov pomocou syntaxe [: class :] , kde trieda je jednou z nasledujúcich tried definovaných v štandarde POSIX.2:

alnum alpha ascii prázdny cntrl číslicový graf dolný tlač bod bod horné slovo xdigit
Trieda znakov sa zhoduje so všetkými znakmi patriacimi do tejto triedy. Slovo triedy znakov sa zhoduje s písmenami, číslicami a znakom _.

V rámci [ a ] sa trieda ekvivalencie môže špecifikovať pomocou syntaxe [= c =] , ktorá sa zhoduje so všetkými znakmi s rovnakou hmotnosťou zoradenia (ako je definovaná aktuálnym miestom) ako znak c .

V rámci [ a ] sa syntax [. symbol .] zodpovedá symbolu porovnávacieho symbolu .

Ak je povolená funkcia extglob shellu pomocou vstavaného štepu , rozpozná sa niekoľko rozšírených operátorov prispôsobovania vzoru. V nasledujúcom opise je zoznam vzorov zoznamom jedného alebo viacerých vzorov oddelených znakom | , Kompozitné vzory môžu byť vytvorené použitím jedného alebo viacerých z nasledujúcich vzorcov:

? ( zoznam vzorov )

Zodpovedá nulovému alebo jednému výskytu daných vzorov

* ( zoznam vzorov )

Zodpovedá nulovým alebo viacerým výskytom daných vzorov

+ ( zoznam vzorov )

Zhoduje sa s jedným alebo viacerými výskytmi daných vzorov

@ ( zoznam vzorov )

Vyhovuje presne jednému z daných vzorov

! ( zoznam vzorov )

Zodpovedá všetkému okrem jedného z daných vzorov

Odstránenie citácie

Po predchádzajúcich rozšíreniach sa odstránia všetky nekótované výskyty znakov \ , " a " , ktoré nevyplývajú z jednej z vyššie uvedených rozšírení.

PRESMEROVANIE

Pred vykonaním príkazu môže byť jeho vstup a výstup presmerované pomocou špeciálneho záznamu interpretovaného shellom. Presmerovanie sa môže použiť aj na otvorenie a zatvorenie súborov pre aktuálne prostredie pre vytváranie prostredia. Nasledujúci operátor presmerovania môže predchádzať alebo sa zobrazovať kdekoľvek v jednoduchom príkaze alebo môže nasledovať príkaz . Presmerovania sa spracovávajú v poradí, v akom sa zobrazujú, zľava doprava.

V nasledujúcich popisoch, ak je vynechané číslo deskriptora súboru a prvý znak operátora presmerovania je < , presmerovanie odkazuje na štandardný vstup (deskriptor súboru 0). Ak je prvý znak operátora presmerovania > , presmerovanie sa vzťahuje na štandardný výstup (deskriptor súboru 1).

Slovo nasledujúci po operátore presmerovania v nasledujúcich popisoch, pokiaľ nie je uvedené inak, podlieha rozšíreniu námahy, rozšíreniu tilde, rozšíreniu parametrov, výmeny príkazov, aritmetickej expanzii, odstráneniu citácie, rozšíreniu názvu cesty a rozdeľovaniu slov. Ak sa rozbalí na viac ako jedno slovo, bash hlási chybu.

Upozorňujeme, že poradie presmerovaní je významné. Napríklad príkaz

ls > zoznam 2 > & 1

smeruje štandardný výstup aj štandardnú chybu do zoznamu dirlistov , zatiaľ čo príkaz

ls 2 > & 1 > dirlist

smeruje iba štandardný výstup do zoznamu dirlistov , pretože štandardná chyba bola duplikovaná ako štandardný výstup skôr, než bol štandardný výstup presmerovaný do zoznamu dirlistov .

Bash spracováva niekoľko názvov súborov zvlášť, ak sa používajú pri presmerovávaní, ako je popísané v nasledujúcej tabuľke:

/ dev / fd / fd

Ak fd je platné celé číslo, deskriptor súboru fd je duplikovaný.

/ Dev / stdin

Popisovač súborov 0 je duplikovaný.

/ Dev / štandardný výstup

Popisovač súborov 1 je duplikovaný.

/ Dev / stderr

Súborový deskriptor 2 je duplikovaný.

/ dev / tcp / hostiteľ / port

Ak je hostiteľ platný názov hostiteľa alebo internetová adresa a port je celé číslo portu alebo názov služby, bash sa pokúsi otvoriť pripojenie TCP k príslušnej zásuvke.

/ dev / udp / hostiteľ / port

Ak je hostiteľ platný názov hostiteľa alebo internetová adresa a port je celé číslo portu alebo názov služby, bash sa pokúsi otvoriť pripojenie UDP k príslušnej zásuvke.

Neschopnosť otvoriť alebo vytvoriť súbor spôsobí zlyhanie presmerovania.

Presmerovanie vstupu

Presmerovanie vstupu spôsobí, že súbor, ktorého meno je výsledkom rozšírenia slova , sa otvorí na čítanie na deskriptore súboru n , alebo štandardný vstup (deskriptor súboru 0), ak n nie je zadané.

Všeobecný formát presmerovania vstupu je:

[ n ] < slovo

Presmerovanie výstupu

Presmerovanie výstupu spôsobí, že súbor, ktorého názov je výsledkom rozšírenia slova, ktorý má byť otvorený pre zápis do deskriptora súborov n , alebo štandardný výstup (deskriptor súboru 1), ak n nie je zadané. Ak súbor neexistuje, vytvorí sa; ak existuje, je skrátená na nulovú veľkosť.

Všeobecný formát presmerovania výstupu je:

[ n ] > slovo

Ak je operátor presmerovania > a voľba noclobber na vstavanú sadu bola povolená, presmerovanie zlyhá, ak súbor, ktorého meno je výsledkom rozšírenia slova, existuje a je bežný súbor. Ak je operátor presmerovania > | , alebo operátor presmerovania > a voľba noclobber na nastavený vstavaný príkaz nie je povolená, presmerovanie sa pokúsi dokonca aj vtedy, ak existuje súbor s názvom podľa slova .

Pridanie presmerovaného výstupu

Presmerovanie výstupu týmto spôsobom spôsobí, že súbor, ktorého názov je výsledkom rozšírenia slova, ktorý sa má otvoriť pre pripojenie k deskriptoru súborov n , alebo štandardný výstup (deskriptor súboru 1), ak n nie je zadané. Ak súbor neexistuje, vytvorí sa.

Všeobecný formát pripojenia výstupu je:

[ n ] >> slovo

Presmerovanie štandardného výstupu a štandardnej chyby

Bash umožňuje presmerovať štandardný výstup (deskriptor súboru 1) a štandardný výstup chyby (deskriptor súborov 2) do súboru, ktorého názov je rozšírenie slova s týmto konštruktom.

Existujú dva formáty pre presmerovanie štandardného výstupu a štandardnej chyby:

&> slovo

a

> & slovo

Z obidvoch foriem je prvá výhodná. Toto je sémanticky ekvivalentné

> slovo 2 > & 1

Tu dokumenty

Tento typ presmerovania nariaďuje shellu čítať vstup z aktuálneho zdroja, kým nie je vidieť riadok obsahujúci iba slovo (bez koncových polí). Všetky riadky prečítané do tohto bodu sa potom použijú ako štandardný vstup pre príkaz.

Formát tu dokumentov je:

<< [ - ] slovo here-document delimiter

Žiadne rozšírenie parametrov, substitúcia príkazov, aritmetická expanzia alebo rozšírenie cesty sa nevykonávajú na základe slova . Ak sú uvedené niektoré znaky v slove , oddeľovač je výsledkom odstránenia citácie v slove a riadky v tomto dokumente sa nerozširujú. Ak je slovo nekótované, všetky riadky dokumentu sa podrobia expanzii parametrov, substitúcii príkazov a aritmetickej expanzii. V druhom prípade sa poradie znakov \ ignoruje a \ musí byť použité na citovanie znakov \ , $ a ` .

Ak je operátor presmerovania << - , potom sú všetky riadiace znaky prúžkov zbavené vstupných riadkov a riadok obsahujúci oddeľovač . To dovoľuje, aby tu dokumenty v rámci shell skriptov boli odsadené prirodzeným spôsobom.

Tu sú reťazce

Variant tu dokumentuje formát:

<<< slovo

Slovo sa rozšíri a dodá príkaz na jeho štandardný vstup.

Duplicitné deskriptory súborov

Operátor presmerovania

[ n ] <& slovo

sa používa na duplikovanie deskriptorov vstupného súboru. Ak sa slovo rozširuje na jednu alebo viac číslic, deskriptor súboru označený n je vytvorený ako kópia tohto deskriptora súboru. Ak číslice v slove neuvádzajú popisovač súborov otvorený pre vstup, vyskytne sa chyba presmerovania. Ak sa slovo vyhodnotí na - , deskriptor súboru n je zatvorený. Ak nie je zadané n , použije sa štandardný vstup (deskriptor súboru 0).

Prevádzkovateľ

[ n ] > & slovo

sa používa podobne ako duplikáty deskriptorov výstupných súborov. Ak nie je zadané n , použije sa štandardný výstup (deskriptor súboru 1). Ak číslice v slove neurčujú deskriptor súborov otvorený pre výstup, vyskytne sa chyba presmerovania. Ako zvláštny prípad, ak je n vynechané a slovo sa nerozširuje na jednu alebo viac číslic, štandardný výstup a štandardná chyba sa presmerujú tak, ako bolo opísané vyššie.

Presúvanie deskriptorov súborov

Operátor presmerovania

[ n ] <& číslica -

presunie číslicu deskriptora súboru na deskriptor súboru n alebo štandardný vstup (deskriptor súboru 0), ak n nie je zadané. číslica je uzavretá po duplikácii na n .

Podobne aj operátor presmerovania

[ n ] > a číslica -

presunie číslicu deskriptora súboru na deskriptor súboru n alebo štandardný výstup (deskriptor súboru 1), ak n nie je zadané.

Otváranie deskriptorov súborov na čítanie a písanie

Operátor presmerovania

[ n ] <> slovo

spôsobí, že súbor, ktorého názov je rozšírenie slova , sa otvorí pre čítanie aj zápis na deskriptoroch súborov n , alebo pre popisovač súborov 0, ak n nie je zadané. Ak súbor neexistuje, vytvorí sa.

Aliases

Aliasy povolia, aby bol reťazec nahradený slovom, keď sa používa ako prvé slovo jednoduchého príkazu. Shell udržiava zoznam aliasov, ktoré môžu byť nastavené a deaktivované pomocou aliasu a unalias vstavaných príkazov (viď SHELL BUILTIN COMMANDS nižšie). Prvé slovo každého príkazu, ak je nekótované, sa skontroluje, či má alias. Ak áno, toto slovo sa nahradí textom aliasu. Názov aliasu a náhradný text môžu obsahovať ľubovoľný platný vstup pre shell, vrátane metaznačiek uvedených vyššie, s výnimkou toho, že názov aliasu nemusí obsahovať = . Prvé slovo náhradného textu sa testuje na alias, ale slovo, ktoré je identické s rozšíreným aliasom, sa druhýkrát nerozšíri. To znamená, že napríklad môže byť alias lsls -F , a bash sa nesnaží rekurzívne rozširovať náhradný text. Ak je posledný znak hodnoty aliasu prázdny , potom je začiarknuté aj ďalšie príkazové slovo nasledujúceho po aliasu pre rozšírenie aliasu.

Aliasy sú vytvorené a uvedené pomocou príkazu alias a odstránené pomocou príkazu unalias .

V náhradnom texte neexistuje mechanizmus na použitie argumentov. Ak sú potrebné argumenty, musí sa použiť funkcia shell (pozri FUNKCIE nižšie).

Aliasy nie sú rozšírené, keď shell nie je interaktívny, pokiaľ nie je nastavená možnosť shell_expandy shell pomocou štepu (viď popis špepu pod SHELL BUILTIN COMMANDS nižšie).

Pravidlá týkajúce sa definície a používania aliasov sú trochu mätúce. Bash vždy číta aspoň jeden kompletný riadok vstupu pred vykonaním ktoréhokoľvek z príkazov na tomto riadku. Alias ​​sú rozširované pri čítaní príkazu, nie pri jeho vykonaní. Preto sa definícia aliasu, ktorá sa objaví na rovnakom riadku ako iný príkaz, nenadobudne účinok, kým sa neprečítá ďalší riadok vstupu. Príkazy, ktoré nasledujú po definícii aliasu na tomto riadku, nie sú ovplyvnené novým aliasom. Toto správanie je tiež problém pri vykonávaní funkcií. Alias ​​sú rozšírené pri čítaní definície funkcie, nie pri vykonávaní funkcie, pretože definícia funkcie je sama zloženým príkazom. V dôsledku toho aliasy definované v funkcii nie sú k dispozícii až po vykonaní tejto funkcie. Aby ste boli v bezpečí, vždy zadajte definície aliasov na samostatnom riadku a nepoužívajte alias v zložených príkazoch.

Pre takmer každý účel sú aliasy nahradené funkciami škrupiny.

FUNKCIE

Funkcia shellu, definovaná ako je opísaná vyššie v SHELL GRAMMAR , ukladá sériu príkazov pre neskoršie vykonanie. Keď sa názov funkcie shell používa ako jednoduché meno príkazu, vykoná sa zoznam príkazov priradených tomuto názvu funkcie. Funkcie sa vykonávajú v kontexte aktuálneho shell; žiadny nový proces nie je vytvorený na ich interpretáciu (na rozdiel od toho, že sa vykoná shell skript). Keď sa vykoná funkcia, argumenty pre funkciu sa stanú polohovými parametrami počas jej vykonávania. Špeciálny parameter # je aktualizovaný tak, aby odrážal zmenu. Polohový parameter 0 zostáva nezmenený. Premenná FUNCNAME je nastavená na názov funkcie pri vykonávaní funkcie. Všetky ostatné aspekty prostredia pre vytváranie prostredia sú rovnaké medzi funkciou a jej volajúcim s výnimkou, že zachytávač DEBUG (pozri opis vloženej pasce pod príkazmi SHELL BUILTIN COMMANDS nižšie) nie je zdedený, pokiaľ funkciu nebolo zadané atribút stopy pozri popis deklarovaného vstavaného nižšie).

Premenné lokálne na funkciu možno deklarovať pomocou lokálneho vstavaného príkazu. Obyčajne sa premenné a ich hodnoty zdieľajú medzi funkciou a jej volajúcim.

Ak sa vykonaná vracaná príkazová vada vykoná vo funkcii, funkcia sa dokončí a spustenie pokračuje ďalším príkazom po volaní funkcie. Po dokončení funkcie sa hodnoty polohových parametrov a špeciálny parameter # obnovia na hodnoty, ktoré mali pred vykonaním funkcie.

Názvy funkcií a definície môžu byť uvedené s voľbou -f na deklarovanie alebo zadanie vstavaných príkazov. Voľba -F pre deklaráciu alebo typovanie uvádza len názvy funkcií. Funkcie môžu byť exportované tak, aby sa subshelly automaticky definovali s voľbou -f na export vstavaný.

Funkcie môžu byť rekurzívne. Nie je obmedzený počet rekurzívnych hovorov.

ARITMETICKÉ HODNOTENIE

Obálka umožňuje vyhodnotiť aritmetické výrazy za určitých okolností (pozri príkaz vstavaný príkaz a Aritmetické rozšírenie ). Vyhodnotenie sa vykonáva v celých číslach s pevnou šírkou bez kontroly pretečenia, hoci delenie 0 je zachytené a označené ako chyba. Operátori a ich priorita a asociativita sú rovnaké ako v jazyku C. Nasledujúci zoznam prevádzkovateľov je zoskupený do úrovní prevádzkovateľov s rovnakou prioritou. Úrovne sú uvedené v poradí klesajúcej priority.

id ++ id -

variabilné dodatočné zvýšenie a zníženie hodnoty

ID id - id

variabilný predbežný prírastok a predbežné zníženie

- +

unary mínus a plus

! ~

logická a bitová negácia

**

umocňovanie

* /%

násobenie, rozdelenie, zvyšok

+ -

doplnenie, odčítanie

<< >>

ľavý a pravý bitový posun

<=> = <>

porovnanie

==! =

rovnosti a nerovnosti

&

bitový AND

^

bitová exkluzívna OR

|

bitový OR

&&

logické AND

||

logická OR

expr ? expr : expr

podmienené hodnotenie

= * = / =% = + = - = << = >> = & = ^ = | =

prideľovanie

expr1 , expr2

čiarka

Shell premenné sú povolené ako operandy; rozšírenie parametrov sa vykoná pred vyhodnotením výrazu. V rámci výrazu môžu byť premenné shell tiež označené menom bez použitia syntaxe rozšírenia parametrov. Hodnota premennej sa hodnotí ako aritmetický výraz, keď sa odkazuje. Premenná shell nemusí mať zapnutý celočíselný atribút, ktorý sa má použiť vo výraze.

Konštanty s vedúcim 0 sú interpretované ako osmičkové čísla. Vedúci 0x alebo 0X označuje hexadecimálne. V opačnom prípade čísla majú formu [ base # ] n, kde báza je desiatkové číslo medzi 2 a 64 reprezentujúce aritmetický základ a n je číslo v tejto základni. Ak je základňa # vynechaná, použije sa základňa 10. Číslice väčšie ako 9 predstavujú malé písmená, veľké písmená, @ a _ v tomto poradí. Ak je základňa menšia alebo rovná 36, malé a veľké písmená sa môžu používať vzájomne zameniteľne, aby reprezentovali čísla medzi 10 a 35.

Operátori sú hodnotení v poradí podľa priority. Subexpresy v zátvorkách sú vyhodnotené ako prvé a môžu mať prednosť pred pravidlami vyššie.

PODMIENKOVÉ VYJADRENIA

Podmienené výrazy sa používajú príkazom [[ zložený príkaz a test a [ vstavané príkazy na testovanie atribútov súborov a vykonávanie porovnávacích a aritmetických porovnaní. Expresie sa tvoria z nasledujúcich unárnych alebo binárnych primárnych prvkov. Ak je ľubovoľný argument súboru pre jednu z primárnych jednotiek formulára / dev / fd / n , potom je začiarknutý popisovač súboru n . Ak je argument súboru pre jednu z primárnych jednotiek / dev / stdin , / dev / stdout alebo / dev / stderr , deskriptor súboru 0, 1 alebo 2 je zaškrtnutý.

- súbor

Je pravda, či existuje súbor .

-b súboru

Pravda, ak existuje súbor a je špeciálny súbor bloku.

-c súboru

Je pravda, či existuje súbor a je špeciálny súbor znakov.

-d súboru

Je to pravda, ak existuje súbor a je adresár.

-e súbor

Je pravda, či existuje súbor .

-f súboru

Je pravda, ak existuje súbor a je to bežný súbor.

-g súboru

Skutočný, ak súbor existuje a je nastavený-group-id.

-h súboru

Je pravda, či existuje súbor a je symbolickým odkazom.

-k súbor

Je pravda, či existuje súbor a nastaví sa jeho "lepkavý" bit.

-p súbor

Je pravda, ak existuje súbor a je pomenovaná trubka (FIFO).

-r súbor

Je pravda, či súbor existuje a je čitateľný.

-s súboru

Je pravda, či súbor existuje a má veľkosť väčšiu ako nula.

-t fd

Je pravda, ak je deskriptor súboru fd otvorený a označuje terminál.

-u súboru

Je pravda, či existuje súbor a nastaví sa jeho bit nastavenia.

-w súbor

Je pravda, či súbor existuje a je zapisovateľný.

-x súbor

Je pravda, či súbor existuje a je spustiteľný.

-O súbor

Skutočný, ak súbor existuje a je vlastnený efektívnym ID užívateľa.

-G súboru

Je pravda, či súbor existuje a je vlastnený efektívnym identifikátorom skupiny.

-L súboru

Je pravda, či existuje súbor a je symbolickým odkazom.

-S súboru

Skutočné, ak existuje súbor a je socket.

-N súbor

Je pravda, či súbor existuje a bol upravený od posledného prečítania.

súbor1 - nt súbor2

Je to pravda, ak je súbor1 novší (podľa dátumu modifikácie) ako súbor2 , alebo ak existuje súbor1 a súbor2 nie.

file1 - ot súbor2

Pravda, ak je súbor1 starší ako súbor2 , alebo ak existuje súbor2 a súbor1 neplatí.

file1 -ef súbor2

Skutočné, ak súbor1 a súbor2 odkazujú na rovnaké číslo zariadenia a inode.

-o optname

Je to pravda, ak je povolené optname príkazu shell. Pozrite si zoznam možností pod popisom voľby -o na inštalovanú sadu uvedenú nižšie.

-z reťazec

Pravda, ak je dĺžka reťazca nula.

-n reťazec

povrázok

Je pravda, ak je dĺžka reťazca nenulová.

string1 == string2

Pravda, ak sú reťazce rovnaké. = môže byť použitý namiesto == pre prísne dodržanie POSIXu.

string1 ! = string2

Pravda, ak reťazce nie sú rovnaké.

string1 < string2

Je pravda, ak string1 zoradí pred string2 lexikograficky v aktuálnom locale.

string1 > string2

Je pravda, ak reťazec1 zoradí reťazec2 lexikograficky v aktuálnom jazyku.

arg1 OP arg2

OP je jedným z -eq , -ne , -lt , -le , -gt alebo -ge . Títo aritmetické binárne operátory vrátia hodnotu true, ak arg1 je rovné, nie je rovné, menej ako, menšiemu alebo rovnému, väčšiemu alebo väčšiemu alebo rovnému arg2 . Arg1 a arg2 môžu byť pozitívne alebo záporné celé čísla.

Zjednodušené rozširovanie príkazov

Keď sa vykoná jednoduchý príkaz, shell vykoná nasledujúce rozšírenia, priradenia a presmerovania zľava doprava.

1.

Slová, ktoré analyzátor označil ako priradenia premenných (pred názvom príkazu) a presmerovania sa uložia pre neskoršie spracovanie.

2.

Slová, ktoré nie sú priradené premenné alebo presmerovania, sú rozšírené. Ak zostanú akékoľvek slová po rozšírení, prvé slovo sa považuje za názov príkazu a zvyšné slová sú argumenty.

3.

Presmerovania sa vykonávajú tak, ako je popísané vyššie v časti REDIRECTION .

4.

Text po atribúte = v každej priradenej premennej prechádza pred priradením k premennej expanzii tilde, rozšíreniu parametrov, substitúcii príkazov, aritmetickej expanzii a odstráneniu citácií.

Ak sa nezíska žiadny názov príkazu, priradenie premennej ovplyvní súčasné prostredie prostredia. V opačnom prípade sa premenné pridajú do prostredia vykonaného príkazu a neovplyvňujú súčasné prostredie prostredia. Ak sa niektoré z úloh pokúsi priradiť hodnotu čítacej premennej, objaví sa chyba a príkaz sa ukončí s nenulovým stavom.

Ak sa nezobrazí žiadny názov príkazu, vykonajú sa presmerovania, ale neovplyvňujú súčasné prostredie prostredia. Chyba presmerovania spôsobí ukončenie príkazu s nenulovým stavom.

Ak zostane príkaz zostávajúci po rozšírení, vykonanie pokračuje, ako je popísané nižšie. V opačnom prípade príkaz ukončí. Ak jedno z rozšírení obsahovalo výmenu príkazu, výstupný stav príkazu je stav výstupu poslednej vykonanej výmeny príkazu. Ak neexistujú žiadne náhrady príkazov, príkaz sa ukončí so stavom nula.

VYKONÁVANIE PRÍKAZU

Keď je príkaz rozdelený na slová, ak vedie k jednoduchému príkazu a voliteľnému zoznamu argumentov, vykonajú sa nasledujúce kroky.

Ak názov príkazu neobsahuje žiadne lomky, shell sa pokúsi nájsť ho. Ak existuje funkcia shell týmto názvom, táto funkcia sa vyvolá ako je popísané vyššie v časti FUNKCIE . Ak sa názov nezhoduje s funkciou, shell ju vyhľadá v zozname vstavaných shellov. Ak sa nájde zhoda, vyvolá sa táto vstavaná.

Ak názov nie je funkcia shellu ani vstavaná a neobsahuje žiadne lomky, bash vyhľadá každý prvok PATH pre adresár obsahujúci spustiteľný súbor s týmto názvom. Bash používa tabuľku hash na zapamätanie si úplných názvov súborov spustiteľných súborov (pozrite sa pod hlavičkou SHELL BUILTIN COMMANDS nižšie). Úplné vyhľadávanie adresárov v PATH sa vykonáva iba vtedy, ak príkaz nie je nájdený v tabuľke hash. Ak je vyhľadávanie neúspešné, shell vytlačí chybovú správu a vráti stav ukončenia 127.

Ak je vyhľadávanie úspešné alebo ak názov príkazu obsahuje jednu alebo viac lomítok, shell vykoná pomenovaný program v samostatnom prostredí vykonávania. Argument 0 je nastavený na daný názov a zostávajúce argumenty príkazu sú nastavené na dané argumenty, ak existujú.

Ak toto spustenie zlyhá, pretože súbor nie je v spustiteľnom formáte a súbor nie je adresár, predpokladá sa, že je to shell shell , súbor obsahujúci príkazy pre shell. Podsvete sa vytvorí na jej vykonanie. Tento subshell sa znovu inicializuje tak, že efekt je taký, ako keby bol na zvládnutie skriptu vyvolaný nový shell, s výnimkou toho, že dieťa si zachovalo umiestnenie príkazov, ktoré pamätajú rodičia (pozrite si hash pod SHELL BUILTIN COMMANDS ).

Ak je program súborom začínajúci #! , zvyšok prvého riadka špecifikuje tlmočníka programu. Obal vykoná zadaný tlmočník na operačných systémoch, ktoré sami nemajú tento spustiteľný formát. Argumenty pre tlmočníka pozostávajú z jediného voliteľného argumentu, ktorý nasleduje po názve tlmočníka na prvom riadku programu, za ktorým nasleduje názov programu, za ním nasledujú príkazové argumenty, ak existujú.

PRÍKAZ ROZVRHOVÉHO PROSTREDIA

Obal má prostredie výkonu , ktoré pozostáva z nasledujúcich:

*

otvorené súbory zdedené shellom pri vyvolaní, modifikované presmerovaním dodávaným do implementovaného súboru

*

aktuálny pracovný adresár nastavený pomocou cd , pushd alebo popd alebo zdedený shellom pri vyvolaní

*

maska ​​režimu vytvárania súborov nastavená umaskom alebo zdedená z nadradeného objektu

*

aktuálne pasce nastavené pascou

*

shell parametre, ktoré sú nastavené priradením premenných alebo so sadou alebo dedením z rodičov shellu v prostredí

*

shell funkcie definované počas vykonávania alebo zdedené z rodičov shellu v prostredí

*

možnosti povolené pri vyvolaní (štandardne alebo s argumentmi príkazového riadku) alebo nastavením

*

možnosti povolené šokom

*

aliasy schránky definované s aliasom

*

rôzne ID procesov, vrátane tých, ktoré sa týkajú pozadia na pozadí, hodnoty $$ a hodnoty $ PPID

Ak má byť vykonaný jednoduchý iný príkaz než vstavaná alebo shell funkcia, vyvolá sa v samostatnom prostredí vykonávania, ktoré pozostáva z nasledujúceho. Ak nie je uvedené inak, hodnoty sa zdedia z shellu.

*

otvorené súbory shellu a všetky zmeny a doplnenia špecifikované presmerovaním do príkazu

*

aktuálny pracovný adresár

*

maska ​​režimu vytvárania súborov

*

shell premenné označené na export spolu s premennými exportovanými pre príkaz, ktoré boli odovzdané v prostredí

*

chyby zachytené škrupinou sú obnovené na hodnoty zdedené od rodiča shellu a pasce ignorované shellom sú ignorované

Príkaz vyvolaný v tomto samostatnom prostredí nemôže ovplyvniť prostredie vykonávania shella.

Príkazy nahradzovania a asynchrónne príkazy sa vyvolávajú v prostredí subshell, ktoré je duplikátom prostredia prostredia, s výnimkou toho, že pasce ulovené shellom sa vynulujú na hodnoty, ktoré združenie zdedilo od svojho rodiča pri vyvolaní. Builtin príkazy, ktoré sú vyvolané ako súčasť potrubia sa tiež vykonáva v prostredí subshell. Zmeny vykonané v prostredí subshell nemôžu ovplyvniť prostredie vykonávania shella.

Ak nasleduje príkaz a & a kontrola úlohy nie je aktívna, štandardným štandardným vstupom pre príkaz je prázdny súbor / dev / null . V opačnom prípade vyvolaný príkaz zdedí deskriptory súborov volajúceho shellu upravené presmerovaním.

POZRI TIEŽ

Bash Referenčný manuál , Brian Fox a Chet Ramey

Knižnica Gnu Readline , Brian Fox a Chet Ramey

Knižnica histórie Gnu , Brian Fox a Chet Ramey

Prenosné rozhranie operačného systému (POSIX) Časť 2: Shell and Utilities , IEEE

shsh (1), ksh (1), csh (1)

emacs (1), vi (1)

readline (3)