bash - GNU Bourne-Again SHell
bash [options] [command_string | file]
A Bash szerzői joga (C) 1989-2020, a Free Software Foundation, Inc. tulajdona.
A Bash egy sh-kompatibilis parancsnyelvi értelmező, amely a szabványos bemenetről vagy egy fájlból beolvasott parancsokat hajt végre. A Bash hasznos funkciókat is tartalmaz a Korn és C shellekből (ksh és csh ).
A Bash az IEEE POSIX specifikáció (IEEE 1003.1 szabvány) Shell és Utilities részének megfelelő megvalósítása. A Bash alapértelmezés szerint POSIX-kompatibilis.
A beépített set parancs leírásában dokumentált összes egykarakteres shell-beállítás, beleértve a -o-t is, opcióként használható a shell meghívásakor. Ezenkívül a bash a következő beállításokat értelmezi, amikor meghívásra kerül:
Ha a -c opció jelen van, akkor a parancsok az első nem opciós command_string argumentumból kerülnek kiolvasásra. Ha argumentumok vannak a command_string után, akkor az első argumentum a $0 értékhez lesz hozzárendelve, a fennmaradó argumentumok pedig a pozícióparaméterekhez. A $0-hoz való hozzárendelés beállítja a parancsértelmező nevét, amelyet a rendszer figyelmeztető és hibaüzenetekben használ.
Ha a -i opció megvan, a shell interaktív.
Tegye úgy, hogy a bash úgy működjön, mintha bejelentkezési shellként hívták volna meg (lásd alább az INVOCATION részt).
Ha a -r opció jelen van, a shell korlátozottá válik (lásd alább a KORROLT SHELL részt).
Ha a -s opció jelen van, vagy ha az opció feldolgozása után nem marad argumentum, akkor a parancsok a szabványos bemenetről kerülnek kiolvasásra. Ez az opció lehetővé teszi a helyzeti paraméterek beállítását interaktív shell meghívásakor vagy a bemenet csövön keresztül történő olvasásakor.
A normál kimeneten megjelenik az összes dupla idézőjeles karakterlánc listája, amelyet $ előz meg. Ezek azok a karakterláncok, amelyekre nyelvi fordítás vonatkozik, ha az aktuális területi beállítás nem C vagy POSIX. Ez magában foglalja a -n opciót; parancsok nem lesznek végrehajtva.
A shopt_option a shopt beépített modul által elfogadott shell-beállítások egyike (lásd alább a SHELL BEÉPÍTETT PARANCSOKAT). Ha jelen van a shopt_option, a -O beállítja az opció értékét; A +O kikapcsolja. Ha a shopt_option nincs megadva, a shopt által elfogadott shell-beállítások nevei és értékei a szabványos kimenetre kerülnek kinyomtatásra. Ha a hívási beállítás +O, a kimenet olyan formátumban jelenik meg, amely újra felhasználható bemenetként.
A -- jelzi az opciók végét, és letiltja a további opciófeldolgozást. A -- utáni argumentumokat a rendszer fájlnévként és argumentumként kezeli. A - argumentum egyenértékű a -- paraméterrel.
A Bash számos többkarakteres beállítást is értelmez. Ezeknek a beállításoknak a parancssorban az egykarakteres opciók felismerése előtt kell megjelenniük.
Gondoskodjon arról, hogy a hibakereső profil a shell indulása előtt lefusson. Bekapcsolja a kiterjesztett hibakeresési módot (lásd alább az extdebug opció leírását a beépített shopban).
Egyenértékű a -D-vel, de a kimenet a GNU gettext po (hordozható objektum) fájlformátuma.
Egyenértékű a -D-vel.
Jelenítsen meg egy használati üzenetet a szabványos kimeneten, és sikeresen lépjen ki.
A parancsokat a fájlból hajtsa végre a normál ~/.bashrc személyes inicializálási fájl helyett, ha a shell interaktív (lásd az alábbi INVOCATION részt).
Egyenértékű: -l.
Ne használja a GNU readline könyvtárát parancssorok olvasására, amikor a shell interaktív.
Ne olvassa el sem a rendszerszintű indítófájlt /etc/profile , sem a személyes inicializálási fájlokat ~/.bash_profile, ~/.bash_login > vagy ~/.profile. Alapértelmezés szerint a bash beolvassa ezeket a fájlokat, amikor bejelentkezési shellként hívják meg (lásd alább az INVOCATION részt).
Ne olvassa el és ne hajtsa végre a ~/.bashrc személyes inicializálási fájlt, ha a shell interaktív. Ez a beállítás alapértelmezés szerint be van kapcsolva, ha a rendszerhéj sh néven van meghívva.
Módosítsa a bash viselkedését, ha az alapértelmezett művelet eltér a POSIX szabványtól, hogy megfeleljen a szabványnak (posix mód). Az alábbi LÁSD MÉG részben egy olyan dokumentumra való hivatkozást talál, amely részletezi, hogy a posix mód hogyan befolyásolja a bash viselkedését.
A shell korlátozottá válik (lásd alább a RESTRICTED SHELL részt).
Egyenértékű: -v.
Jelenítse meg a verzióinformációkat a bash ezen példányához a normál kimeneten, és sikeresen lépjen ki.
Ha az opciók feldolgozása után argumentumok maradnak, és sem a -c, sem a -s opció nincs megadva, akkor az első argumentum egy shell-parancsokat tartalmazó fájl neve. . Ha a bash-t ilyen módon hívja meg, akkor a $0 a fájl nevére lesz beállítva, a pozícióparaméterek pedig a fennmaradó argumentumokra. A Bash beolvassa és végrehajtja a parancsokat ebből a fájlból, majd kilép. A Bash kilépési állapota a szkriptben utoljára végrehajtott parancs kilépési állapota. Ha nem hajtanak végre parancsokat, a kilépési állapot 0. Először megpróbálja megnyitni a fájlt az aktuális könyvtárban, és ha nem található fájl, akkor a shell megkeresi a PATH könyvtárban található A script.
A bejelentkezési shell olyan, amelynek a nulla argumentumának első karaktere egy -, vagy amely a --login opcióval kezdődik.
Az interaktív shell olyan, amely nem opciós argumentumok nélkül indul el (kivéve, ha -s van megadva) és a -c opció nélkül, amelynek szabványos bemenete és hibája mindkettő terminálokhoz csatlakozik (az isatty(3) szerint), vagy az egyik a -i opcióval indul.
A PS1 be van állítva, és a $- tartalmazza az i elemet, ha a bash interaktív, lehetővé téve egy shell szkript vagy indítófájl számára tesztelje ezt az állapotot.
A következő bekezdések leírják, hogyan hajtja végre a bash indítófájljait. Ha valamelyik fájl létezik, de nem olvasható, a bash hibát jelez. A tildák fájlnevekkel bővülnek, ahogy az alább, a BŐVÍTÉS szakasz Tilde kiterjesztése szakaszában le van írva.
Amikor a bash interaktív bejelentkezési parancsértelmezőként vagy nem interaktív shellként, a --login opcióval kerül meghívásra, először a fájlból olvassa be és hajtsa végre a parancsokat. /etc/profilet, ha ez a fájl létezik. A fájl elolvasása után megkeresi a ~/.bash_profile, ~/.bash_login és ~/.profile fájlokat, ebben a sorrendben, és beolvassa és végrehajtja az első létező és olvasható parancsokat. A --noprofile beállítás a shell indításakor használható, hogy megakadályozza ezt a viselkedést.
Amikor egy interaktív bejelentkezési shell kilép, vagy egy nem interaktív bejelentkezési shell végrehajtja a beépített exit parancsot, a bash beolvassa és végrehajtja a parancsokat a ~/.bash_logout fájlból. , ha létezik.
Amikor egy interaktív parancsértelmező elindul, amely nem bejelentkezési parancsértelmező, a bash beolvassa és végrehajtja a parancsokat a ~/.bashrc fájlból, ha ez a fájl létezik. Ez a --norc kapcsolóval gátolható. Az --rcfile file opció arra kényszeríti a bash-t, hogy a ~ helyett a file-ből olvasson és hajtson végre parancsokat. /.bashrc.
Amikor a bash nem interaktív módon indul el, akkor például egy shell-szkript futtatásához megkeresi a BASH_ENV változót a környezetben, kibővíti az értékét, ha megjelenik, és a kiterjesztett értéket használja egy fájl neveként az olvasáshoz és a végrehajtáshoz. A Bash úgy viselkedik, mintha a következő parancsot hajtották volna végre:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
de a PATH változó értéke nem használható a fájlnév keresésére.
Ha a bash-t sh néven hívják meg, akkor megpróbálja a lehető legpontosabban utánozni az sh történeti verzióinak indítási viselkedését, miközben megfelel a a POSIX szabványt is. Amikor interaktív bejelentkezési parancsértelmezőként vagy nem interaktív shellként hívják meg a --login opcióval, először megpróbálja beolvasni és végrehajtani a parancsokat az /etc/profile és a < fájlokból.~/.profilet, ebben a sorrendben. A --noprofile opció használható ennek a viselkedésnek a megakadályozására. Ha interaktív parancsértelmezőként hívják meg sh névvel, a bash megkeresi az ENV változót, kibővíti az értékét, ha definiálva van, és a kiterjesztett érték az olvasandó és végrehajtandó fájl neveként. Mivel az sh néven meghívott shell nem kísérel meg parancsokat olvasni és végrehajtani más indítófájlokból, az --rcfile opciónak nincs hatása. Az sh néven meghívott nem interaktív shell nem kísérel meg semmilyen más indítófájlt beolvasni. Ha shként hívják meg, a bash az indítófájlok beolvasása után posix módba lép.
Ha a bash posix módban van elindítva, mint a --posix parancssori opció, akkor az indítási fájlok POSIX szabványát követi. Ebben a módban az interaktív héjak kibontják az ENV változót, a parancsok pedig abból a fájlból kerülnek kiolvasásra és végrehajtásra, amelynek neve a kiterjesztett érték. Más indítófájlok nem kerülnek beolvasásra.
A Bash megpróbálja meghatározni, hogy mikor fut a szabványos bemenete hálózati kapcsolathoz csatlakoztatva, például amikor a távoli shell démon, általában az rshd vagy a biztonságos shell démon hajtja végre. sshd. Ha a bash megállapítja, hogy ilyen módon fut, akkor beolvassa és végrehajtja a parancsokat a ~/.bashrc fájlból, ha ez a fájl létezik és olvasható. Ezt nem teszi meg, ha shként hívják meg. A --norc opció használható ennek a viselkedésnek a megakadályozására, az --rcfile opció pedig egy másik fájl beolvasására kényszeríthető, de az rshd sem és az sshd sem általában meghívja a parancsértelmezőt ezekkel az opciókkal, vagy lehetővé teszi azok megadását.
Ha a shell úgy indul, hogy a tényleges felhasználói (csoport) azonosító nem egyenlő a valódi felhasználói (csoport) azonosítóval, és a -p opció nincs megadva, akkor a rendszer nem olvassa be az indítófájlokat, és a shell-függvények sem. a környezetből örökölt SHELLOPTS, BASHOPTS, CDPATH és GLOBIGNORE változók, ha megjelennek a környezetben , figyelmen kívül hagyják, és a tényleges felhasználói azonosító a valódi felhasználói azonosítóra lesz állítva. Ha a -p opció megadva van az híváskor, akkor az indítási viselkedés ugyanaz, de a tényleges felhasználói azonosító nem áll vissza.
A dokumentum további részében a következő meghatározásokat használjuk.
Szóköz vagy tabulátor.
A shell által egyetlen egységnek tekintett karaktersorozat. Más néven token.
Egy szó, amely csak alfanumerikus karakterekből és aláhúzásjelekből áll, és alfabetikus karakterrel vagy aláhúzásjellel kezdődik. Más néven azonosító.
Egy karakter, amely ha nem idézi, elválasztja a szavakat. Az alábbiak egyike:
| & ; ( ) < > space tab newline
Egy token, amely vezérlő funkciót lát el. Ez az alábbi szimbólumok egyike:
|| & && ; ;; ;& ;;& ( ) | |& <newline>
A Fenntartott szavak olyan szavak, amelyeknek különleges jelentése van a héj számára. A következő szavakat a rendszer fenntartottként ismeri fel, ha nem idézi őket, és vagy a parancs első szava (lásd alább a SHELL NYELVTAN), az eset harmadik szava vagy a kiválasztás< parancs (csak az in érvényes), vagy a for parancs harmadik szava (csak in és do érvényesek):
! case coproc do done elif else esac fi for function if in select then until while { } time [[ ]]Az egyszerű parancs opcionális változó-hozzárendelések sorozata, amelyet üres-elválasztott szavak és átirányítások követnek, és egy vezérlő operátor fejeződik be. Az első szó a végrehajtandó parancsot határozza meg, és nulla argumentumként kerül átadásra. A fennmaradó szavak argumentumként kerülnek átadásra a meghívott parancsnak.
Egy egyszerű parancs visszatérési értéke a kilépési állapota, vagy 128+n , ha a parancsot az n jel fejezi be.
A folyamat egy vagy több parancsból álló sorozat, amelyet a | vagy |& vezérlőoperátorok egyike választ el egymástól. A csővezeték formátuma a következő:
[time [-p]] [ ! ] command [ [|⎪|&] command2 ... ]
A command szabványos kimenete egy csövön keresztül csatlakozik a command2 szabványos bemenetéhez. Ez a kapcsolat a parancs által meghatározott átirányítások előtt jön létre (lásd alább az REDIRECTION részt). |& használata esetén a command szabványos hibája a szabványos kimeneten kívül a command2 szabványos bemenetéhez kapcsolódik a cső; ez a 2>&1 | rövidítése. A standard hiba implicit átirányítása a szabványos kimenetre a parancs által meghatározott átirányítások után történik.
A folyamat visszatérési állapota az utolsó parancs kilépési állapota, kivéve, ha a pipefail opció engedélyezve van. Ha a pipefail engedélyezve van, a folyamat visszatérési állapota az utolsó (jobb szélső) parancs értéke, amely nem nulla állapottal kilép, vagy nulla, ha minden parancs sikeresen kilép. Ha a fenntartott ! szó megelőz egy folyamatot, akkor annak a folyamatnak a kilépési állapota a kilépési állapot logikai tagadása a fent leírtak szerint. A shell megvárja, amíg a folyamatban lévő összes parancs leáll, mielőtt értéket adna vissza.
Ha az idő lefoglalt szó megelőz egy folyamatot, akkor az eltelt, valamint a végrehajtásához felhasznált felhasználói és rendszeridőt a rendszer jelenti a folyamat végén. A -p opció megváltoztatja a kimeneti formátumot a POSIX által megadottra. Amikor a shell posix módban van, nem ismeri fel az time-t fenntartott szóként, ha a következő token `-' karakterrel kezdődik. A TIMEFORMAT változó beállítható egy formátumkarakterláncra, amely meghatározza az időzítési információk megjelenítési módját; lásd az TIMEFORMAT leírását a Shell-változók alatt.
Ha a shell posix módban van, az time után egy újsor következhet. Ebben az esetben a shell megjeleníti a shell és gyermekei által felhasznált teljes felhasználói és rendszeridőt. A TIMEFORMAT változó használható az időinformáció formátumának megadására.
A folyamatban lévő minden egyes parancs külön folyamatként (azaz egy alhéjban) kerül végrehajtásra. Az alhéj-környezet leírását a PARANCSVÉGREHAJTÁSI KÖRNYEZET részben találja. Ha a lastpipe opció engedélyezve van a beépített shopt használatával (lásd alább a shopt leírását), akkor a folyamat utolsó eleme futtatható a shell folyamat.
A lista egy vagy több folyamatból álló sorozat, amelyet a ;, &, &&, vagy ||, és opcionálisan a ;, & vagy <newline> egyike zárja le.
Ezen listaoperátorok közül a && és || egyenlő elsőbbséggel rendelkezik, ezt követi a ; és &, amelyek egyenlőek elsőbbség.
Egy vagy több újsorból álló sorozat jelenhet meg a listában pontosvessző helyett a parancsok elválasztására.
Ha egy parancsot a & vezérlőoperátor leállít, akkor a shell a parancsot a háttérben egy részhéjban hajtja végre. A shell nem várja meg a parancs befejezését, és a visszatérési állapot 0. Ezeket aszinkron parancsoknak nevezzük. A ; jellel elválasztott parancsok végrehajtása egymás után történik; a shell az egyes parancsok sorra történő befejezését várja. A visszatérési állapot az utoljára végrehajtott parancs kilépési állapota.
Az ÉS és VAGY listák egy vagy több folyamatsorozat sorozatai, amelyeket az && és || vezérlőoperátorok választanak el egymástól. Az ÉS és VAGY listák bal oldali asszociativitással kerülnek végrehajtásra. Az ÉS listának van egy formája
command1 && command2
A command2 akkor és csak akkor fut le, ha a command1 nulla kilépési állapotot ad vissza (siker).
A VAGY listának van egy formája
command1 || command2
A command2 akkor és csak akkor kerül végrehajtásra, ha a command1 nem nulla kilépési állapotot ad vissza. Az ÉS és VAGY listák visszatérési állapota a listában utoljára végrehajtott parancs kilépési állapota.
Az összetett parancs a következők egyike. A legtöbb esetben a parancsleírásban szereplő listát egy vagy több újsor választja el a parancs többi részétől, és egy újsor követheti pontosvessző helyett.
A list egy alhéj-környezetben fut (lásd alább a PARANCSVÉGREHAJTÁSI KÖRNYEZET részt). A parancsértelmező környezetét befolyásoló változó-hozzárendelések és beépített parancsok a parancs befejezése után nem maradnak érvényben. A visszatérési állapot a lista kilépési állapota
A list egyszerűen végrehajtódik az aktuális shell-környezetben. A listát újsorral vagy pontosvesszővel kell zárni. Ezt csoportos parancsnak nevezik. A visszatérési állapot a lista kilépési állapota. Vegye figyelembe, hogy a ( és ) metakarakterekkel ellentétben a { és } foglalt szavak és ott kell előfordulnia, ahol engedélyezett a fenntartott szó felismerése. Mivel nem okoznak szótörést, szóközzel vagy más shell-metakarakterrel kell elválasztani őket a listától.
A kifejezés kiértékelése az alábbi, ARITMETIKAI ÉRTÉKELÉS részben leírt szabályok szerint történik. Ha a kifejezés értéke nem nulla, a visszatérési állapot 0; ellenkező esetben a visszatérési állapot 1. Ez pontosan megegyezik a let "expression" kifejezéssel.
A kifejezés feltételes kifejezés kiértékelésétől függően 0 vagy 1 állapotot ad vissza. A kifejezések az alábbi, FELTÉTELES KIFEJEZÉSEK részben leírt elsődleges kifejezésekből állnak. A szófelosztás és az elérési út kibővítése nem történik meg a [[ és ]] közötti szavakon; tilde-bővítés, paraméter- és változóbővítés, aritmetikai bővítés, parancshelyettesítés, folyamathelyettesítés és idézet-eltávolítás történik. A feltételes operátorok, például a -f idézőjelek nélkül kell lenniük ahhoz, hogy elsődleges operátorként ismerjék fel őket.
A [[-val együtt használva a < és > operátorok lexikográfiai sorrendben rendezik az aktuális területi beállítást.
A == és != operátorok használata esetén az operátortól jobbra lévő karakterlánc mintának minősül, és az alább, a Minta alatt leírt szabályok szerint illeszkedik. Egyezés, mintha az extglob shell opció engedélyezve lenne. A = operátor egyenértékű a következővel: ==. Ha a nocasematch shell opció engedélyezve van, az egyezés az alfabetikus karakterek kis- és nagybetűitől függetlenül történik. A visszatérési érték 0, ha a karakterlánc egyezik (==) vagy nem egyezik (!=) a mintával, és 1 egyébként. A minta bármely része idézhető, hogy az idézett részt karakterláncként illessze.
Elérhető egy további bináris operátor, a =~, ugyanazzal az elsőbbséggel, mint a == és !=. Használatakor az operátortól jobbra lévő karakterlánc POSIX kiterjesztett reguláris kifejezésnek minősül, és ennek megfelelően illeszkedik (a POSIX regcomp és regexec interfészek használatával, amelyeket általában a leírtak. >regex(3)). A visszatérési érték 0, ha a karakterlánc egyezik a mintával, és 1 egyébként. Ha a reguláris kifejezés szintaktikailag helytelen, a feltételes kifejezés visszatérési értéke 2. Ha a nocasematch shell opció engedélyezve van, az egyezés az alfabetikus karakterek kis- és nagybetűinek figyelembevétele nélkül történik. A minta bármely része idézhető, hogy az idézett részt karakterláncként illessze. A reguláris kifejezésekben lévő zárójeles kifejezéseket óvatosan kell kezelni, mivel a normál idéző karakterek elvesztik jelentésüket a zárójelek között. Ha a minta egy shell-változóban van tárolva, a változó kiterjesztésének idézése arra kényszeríti, hogy a teljes mintát karakterláncként illessze.
A minta egyezik, ha egyezik a karakterlánc bármely részével. Rögzítse a mintát a ^ és $ reguláris kifejezés operátoraival, hogy a teljes karakterlánchoz illeszkedjen. A BASH_REMATCH tömbváltozó rögzíti, hogy a karakterlánc mely részei egyeztek a mintával. A BASH_REMATCH 0 indexű eleme tartalmazza a karakterláncnak azt a részét, amely megfelel a teljes reguláris kifejezésnek. A reguláris kifejezésen belüli zárójeles részkifejezésekkel egyeztetett részkarakterláncokat a rendszer a fennmaradó BASH_REMATCH indexbe menti. A BASH_REMATCH n indexű eleme a karakterláncnak az n. zárójeles részkifejezésnek megfelelő része.
A kifejezések a következő operátorokkal kombinálhatók, csökkenő sorrendben felsorolva:
- ( expression )
A kifejezés értékét adja vissza. Ez használható az operátorok normál elsőbbségének felülbírálására.
- ! expression
Igaz, ha a kifejezés hamis.
- expression1 && expression2
Igaz, ha az kifejezés1 és a kifejezés2 is igaz.
- expression1 || expression2
Igaz, ha az kifejezés1 vagy a kifejezés2 igaz.
Az && és || operátorok nem értékelik a kifejezés2 kifejezést, ha az kifejezés1 értéke elegendő a visszatérési érték meghatározásához a teljes feltételes kifejezésből.
A in utáni szavak listája kibővül, így létrejön az elemek listája. A name változó a lista minden elemére sorra kerül, és a list minden alkalommal végrehajtásra kerül. Ha az in word ki van hagyva, a for parancs minden beállított pozícióparaméternél egyszer végrehajtja a list parancsot (lásd: PARAMÉTEREK lent). A visszatérési állapot az utoljára végrehajtott parancs kilépési állapota. Ha az in utáni elemek kibontása üres listát eredményez, akkor a rendszer nem hajtja végre a parancsokat, és a visszatérési állapot 0.
Először a kifejezés1 aritmetikai kifejezést az alábbi, ARITMETIKAI ÉRTÉKELÉS részben leírt szabályok szerint értékeljük ki. A kifejezés2 aritmetikai kifejezést ezután ismételten kiértékeli, amíg nullára nem válik. Minden alkalommal, amikor a kifejezés nullától eltérő értékre értékel, a rendszer végrehajtja a list-t, és kiértékeli a kifejezés3 számtani kifejezést. Ha bármelyik kifejezést kihagyjuk, úgy viselkedik, mintha 1-et adna ki. A visszatérési érték a list utolsó végrehajtott parancsának kilépési állapota, vagy hamis, ha valamelyik kifejezés érvénytelen.
A in utáni szavak listája kibővül, így létrejön az elemek listája. A kiterjesztett szavak halmaza a szabványos hibára van nyomtatva, mindegyiket egy szám előzi meg. Ha a in szót kihagyja, a pozícióparaméterek kinyomtatásra kerülnek (lásd alább a PARAMÉTEREK részt). Ekkor megjelenik a PS3 prompt, és egy sor olvasható a szabványos bemenetről. Ha a sor az egyik megjelenített szónak megfelelő számból áll, akkor a név értéke erre a szóra lesz beállítva. Ha a sor üres, a szavak és a prompt ismét megjelennek. Az EOF beolvasása esetén a parancs befejeződik. Minden más beolvasási érték a name értékét nullára állítja. A beolvasott sort a rendszer a REPLY változóba menti. A lista minden kijelölés után végrehajtásra kerül, amíg a break parancs végrehajtásra nem kerül. A select kilépési állapota a listában legutóbb végrehajtott parancs kilépési állapota, vagy nulla, ha nem került végrehajtásra parancs.
A case parancs először kibontja a szót, és megpróbálja az egyes mintákkal egymás után párosítani a Mintaillesztés részben leírt egyezési szabályok segítségével. alább. A szó tilde-kiterjesztéssel, paraméter- és változóbővítéssel, aritmetikai bővítéssel, parancshelyettesítéssel, folyamathelyettesítéssel és idézőjelek eltávolításával bővül. Minden vizsgált minta kibővítésre kerül tilde kiterjesztéssel, paraméter- és változóbővítéssel, aritmetikai bővítéssel, parancshelyettesítéssel és folyamathelyettesítéssel. Ha a nocasematch shell opció engedélyezve van, az egyezés az alfabetikus karakterek kis- és nagybetűitől függetlenül történik. Ha talál egyezést, a megfelelő lista végrehajtásra kerül. Ha a ;; operátort használja, akkor az első mintaegyeztetés után nem történik további egyezési kísérlet. A ;& használata a ;; helyett azt eredményezi, hogy a végrehajtás a következő mintakészlethez tartozó listával folytatódik. A ;;& használata a ;; helyett azt eredményezi, hogy a shell teszteli a következő mintalistát az utasításban, ha van ilyen, és végrehajtja a kapcsolódó listát sikeres egyezés esetén az eset utasítás végrehajtásának folytatása, mintha a minta lista nem egyezne. A kilépési állapot nulla, ha egyetlen minta sem egyezik. Egyébként ez a listában legutóbb végrehajtott parancs kilépési állapota.
Az if lista végrehajtásra kerül. Ha a kilépési állapota nulla, az akkor lista végrehajtásra kerül. Ellenkező esetben minden elif list sorra kerül végrehajtásra, és ha a kilépési állapota nulla, a megfelelő akkor lista végrehajtásra kerül, és a parancs befejeződik. Ellenkező esetben az egyéb lista végrehajtásra kerül, ha van. A kilépési állapot az utoljára végrehajtott parancs kilépési állapota, vagy nulla, ha egyetlen tesztelt feltétel sem igaz.
A while parancs folyamatosan végrehajtja a list-2 listát, amíg a list-1 lista utolsó parancsa nulla kilépési állapotot ad vissza. Az ig parancs megegyezik a while paranccsal, azzal a különbséggel, hogy a tesztet negált: a list-2 addig fut, amíg az utolsó parancs A 1. lista nullától eltérő kilépési állapotot ad vissza. A while és az ig parancsok kilépési állapota a list-2 listában utoljára végrehajtott parancs kilépési állapota, vagy nulla, ha egyiket sem hajtották végre. .
A coprocess egy shell-parancs, amelyet a coproc fenntartott szó előz meg. A társfolyamat aszinkron módon hajtódik végre egy részhéjban, mintha a parancsot a & vezérlőoperátorral fejezték volna le, és egy kétirányú cső jön létre a végrehajtó shell és a társfolyamat között.
A társfolyamat formátuma:
coproc [NAME] command [redirections]
Ez létrehoz egy NAME nevű társfolyamatot. Ha a NAME nincs megadva, az alapértelmezett név a COPROC. A NAME elemet nem szabad megadni, ha a command egy egyszerű parancs (lásd fent); egyébként az egyszerű parancs első szavaként értelmeződik. A társfolyamat végrehajtásakor a shell létrehoz egy NAME nevű tömbváltozót (lásd alább a Tömbök részt) a végrehajtó shell kontextusában. A command szabványos kimenete egy csövön keresztül kapcsolódik a végrehajtó shellben lévő fájlleíróhoz, és ez a fájlleíró a NAME[0]-hoz van hozzárendelve. A command szabvány bemenete egy csövön keresztül csatlakozik a végrehajtó shell fájlleírójához, és ez a fájlleíró a NAME-hoz van hozzárendelve[1]. Ez a cső a parancs által meghatározott átirányítások előtt jön létre (lásd alább az REDIRECTION részt). A fájlleírók argumentumaként használhatók a shell parancsokhoz és a szabványos szóbővítésekkel történő átirányításokhoz. A parancsok végrehajtására és a helyettesítések végrehajtására létrehozott fájlleírókon kívül a fájlleírók nem állnak rendelkezésre alhéjakban. A társfolyamat végrehajtásához létrehozott shell folyamatazonosítója elérhető a NAME_PID változó értékeként. A beépített wait parancs használható arra, hogy megvárja, amíg a társfolyamat leáll.
Mivel a társfolyamat aszinkron parancsként jön létre, a coproc parancs mindig sikeresen ad vissza. Egy társfolyamat visszatérési állapota a command kilépési állapota.
A shell függvény egy egyszerű parancsként meghívott objektum, amely összetett parancsot hajt végre új helyzeti paraméterkészlettel. A shell függvények a következők szerint vannak deklarálva:
Ez egy fname nevű függvényt határoz meg. A fenntartott function szó nem kötelező. Ha a függvény fenntartott szó megadva van, a zárójelek nem kötelezőek. A függvény törzse a összetett-parancs összetett parancs (lásd fent az Összetett parancsokat). Ez a parancs általában a { és } közötti parancsok listája, de lehet bármely fenti Összetett parancsok alatt felsorolt parancs, egyetlen kivétellel: Ha a függvény fenntartott szó használatos, de a zárójel nincs megadva, a kapcsos zárójel kötelező. Az compound-command végrehajtásra kerül, ha az fname egy egyszerű parancs neveként van megadva. posix módban az fname értéknek érvényes shell name-nek kell lennie, és nem lehet a POSIX speciális beépítményének neve. . Alapértelmezett módban a függvénynév bármely idézet nélküli shell szó lehet, amely nem tartalmazza a $ elemet. A függvény definiálásakor megadott minden átirányítás (lásd alább az REDIRECTION részt) a funkció végrehajtásakor kerül végrehajtásra. Egy függvénydefiníció kilépési állapota nulla, kivéve, ha szintaktikai hiba történik, vagy ha már létezik azonos nevű, csak olvasható függvény. Végrehajtáskor egy függvény kilépési állapota a törzsben utoljára végrehajtott parancs kilépési állapota. (Lásd alább a FUNKCIÓK részt.)
Nem interaktív shellben vagy olyan interaktív shellben, amelyben az interactive_comments opció engedélyezve van a shop beépített modulhoz (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt) , a # karakterrel kezdődő szó a szót és a sorban lévő összes többi karaktert figyelmen kívül hagyja. Az interactive_comments beállítás nélküli interaktív shell nem engedélyezi a megjegyzéseket. Az interactive_comments opció alapértelmezés szerint be van kapcsolva az interaktív shellekben.
Az idézéssel bizonyos karakterek vagy szavak különleges jelentését eltávolítják a héjból. Az idézés segítségével letiltható a speciális karakterek speciális kezelése, megakadályozható, hogy a fenntartott szavakat ilyenként ismerjék fel, és megakadályozzuk a paraméterek kiterjesztését.
A DEFINÍCIÓK alatt felsorolt metakarakterek mindegyike különleges jelentéssel bír a shell számára, és idézni kell, ha önmagát akarja képviselni.
A parancselőzmények bővítési lehetőségeinek használatakor (lásd alább az TÖRTÉNELEM BŐVÍTÉS részt), az előzménykiterjesztés karaktert, általában !, idézni kell a megelőzés érdekében. történelem bővítése.
Három idézési mechanizmus létezik: a escape karakter, az egy- és a dupla idézőjel.
A nem idézőjelben lévő fordított perjel (\) a escape karakter. Megőrzi a következő karakter szó szerinti értékét, az <újsor> kivételével. Ha megjelenik egy \<newline> pár, és maga a fordított perjel nincs idézőjelben, akkor a \<newline> sorfolytatásként kezelendő (azaz eltávolítva a bemeneti adatfolyamot, és gyakorlatilag figyelmen kívül hagyják).
A karakterek egyszeres idézőjelbe zárása megőrzi az idézőjelekben szereplő karakterek szó szerinti értékét. Egy idézőjel nem fordulhat elő egyetlen idézőjel között, még akkor sem, ha előtte fordított perjel van.
A karakterek kettős idézőjelbe foglalása megőrzi az idézőjelben lévő összes karakter szó szerinti értékét, kivéve a $, `, \ és amikor az előzmények bővítése engedélyezve van, !. Amikor a shell posix módban van, a !-nak nincs különleges jelentése a dupla idézőjelben, még akkor sem, ha az előzmények bővítése engedélyezett. A $ és ` karakterek megtartják különleges jelentésüket dupla idézőjelben. A fordított perjel csak akkor őrzi meg különleges jelentését, ha a következő karakterek egyike követi: $, `, " , \ >, vagy <newline>. A dupla idézőjel kettős idézőjelbe kerülhet, ha előtte fordított perjel szerepel. Ha engedélyezve van, akkor az előzmények kibontása megtörténik, hacsak nem jelenik meg egy ! a dupla idézőjeleket fordított perjellel kell megszabadítani. A ! jelet megelőző fordított perjel nem kerül eltávolításra.
A speciális * és @ paraméterek különleges jelentéssel bírnak, ha idézőjelben vannak (lásd a PARAMETERS részt alább).
A $'karakterlánc' formájú szavakat speciálisan kezeljük. A szó karakterláncra bővül, és a fordított perjellel megtisztított karaktereket az ANSI C szabványnak megfelelően lecserélik. A fordított perjel menekülési szekvenciák, ha vannak, a következőképpen dekódolhatók:
- \a
riadó (csengő)
- \b
backspace
- \e
- \E
menekülő karakter
- \f
forma takarmány
- \n
új sor
- \r
kocsi vissza
- \t
vízszintes fül
- \v
függőleges fül
- \\
fordított perjel
- \'
egyetlen idézet
- \"
kettős idézet
- \?
kérdőjel
- \nnn
a nyolcbites karakter, amelynek értéke az nnn oktális érték (egy-három oktális számjegy)
- \xHH
a nyolcbites karakter, amelynek értéke hexadecimális HH (egy vagy két hexadecimális számjegy)
- \uHHHH
a Unicode (ISO/IEC 10646) karakter, amelynek értéke a hexadecimális HHHH (egy-négy hexadecimális számjegy)
- \UHHHHHHHH
a Unicode (ISO/IEC 10646) karakter, amelynek értéke a hexadecimális érték HHHHHHHH (egytől nyolc hexadecimális számjegyig)
- \cx
egy kontroll-x karakter
A kibővített eredmény egy idézőjeles, mintha a dollárjel nem lett volna jelen.
A dollárjel ($"karakterlánc") előtti dupla idézőjeles karakterlánc esetén a karakterlánc az aktuális területi beállításnak megfelelően lesz lefordítva. A gettext infrastruktúra végrehajtja az üzenetkatalógus kikeresését és fordítását az LC_MESSAGES és a TEXTDOMAIN shell változók használatával. Ha az aktuális nyelvi beállítás C vagy POSIX, vagy ha nem állnak rendelkezésre fordítások, a dollárjelet figyelmen kívül hagyja. Ha a karakterláncot lefordítják és lecserélik, a csere dupla idézőjelbe kerül.
A paraméter olyan entitás, amely értékeket tárol. Ez lehet egy név, egy szám vagy a Speciális paraméterek alatt felsorolt speciális karakterek egyike. A változó egy névvel jelölt paraméter. Egy változónak van értéke és nulla vagy több attribútum. Az attribútumok hozzárendelése a declare beépített paranccsal történik (lásd a declare részt alább a SHELL BEÉPÍTETT PARANCSOK részben).
A paraméter akkor kerül beállításra, ha hozzá van rendelve egy érték. A null karakterlánc érvényes érték. Ha egy változó be van állítva, akkor csak az unset beépített paranccsal lehet hatástalanítani (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt).
Egy változó hozzárendelhető az űrlap utasításával
name=[value]
Ha az érték nincs megadva, a változó null karakterláncot kap. Minden értéken tilde-bővítést, paraméter- és változóbővítést, parancshelyettesítést, aritmetikai bővítést és idézőjelek eltávolítását végezzük (lásd alább a KIBŐVÍTÉS részt). Ha a változó integer attribútuma be van állítva, akkor az value akkor is számtani kifejezésként kerül kiértékelésre, ha a $ ((...)) kiterjesztést nem használja (lásd Aritmetikai bővítés alább). A szófelosztás nem történik meg, kivéve a „$@” kifejezést, amint azt alább, a Speciális paraméterek részben ismertetjük. Az útvonalnév kiterjesztése nem történik meg. A hozzárendelési utasítások argumentumaként is megjelenhetnek az alias, declare, typeset, export, readonly< mellett. és local beépített parancsok (declaration parancsok). posix módban ezek a beépített modulok megjelenhetnek egy parancsban a command beépített egy vagy több példánya után, és megtartják ezeket a hozzárendelési utasítás tulajdonságait.
Abban az esetben, ha egy hozzárendelési utasítás értéket rendel egy shell-változóhoz vagy tömbindexhez, a += operátor használható a változó előző értékéhez vagy hozzáadásához. Ide tartoznak a beépített parancsok argumentumai, például a declare, amelyek elfogadják a hozzárendelési utasításokat (declaration parancsok). Ha a += értéket alkalmazza egy olyan változóra, amelyhez az integer attribútumot beállította, az értéket a rendszer aritmetikai kifejezésként értékeli, és hozzáadja a változó aktuális értékéhez, amely szintén kiértékelésre kerül. . Ha a +=-t alkalmazzuk egy tömbváltozóra összetett hozzárendeléssel (lásd alább a Tömbök részt), a változó értéke nincs beállítva (mint a=használatakor), és új értékeket ad hozzá a tömbhöz a következővel kezdődően: eggyel nagyobb, mint a tömb maximális indexe (indexelt tömbök esetén), vagy hozzáadva további kulcs-érték párokként egy asszociatív tömbhöz. Ha karakterlánc-értékű változóra alkalmazza, az érték kibővül, és hozzáfűződik a változó értékéhez.
Egy változóhoz hozzárendelhető a nameref attribútum a -n kapcsolóval a declare vagy a local beépített parancsokhoz (lásd: a declare és a local leírását alább) egy nameref vagy egy másik változóra való hivatkozás létrehozásához. Ez lehetővé teszi a változók közvetett manipulálását. Amikor a nameref változóra hivatkoznak, hozzá van rendelve, nincs beállítva, vagy az attribútumait módosítják (kivéve magának a nameref attribútumnak a használatát vagy megváltoztatását), a művelet ténylegesen a nameref változó értékében megadott változón történik. . A nameref-et általában a shell-függvényeken belül használják egy olyan változóra való hivatkozásra, amelynek a nevét argumentumként adjuk át a függvénynek. Például, ha egy változónevet adunk át egy shell függvénynek első argumentumként, akkor fut
declare -n ref=$1
a függvényen belül létrehoz egy ref nameref változót, amelynek értéke az első argumentumként átadott változó neve. A ref-re való hivatkozásokat és hozzárendeléseket, valamint az attribútumainak módosításait a rendszer hivatkozásként, hozzárendelésként és attribútummódosításként kezeli annak a változónak, amelynek a nevét $1ként adták át. Ha a for ciklus vezérlőváltozója rendelkezik a nameref attribútummal, a szavak listája lehet shell-változók listája, és a lista minden egyes szavára névhivatkozás jön létre, amikor a hurok végrehajtódik. A tömbváltozóknak nem lehet megadni a nameref attribútumot. A nameref változók azonban hivatkozhatnak tömbváltozókra és feliratozott tömbváltozókra. A névreferenciákat a beépített unset -n kapcsolóval lehet hatástalanítani. Ellenkező esetben, ha az unset parancsot egy nameref változó nevével hajtják végre argumentumként, akkor a nameref változó által hivatkozott változó be lesz állítva.
A pozíciós paraméter olyan paraméter, amelyet egy vagy több számjegy jelöl, az egyjegyű 0 kivételével. A pozícióparaméterek hozzárendelése a shell argumentumaiból történik, amikor meghívásra kerül, és a set segítségével újra hozzárendelhetők. beépített parancsot. A pozícióparaméterek nem rendelhetők hozzá a hozzárendelési utasításokkal. A pozícióparaméterek ideiglenesen lecserélődnek egy shell-függvény végrehajtásakor (lásd alább a FUNKCIÓK részt).
Ha egy több számjegyből álló pozícióparamétert kibont, akkor azt kapcsos zárójelek közé kell tenni (lásd alább a KIBŐVÍTÉS részt).
A héj több paramétert speciálisan kezel. Ezekre a paraméterekre csak hivatkozni lehet; hozzájuk való beosztás nem megengedett.
Egytől kezdve a helyzeti paraméterekre bővül. Ha a kiterjesztés nincs idézőjelek között, minden pozícióparaméter külön szóra bővül. Azokban a kontextusokban, ahol ezt végrehajtják, ezek a szavak további szófelosztásnak és útvonalnévbővítésnek vannak kitéve. Ha a bővítés dupla idézőjelek között történik, akkor egyetlen szóra bővül, és az egyes paraméterek értékét az IFS speciális változó első karaktere választja el. Vagyis a "$*" egyenértékű a "$1c$2c" kifejezéssel ...", ahol a c az IFS változó értékének első karaktere. Ha az IFS nincs beállítva, a paraméterek szóközzel vannak elválasztva. Ha az IFS nulla, akkor a paraméterek beavatkozó elválasztók nélkül egyesülnek.
Egytől kezdve a helyzeti paraméterekre bővül. Olyan szövegkörnyezetekben, ahol szófelosztás történik, ez minden helyzeti paramétert külön szóvá bővít ki; ha nem dupla idézőjelben, ezek a szavak szófelosztásnak vannak kitéve. Olyan környezetben, ahol nem történik szófelosztás, ez egyetlen szóra bővül, és minden pozícióparamétert szóközzel választanak el. Ha a bővítés dupla idézőjelben történik, minden paraméter külön szóra bővül. Vagyis a "$@" egyenértékű a "$1" "$2" szóval... Ha a dupla idézőjeles bővítés egy szón belül történik , az első paraméter bővítése az eredeti szó kezdő részével, az utolsó paraméter bővítése pedig az eredeti szó utolsó részével van összekapcsolva. Ha nincsenek pozícióparaméterek, a "$@" és a $@ semmivé bővül (azaz eltávolítja őket).
Kibővíti a pozícióparaméterek számát decimálisan.
A legutóbb végrehajtott előtér-folyamat kilépési állapotára bővül.
Kibővíti az aktuális beállítási jelzőket, amint azt a meghíváskor, a beépített set paranccsal vagy maga a shell által beállított paraméterekkel (például a -i kapcsolóval) határozza meg.
A héj folyamatazonosítójára bővül. A() részhéjban az aktuális héj folyamatazonosítójára bővül, nem az alhéjra.
Kibővíti a legutóbb háttérbe helyezett job folyamatazonosítóját, akár aszinkron parancsként, akár a beépített bg használatával (lásd alább a FELADAT VEZÉRLÉSE részt).
A shell vagy shell szkript nevére bővül. Ez a shell inicializálásánál van beállítva. Ha a bash parancsot egy parancsfájllal hívja meg, akkor a $0 a fájl neve lesz. Ha a bash a -c kapcsolóval indul, akkor a $0 a végrehajtandó karakterlánc utáni első argumentum lesz, ha van ilyen. . Ellenkező esetben a bash meghívásához használt fájlnévre lesz beállítva, a nulladik argumentum szerint.
A következő változókat állítja be a shell:
A shell indításakor állítsa be azt az elérési utat, amely a környezetben vagy az argumentumlistában átadott shell vagy shell szkript meghívására szolgál. Ezt követően az utolsó argumentumig kibővíti az előtérben végrehajtott előző egyszerű parancsot, a kiterjesztés után. Állítsa be azt a teljes elérési utat is, amely minden végrehajtott és az adott parancsba exportált környezetben elhelyezett parancs meghívására szolgál. A levelek ellenőrzésekor ez a paraméter tartalmazza az éppen ellenőrzött levélfájl nevét.
A bash példányának meghívásához használt teljes fájlnévre bővül.
Az engedélyezett shell opciók kettősponttal elválasztott listája. A lista minden szava a -s opció érvényes argumentuma a shopt beépített parancshoz (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt). A BASHOPTS-ban megjelenő lehetőségek azok, amelyeket a shop onként jelentett. Ha ez a változó benne van a környezetben, amikor a bash elindul, akkor a listában szereplő összes shell-beállítás engedélyezve lesz, mielőtt elolvasná az indítófájlokat. Ez a változó csak olvasható.
Az aktuális bash folyamat folyamatazonosítójára bővül. Ez bizonyos körülmények között eltér a $$ értéktől, például olyan subshelleknél, amelyeknél nincs szükség a bash újrainicializálására. A BASHPIDhez való hozzárendeléseknek nincs hatása. Ha a BASHPID nincs beállítva, akkor elveszti speciális tulajdonságait, még akkor is, ha ezt követően visszaállítják.
Egy asszociatív tömbváltozó, amelynek tagjai megfelelnek az álnevek belső listájának, amelyet a beépített alias tart fenn. A tömbhöz hozzáadott elemek megjelennek az álnevek listájában; a tömbelemek hatástalanítása azonban jelenleg nem eredményezi az álnevek eltávolítását az álnevek listájáról. Ha a BASH_ALIASES nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Egy tömbváltozó, amelynek értéke az aktuális bash végrehajtási hívási verem egyes kereteiben lévő paraméterek száma. Az aktuális szubrutin paramétereinek száma (a shell függvény vagy a . vagy source segítségével végrehajtott szkript) a verem tetején található. Egy szubrutin végrehajtásakor az átadott paraméterek száma a BASH_ARGC-be kerül. A shell csak kiterjesztett hibakeresési módban állítja be a BASH_ARGC beállítást (lásd alább a beépített shopt extdebug opciójának leírását). Ha az extdebug értéket azután állítja be, hogy a héj elkezdett végrehajtani egy szkriptet, vagy erre a változóra hivatkozik, ha az extdebug nincs beállítva, akkor következetlen értékeket kaphat.
Egy tömbváltozó, amely az aktuális bash végrehajtási hívási verem összes paraméterét tartalmazza. Az utolsó szubrutinhívás végső paramétere a verem tetején található; a kezdeti hívás első paramétere alul van. Egy szubrutin végrehajtásakor a megadott paraméterek a BASH_ARGV-be kerülnek. A shell csak kiterjesztett hibakeresési módban állítja be a BASH_ARGV beállítást (lásd alább a beépített shopt extdebug opciójának leírását). Ha az extdebug értéket azután állítja be, hogy a héj elkezdett végrehajtani egy szkriptet, vagy erre a változóra hivatkozik, ha az extdebug nincs beállítva, akkor következetlen értékeket kaphat.
Hivatkozáskor ez a változó a shell vagy shell script nevére bővül (azonos a $0 értékkel; lásd fent a 0. speciális paraméter leírását). A BASH_ARGV0 értékhez való hozzárendelés esetén a hozzárendelt érték a $0-hoz is hozzárendelődik. Ha a BASH_ARGV0 nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Egy asszociatív tömbváltozó, amelynek tagjai megfelelnek a parancsok belső hash-táblázatának, ahogyan azt a hash beépített modul karbantartja. Az ehhez a tömbhöz hozzáadott elemek megjelennek a hash táblában; a tömbelemek hatástalanítása azonban jelenleg nem eredményezi a parancsnevek eltávolítását a hash táblából. Ha a BASH_CMDS nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Az éppen végrehajtott vagy végrehajtásra váró parancs, kivéve, ha a shell egy csapda eredményeként végrehajtott parancsot, ebben az esetben a trap pillanatában végrehajtott parancs. Ha a BASH_COMMAND nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
A parancs argumentuma a -c meghívó opcióhoz.
Egy tömbváltozó, amelynek tagjai a sorszámok a forrásfájlokban, ahol a FUNCNAME minden megfelelő tagja meghívásra került. $ {BASH_LINENO[$i]} a sorszám a forrásfájlban ($ {BASH_SOURCE[<$i+1]}), ahol $ {FUNCNAME[$i ]} meghívásra került (vagy $ {BASH_LINENO[$i-1]}, ha egy másik shell-függvényen belül hivatkoznak rá) . A LINENO használatával kaphatja meg az aktuális sorszámot.
A könyvtárak kettősponttal elválasztott listája, amelyben a shell az enable parancs által meghatározott, dinamikusan betölthető beépített modulokat keresi.
Egy tömbváltozó, amelynek tagjait a =~ bináris operátor rendeli hozzá a [[ feltételes parancshoz. A 0 indexű elem a karakterlánc azon része, amely megfelel a teljes reguláris kifejezésnek. Az n indexű elem a karakterlánc azon része, amely megfelel az nedik zárójeles részkifejezésnek.
Egy tömbváltozó, amelynek tagjai a forrásfájlnevek, ahol a FUNCNAME tömbváltozóban a megfelelő shell-függvények nevei vannak megadva. A $ {FUNCNAME[$i]} shell függvény a $ {BASH_SOURCE[ fájlban van definiálva.$i]} és hívást innen: $ {BASH_SOURCE[$i+1 ]}.
Növelve eggyel minden egyes alhéjon vagy alhéj-környezeten belül, amikor a héj végrehajtása megkezdődik az adott környezetben. A kezdeti érték 0. Ha a BASH_SUBSHELL nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Egy csak olvasható tömbváltozó, amelynek tagjai a bash ezen példányára vonatkozó verzióinformációkat tárolják. A tömbtagokhoz rendelt értékek a következők:
A fő verziószám (a kiadás).
A kisebb verziószám (a verzió).
A patch szintje.
A build verzió.
A kiadás állapota (pl. béta1).
A MACHTYPE értéke.
A bash példányának verzióját leíró karakterláncra bővül.
A kurzor aktuális pozícióját tartalmazó szó indexe a $ {COMP_WORDS}-ba. Ez a változó csak a programozható befejezési szolgáltatások által meghívott shell-függvényekben érhető el (lásd alább a Programozható befejezés részt).
Az aktuális befejezési függvény meghívásához használt kulcs (vagy egy kulcssorozat utolsó kulcsa).
Az aktuális parancssor. Ez a változó csak a héjfüggvényekben és a programozható befejezési szolgáltatások által meghívott külső parancsokban érhető el (lásd alább a Programozható befejezés részt).
A kurzor aktuális pozíciójának indexe az aktuális parancs elejéhez képest. Ha a kurzor aktuális pozíciója az aktuális parancs végén van, akkor ennek a változónak az értéke egyenlő a $ {#COMP_LINE} értékkel. Ez a változó csak a héjfüggvényekben és a programozható befejezési szolgáltatások által meghívott külső parancsokban érhető el (lásd alább a Programozható befejezés részt).
Állítson be egy egész értéket, amely megfelel a befejezési függvény meghívásának megkísérelt befejezésének típusának: TAB, normál befejezéshez, ?, az egymást követő tabulátorok utáni befejezések felsorolásához, !, a részleges szókiegészítés alternatíváinak felsorolásához, @ a kiegészítések felsorolásához, ha a szó nem módosítható, vagy % a menü kiegészítéséhez. Ez a változó csak a héjfüggvényekben és a programozható befejezési szolgáltatások által meghívott külső parancsokban érhető el (lásd alább a Programozható befejezés részt).
Az a karakterkészlet, amelyet a readline könyvtár szóelválasztóként kezel a szókiegészítés során. Ha a COMP_WORDBREAKS nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Egy tömbváltozó (lásd alább a Tömbök részt), amely az aktuális parancssorban lévő egyes szavakból áll. A sor szavakra van osztva, ahogy a readline felosztaná, a COMP_WORDBREAKS használatával a fent leírtak szerint. Ez a változó csak a programozható befejezési szolgáltatások által meghívott shell-függvényekben érhető el (lásd alább a Programozható befejezés részt).
Egy tömbváltozó (lásd alább a Tömbök című részt), amely a fájlleírók tárolására szolgál egy névtelen társfolyamat kimenetéhez és beviteléhez (lásd fent a Kárfolyamatok részt).
Egy tömbváltozó (lásd alább a Tömbök részt), amely a címtárverem aktuális tartalmát tartalmazza. A könyvtárak a beépített dirs által megjelenített sorrendben jelennek meg a veremben. A tömbváltozó tagjaihoz való hozzárendelés felhasználható a veremben már lévő könyvtárak módosítására, de a pushd és a popd beépülő modulokat kell használni a könyvtárak hozzáadásához és eltávolításához. A változóhoz való hozzárendelés nem módosítja az aktuális könyvtárat. Ha a DIRSTACK nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Minden alkalommal, amikor erre a paraméterre hivatkoznak, a Unix-korszak óta eltelt másodpercek számára bővül (lásd: idő(3)) mikromásodperces részletességű lebegőpontos értékként. Az EPOCHREALTIME-hoz rendelt hozzárendeléseket figyelmen kívül hagyja. Ha az EPOCHREALTIME nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Minden alkalommal, amikor erre a paraméterre hivatkoznak, az a Unix Epoch óta eltelt másodpercek számára bővül (lásd: idő(3)). A rendszer figyelmen kívül hagyja az EPOCHSECONDS-hoz való hozzárendeléseket. Ha az EPOCHSECONDS nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Kibővül az aktuális felhasználó tényleges felhasználói azonosítójára, amelyet a shell indításakor inicializálnak. Ez a változó csak olvasható.
Egy tömbváltozó, amely a végrehajtási hívási veremben jelenleg található összes shell-függvény nevét tartalmazza. A 0 indexű elem bármely éppen futó shell-függvény neve. A legalsó elem (a legmagasabb indexű) a "fő". Ez a változó csak akkor létezik, ha egy shell függvény fut. A(z) FUNCNAME funkcióhoz való hozzárendeléseknek nincs hatása. Ha a FUNCNAME nincs beállítva, akkor elveszti speciális tulajdonságait, még akkor is, ha ezt követően visszaállítják.
Ez a változó a BASH_LINENO és a BASH_SOURCE paraméterekkel használható. A FUNCNAME minden elemének megfelelő elemei vannak a BASH_LINENO és a BASH_SOURCE függvényekben a hívási verem leírására. Például a $ {FUNCNAME[$i]} a $ {BASH_SOURCE[ fájlból lett meghívva.$i+1]} a következő sorban: $ {BASH_LINENO[$i ]}. A beépített hívó ezen információk alapján megjeleníti az aktuális híváskészletet.
Egy tömbváltozó, amely azon csoportok listáját tartalmazza, amelyeknek az aktuális felhasználó tagja. A GROUPS csoporthoz való hozzárendeléseknek nincs hatása. Ha a CSOPORTOK nincs beállítva, akkor elveszti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Az aktuális parancs előzményszáma vagy indexe az előzmények listájában. A rendszer figyelmen kívül hagyja a HISTCMD-hez való hozzárendeléseket. Ha a HISTCMD nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Automatikusan az aktuális gazdagép nevére állítja be.
Automatikusan egy karakterláncra állítja be, amely egyedileg írja le a gép típusát, amelyen a bash fut. Az alapértelmezés rendszerfüggő.
Minden alkalommal, amikor erre a paraméterre hivatkoznak, a shell egy tizedes számmal helyettesíti az aktuális sorszámot (1-gyel kezdődően) egy parancsfájlban vagy függvényben. Ha nem szerepel egy parancsfájlban vagy függvényben, a helyettesített érték nem garantált, hogy értelmes lesz. Ha a LINENO nincs beállítva, akkor elveszíti különleges tulajdonságait, még akkor is, ha utólag visszaállítja.
Automatikusan olyan karakterláncra állítja be, amely teljes mértékben leírja azt a rendszertípust, amelyen a bash fut, szabványos GNU cpu-company-system formátumban. Az alapértelmezés rendszerfüggő.
Egy tömbváltozó (lásd alább a Tömbök részt), amely a beépített mapfile által beolvasott szöveg tárolására szolgál, ha nincs megadva változónév.
Az előző munkakönyvtár a cd paranccsal beállítva.
A getopts beépített parancs által feldolgozott utolsó opció argumentum értéke (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt).
A következő argumentum indexe, amelyet a getopts beépített paranccsal kell feldolgozni (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt).
Automatikusan egy karakterláncra állítja be, amely leírja azt az operációs rendszert, amelyen a bash fut. Az alapértelmezés rendszerfüggő.
Egy tömbváltozó (lásd alább a Tömböket), amely a legutóbb végrehajtott előtérbeli folyamatokból származó kilépési állapotértékek listáját tartalmazza (amely csak egyetlen parancsot tartalmazhat).
A rendszerhéj szülőjének folyamatazonosítója. Ez a változó csak olvasható.
A cd paranccsal beállított aktuális munkakönyvtár.
Minden alkalommal, amikor erre a paraméterre hivatkozik, az egy 0 és 32767 közötti véletlenszerű egész számra bővül. Ha értéket rendel a RANDOM-hoz, akkor inicializálja (kiindulási) a véletlen számok sorozata. Ha a RANDOM nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
A readline sorpuffer tartalma a "bind -x"-hez való használathoz (lásd alább a SHELL BEÉPÍTETT PARANCSOKAT).
A jelölés (mentett beszúrási pont) helyzete a readline sorpufferben, a "bind -x"-hez való használathoz (lásd alább a SHELL BEÉPÍTETT PARANCSOKAT). A beszúrási pont és a jel közötti karaktereket gyakran nevezik régiónak.
A beszúrási pont pozíciója a readline sorpufferben, a "bind -x"-hez való használathoz (lásd alább a SHELL BEÉPÍTETT PARANCSOKAT).
Állítsa be a beépített read parancs által beolvasott bemeneti sort, ha nincsenek megadva argumentumok.
Minden alkalommal, amikor erre a paraméterre hivatkozik, a rendszer a shell meghívása óta eltelt másodpercek számát adja vissza. Ha egy érték hozzá van rendelve a SECONDS-hoz, akkor a következő hivatkozások során visszaadott érték a hozzárendelés óta eltelt másodpercek száma plusz a hozzárendelt érték. A shell meghívásakor eltöltött másodpercek számát és az aktuális időt mindig a rendszeróra lekérdezése határozza meg. Ha a SECONDS nincs beállítva, akkor elveszti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Az engedélyezett shell opciók kettősponttal elválasztott listája. A lista minden szava érvényes argumentuma a -o opcióhoz a set beépített parancshoz (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt). A SHELLOPTS-ban megjelenő opciók azok, amelyeket a set -o on jelzett. Ha ez a változó benne van a környezetben, amikor a bash elindul, akkor a listában szereplő összes shell-beállítás engedélyezve lesz, mielőtt elolvasná az indítófájlokat. Ez a változó csak olvasható.
A bash minden egyes indításakor eggyel növelve.
Ez a változó minden hivatkozáskor 32 bites pszeudo-véletlen számra bővül. A véletlenszám-generátor nem lineáris azokon a rendszereken, amelyek támogatják a /dev/urandom vagy az arc4random rendszert, így az egyes visszaadott számoknak nincs kapcsolata az őt megelőző számokkal. A véletlenszám-generátor nem magolható, így az ehhez a változóhoz való hozzárendeléseknek nincs hatása. Ha a SRANDOM nincs beállítva, akkor elveszíti speciális tulajdonságait, még akkor is, ha utólag visszaállítja.
Kibővül az aktuális felhasználó felhasználói azonosítójára, amely a shell indításakor inicializálódik. Ez a változó csak olvasható.
A következő változókat használja a shell. Egyes esetekben a bash alapértelmezett értéket rendel egy változóhoz; ezeket az eseteket az alábbiakban ismertetjük.
Az érték a shell kompatibilitási szintjének beállítására szolgál. Lásd alább a SHELL KOMPATIBILITÁSI MÓD részt a különböző kompatibilitási szintek és hatásaik leírásáért. Az érték lehet egy decimális szám (pl. 4,2) vagy egy egész szám (pl. 42), amely megfelel a kívánt kompatibilitási szintnek. Ha a BASH_COMPAT nincs beállítva, vagy üres karakterláncra van állítva, a kompatibilitási szint az aktuális verzió alapértelmezett értékére lesz állítva. Ha a BASH_COMPAT olyan értékre van állítva, amely nem tartozik az érvényes kompatibilitási szintek közé, a rendszerhéj hibaüzenetet nyomtat, és a kompatibilitási szintet az aktuális verzió alapértelmezett értékére állítja. Az érvényes értékek megfelelnek az alábbiakban leírt kompatibilitási szinteknek
BSHELLKOMPATIBILITÁSIMÓD. Például a 4.2 és a 42 olyan érvényes értékek, amelyek megfelelnek a compat42 shopt opciónak, és a kompatibilitási szintet 42-re állítják. A jelenlegi verzió is érvényes érték.
Ha ez a paraméter be van állítva, amikor a bash egy shell-szkriptet hajt végre, akkor az értéke a rendszerhéj inicializálására szolgáló parancsokat tartalmazó fájlnévként értelmeződik, mint a ~/.bashrc esetén. A BASH_ENV értékét paraméterbővítésnek, parancshelyettesítésnek és aritmetikai bővítésnek vetjük alá, mielőtt fájlnévként értelmezné.
A PATH nem használható az eredményül kapott fájlnév keresésére.
Ha egy érvényes fájlleírónak megfelelő egész számra van állítva, a bash a set -x engedélyezése után generált nyomkövetési kimenetet az adott fájlleíróba írja. A fájlleíró bezárul, ha a BASH_XTRACEFD nincs beállítva, vagy új értéket rendel hozzá. A BASH_XTRACEFD beállításának törlése vagy az üres karakterlánc hozzárendelése a nyomkövetési kimenetet normál hibára küldi. Vegye figyelembe, hogy a BASH_XTRACEFD 2-re (a szabványos hibafájl-leíró) állításával, majd a beállítás törlésével a normál hiba bezárul.
A cd parancs keresési útvonala. Ez a könyvtárak kettősponttal elválasztott listája, amelyben a shell a cd parancs által meghatározott célkönyvtárakat keresi. A mintaérték a ".:~:/usr".
Állítsa be a kilépő gyermekállapot-értékek számát, amelyeket a shell megjegyez. A Bash nem engedi, hogy ez az érték a POSIX által előírt minimum alá csökkenjen, és van egy maximális érték (jelenleg 8192), amelyet nem léphet túl. A minimális érték rendszerfüggő.
A select összetett parancs használja a terminál szélességének meghatározására a kiválasztási listák nyomtatásakor. Automatikusan beállítja, ha a checkwinsize opció engedélyezve van, vagy egy interaktív shellben SIGWINCH fogadásakor.
Egy tömbváltozó, amelyből a bash beolvassa a programozható befejezési szolgáltatás által meghívott shell-függvény által generált lehetséges befejezéseket (lásd alább a Programozható befejezés részt). Minden tömbelem egy lehetséges befejezést tartalmaz.
Ha a bash megtalálja ezt a változót a környezetben, amikor a shell "t" értékkel kezdődik, akkor azt feltételezi, hogy a shell egy Emacs shell pufferben fut, és letiltja a sorszerkesztést.
A BASH_ENV-hez hasonlóan kibontva és végrehajtva (lásd fent az INVOCATION részt), amikor egy interaktív shellt posix módban hívnak meg.
A shell-minták kettősponttal elválasztott listája (lásd: Mintaillesztés), amely meghatározza azon fájlnevek listáját, amelyeket figyelmen kívül kell hagyni a PATH használatával végzett parancskereséssel. Azok a fájlok, amelyek teljes elérési útja megegyezik ezen minták valamelyikével, nem tekinthetők végrehajtható fájloknak a befejezés és a parancsvégrehajtás szempontjából a PATH keresésen keresztül. Ez nincs hatással a [, teszt és [[ parancsok viselkedésére. A parancskivonattáblázatban szereplő teljes elérési útnevekre nem vonatkozik az EXECIGNORE. Ezzel a változóval figyelmen kívül hagyhatja azokat a megosztott könyvtári fájlokat, amelyeknek be van állítva a végrehajtható bitje, de nem futtatható fájlok. A mintaillesztés tiszteletben tartja az extglob shell opció beállítását.
Az fc beépített parancs alapértelmezett szerkesztője.
A fájlnév-kiegészítés során figyelmen kívül hagyandó utótagok kettősponttal elválasztott listája (lásd alább a READLINE részt). Azok a fájlnevek, amelyek utótagja megegyezik a FIGNORE egyik bejegyzésével, ki lesz zárva az egyező fájlnevek listájából. A mintaérték ".o:~".
Ha 0-nál nagyobb numerikus értékre van állítva, akkor a funkció maximális beágyazási szintjét határozza meg. Az ezt a beágyazási szintet meghaladó függvényhívások az aktuális parancs megszakítását eredményezik.
A minták kettősponttal elválasztott listája, amely meghatározza azon fájlnevek halmazát, amelyeket figyelmen kívül kell hagyni az elérési út kiterjesztésével. Ha az elérési út kiterjesztési mintájával megegyező fájlnév a GLOBIGNORE egyik mintájával is megegyezik, akkor az eltávolításra kerül az egyezések listájáról.
Az értékek kettősponttal elválasztott listája, amely szabályozza a parancsok mentési módját az előzmények listáján. Ha az értékek listája tartalmazza a ignorespace-t, a szóköz karakterrel kezdődő sorok nem kerülnek mentésre az előzmények listájában. Az ignoredups érték azt eredményezi, hogy az előző előzménybejegyzésnek megfelelő sorok nem kerülnek mentésre. Az ignoreboth értéke az ignorespace és az ignoredups rövidítése. Az erasedups érték azt eredményezi, hogy az aktuális sornak megfelelő összes előző sor törlődik az előzmények listájáról, mielőtt a sor mentésre kerül. A fenti listán nem szereplő értékek figyelmen kívül maradnak. Ha a HISTCONTROL nincs beállítva, vagy nem tartalmaz érvényes értéket, a rendszer a shell-elemző által olvasott összes sort az előzmények listájára menti, a HISTIGNORE értékétől függően. A többsoros összetett parancsok második és azt követő sorait a rendszer nem teszteli, és a HISTCONTROL értékétől függetlenül hozzáadódik az előzményekhez.
Annak a fájlnak a neve, amelybe a parancselőzményeket menti (lásd alább az ELŐZMÉNYEK részt). Az alapértelmezett érték a ~/.bash_history. Ha nincs beállítva, a parancselőzmények nem kerülnek mentésre, amikor egy shell kilép.
Az előzményfájlban található sorok maximális száma. Ha ehhez a változóhoz értéket rendelünk, az előzményfájl szükség esetén a legrégebbi bejegyzések eltávolításával csonkolódik, hogy legfeljebb ennyi sort tartalmazzon. Az előzményfájlt is erre a méretre csonkolja a rendszer, miután kiírta, amikor egy shell kilép. Ha az érték 0, akkor az előzményfájl nulla méretre csonkolódik. A nem numerikus értékek és a nullánál kisebb számértékek gátolják a csonkolást. A rendszerhéj az alapértelmezett értéket a HISTSIZE értékre állítja be az indítófájlok beolvasása után.
A minták kettősponttal elválasztott listája annak eldöntésére, hogy mely parancssorokat kell menteni az előzmények listáján. Minden minta a sor elejére van rögzítve, és meg kell egyeznie a teljes sorral (nincs hozzáfűzve implicit `*). A HISTCONTROL által meghatározott ellenőrzések alkalmazása után minden mintát tesztelünk a vonalhoz képest. A normál shell-mintázattal egyező karakterek mellett a `&' megegyezik az előző előzménysorral. A `&' kifejezés visszafordítható; a fordított perjel eltávolításra kerül a mérkőzés megkísérlése előtt. A többsoros összetett parancs második és azt követő sorait a rendszer nem teszteli, és a HISTIGNORE értékétől függetlenül hozzáadódik az előzményekhez. A mintaillesztés tiszteletben tartja az extglob shell opció beállítását.
Azon parancsok száma, amelyeket meg kell jegyezni a parancselőzményekben (lásd alább az ELŐZMÉNYEKET). Ha az érték 0, a parancsok nem kerülnek mentésre az előzmények listájában. A nullánál kisebb numerikus értékek azt eredményezik, hogy minden parancs az előzmények listájára kerül (nincs korlátozás). A shell az indítási fájlok beolvasása után az alapértelmezett értéket 500-ra állítja be.
Ha ez a változó be van állítva, és nem nulla, akkor az értéke az strftime(3) formátum karakterláncaként kerül felhasználásra az előzmények által megjelenített minden egyes előzménybejegyzéshez társított időbélyeg kinyomtatásához. beépített. Ha ez a változó be van állítva, az időbélyegek beírásra kerülnek az előzményfájlba, így megőrizhetők a shell-munkameneteken keresztül. Ez az előzmény megjegyzés karaktert használja az időbélyegek megkülönböztetésére a többi előzménysortól.
Az aktuális felhasználó saját könyvtára; a beépített cd parancs alapértelmezett argumentuma. Ennek a változónak az értéke tilde-kiterjesztéskor is használatos.
Az /etc/hosts formátummal megegyező formátumú fájl nevét tartalmazza, amelyet akkor kell elolvasni, amikor a shellnek ki kell egészítenie egy gazdagépnevet. A lehetséges gazdagépnév-kiegészítések listája a shell futása közben módosulhat; a következő alkalommal, amikor az érték módosítása után megkísérli a gazdagépnév befejezését, a bash hozzáadja az új fájl tartalmát a meglévő listához. Ha a HOSTFILE be van állítva, de nincs értéke, vagy nem nevez el olvasható fájlt, a bash megpróbálja beolvasni a /etc/hosts elemet, hogy megszerezze a a lehetséges gazdagépnév-kiegészítések listája. Ha a HOSTFILE nincs beállítva, a gazdagépnevek listája törlődik.
A belső mezőelválasztó, amely szófelosztásra szolgál a kiterjesztés után, és a beépített read paranccsal szavakra bontja a sorokat. Az alapértelmezett érték a ``
Egy interaktív shell műveletét vezérli, ha egyetlen bemenetként egy EOF karaktert kap. Ha be van állítva, az érték az egymást követő EOF karakterek száma, amelyeket első karakterként kell beírni egy beviteli sorban a bash kilépés előtt. Ha a változó létezik, de nincs numerikus értéke, vagy nincs értéke, az alapértelmezett érték 10. Ha nem létezik, az EOF a shell bevitelének végét jelenti.
A readline indítófájl fájlneve, felülírva az alapértelmezett ~/.inputrc értéket (lásd a READLINE részt alább).
Ha ez a változó megjelenik a környezetben a shell indításakor, a bash azt feltételezi, hogy egy Emacs shell-pufferben fut, és a TERM értékétől függően letilthatja a sorszerkesztést.
A területi kategória meghatározására szolgál minden olyan kategória esetében, amely nincs kifejezetten kiválasztott LC_ kezdetű változóval.
Ez a változó felülírja a LANG és bármely más LC_ változó értékét, amely egy terület-kategóriát határoz meg.
Ez a változó határozza meg az elérési út-bővítés eredményeinek rendezésekor használt leválogatási sorrendet, és meghatározza a tartománykifejezések, az ekvivalencia-osztályok és a rendezési szekvenciák viselkedését az útvonalnév-bővítésen és a mintaillesztésen belül.
Ez a változó határozza meg a karakterek értelmezését és a karakterosztályok viselkedését az útvonalnév-bővítésen és a mintaillesztésen belül.
Ez a változó határozza meg a $ karakterek előtti dupla idézőjeles karakterláncok fordításához használt területi beállítást.
Ez a változó határozza meg a számformázáshoz használt területi kategóriát.
Ez a változó határozza meg az adatok és az idő formázásához használt területi kategóriát.
A select összetett parancs használja az oszlophossz meghatározására a kiválasztási listák nyomtatásához. Automatikusan beállítja, ha a checkwinsize opció engedélyezve van, vagy egy interaktív shellben SIGWINCH fogadásakor.
Ha ez a paraméter egy fájl vagy könyvtárnévre van beállítva, és a MAILPATH változó nincs beállítva, a bash tájékoztatja a felhasználót a megadott fájl vagy Maildir formátumú levél érkezéséről Könyvtár.
Meghatározza, hogy a bash milyen gyakran (másodpercben) ellenőrizze a leveleket. Az alapértelmezett 60 másodperc. Amikor elérkezik az e-mailek ellenőrzésének ideje, a shell ezt az elsődleges prompt megjelenítése előtt teszi meg. Ha ez a változó nincs beállítva, vagy olyan értékre van állítva, amely nem nagyobb vagy egyenlő nullával, a shell letiltja a levélellenőrzést.
A levelek ellenőrzéséhez szükséges fájlnevek kettősponttal elválasztott listája. A kinyomtatásra kerülő üzenet egy adott fájlba érkező levél esetén megadható úgy, hogy a fájlnevet az üzenettől `?' karakterrel választja el. Az üzenet szövegében használva a $_ az aktuális mailfájl nevére bővül. Példa:
MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has mail!"'
A Bash beállítható úgy, hogy alapértelmezett értéket adjon meg ehhez a változóhoz (alapértelmezés szerint nincs érték), de az általa használt felhasználói levelezési fájlok helye rendszerfüggő (pl. ).
/var/mail/$USER
Ha 1-es értékre van állítva, a bash a getopts beépített parancs által generált hibaüzeneteket jeleníti meg (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt).
Az OPTERR 1-re inicializálódik minden alkalommal, amikor a parancsértelmezőt meghívják vagy egy shell-szkriptet végrehajtanak.
A parancsok keresési útvonala. Ez a könyvtárak kettősponttal elválasztott listája, amelyben a shell parancsokat keres (lásd alább a COMMAND EXECUTION részt). A PATH értékében szereplő nulla hosszúságú (null) könyvtárnév jelzi az aktuális könyvtárat. A null könyvtárnév megjelenhet két szomszédos kettőspontként, vagy kezdő vagy záró kettőspontként. Az alapértelmezett elérési út rendszerfüggő, és a bash programot telepítő rendszergazda állítja be. Közös érték az
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin
Ha ez a változó benne van a környezetben, amikor a bash elindul, akkor a shell posix módba lép az indítófájlok olvasása előtt, mintha a --posix meghívó lenne. opciót biztosították. Ha a parancsértelmező futása közben van beállítva, a bash engedélyezi a posix módot, mintha a set -o posix parancsot végrehajtották volna. Amikor a shell posix módba lép, beállítja ezt a változót, ha még nem volt beállítva.
Ha ez a változó be van állítva, és egy tömb, akkor az egyes set elemek értéke parancsként kerül végrehajtásra az egyes elsődleges promptok kiadása előtt. Ha ez be van állítva, de nem tömbváltozó, akkor az értéke parancsként kerül végrehajtásra.
Ha nullánál nagyobb számra van állítva, akkor a rendszer az értéket a záró könyvtárösszetevők számaként használja, amelyeket meg kell őrizni a \w és \W prompt karakterláncok kibontásakor (lásd: KÉSZÍTÉS alább). Az eltávolított karakterek helyére ellipszis kerül.
Ennek a paraméternek az értéke kibővül (lásd alább a PROMPTING részt), és interaktív parancsértelmezők jelenítik meg a parancs beolvasása után és a parancs végrehajtása előtt.
Ennek a paraméternek az értéke ki lesz bontva (lásd alább a PROMPTING részt), és elsődleges prompt karakterláncként használatos. Az alapértelmezett érték a ``\s-\v\$''.
Ennek a paraméternek az értéke a PS1hez hasonlóan kibővül, és másodlagos prompt karakterláncként kerül felhasználásra. Az alapértelmezett érték a ``> ''.
Ennek a paraméternek az értéke a select parancs promptjaként használatos (lásd fent a SHELL GRAMMAR részt).
Ennek a paraméternek az értéke kibővül, mint a PS1 esetén, és az érték kinyomtatásra kerül, mielőtt minden egyes bash parancs megjelenik a végrehajtási nyomkövetés során. A PS4 kibővített értékének első karaktere szükség szerint többször is megismétlődik, hogy jelezze a többszintű közvetettséget. Az alapértelmezett ``+ ''.
Ez a változó a shell teljes elérési útjára bővül. Ha a parancsértelmező indításakor nincs beállítva, a bash hozzárendeli az aktuális felhasználó bejelentkezési rendszerhéjának teljes elérési útját.
Ennek a paraméternek az értéke formátumkarakterláncként használatos, amely meghatározza, hogy az idő lefoglalt szóval előtagolt folyamatok időzítési információi hogyan jelenjenek meg. A % karakter egy escape szekvenciát vezet be, amely időértékre vagy egyéb információra bővül. Az escape szekvenciák és jelentésük a következő; a kapcsos zárójelek az opcionális részeket jelölik.
Egy szó szerinti %.
Az eltelt idő másodpercben.
A felhasználói módban eltöltött CPU másodpercek száma.
A rendszer módban eltöltött CPU másodpercek száma.
A CPU százalékos aránya, a következőképpen számítva: (%U + %S)/%R.
Az opcionális p a pontosságot, a tizedesvessző utáni tört számjegyek számát meghatározó számjegy. A 0 érték nem eredményezi a tizedesvessző vagy tört kimenetét. Legfeljebb három hely adható meg a tizedesvessző után; a 3-nál nagyobb p értékek 3-ra módosulnak. Ha a p nincs megadva, a 3-as érték kerül felhasználásra.
Az opcionális l hosszabb formátumot ad meg, beleértve a perceket is, MMmSS.FFs formátumban. A p értéke határozza meg, hogy a tört szerepel-e vagy sem.
Ha ez a változó nincs beállítva, a bash úgy működik, mintha $'\nreal\t%3lR\nuser\t%3lU\nsys\t%3lS' értéke lenne. . Ha az érték nulla, akkor nem jelenik meg az időzítési információ. A formátum karakterlánc megjelenítésekor a program egy záró újsort ad hozzá.
Ha nullánál nagyobb értékre van állítva, a TMOUT az olvasás beépített alapértelmezett időtúllépéseként kezelendő. A select parancs leáll, ha a bemenet nem érkezik meg ezután
TMOUT másodperc, ha a bemenet terminálról érkezik. Az interaktív shellben az értéket a rendszer a másodpercek számaként értelmezi, amennyi ideig kell várni a beviteli sorra az elsődleges prompt kiadása után. A Bash leáll, miután ennyi másodpercet vár, ha nem érkezik meg egy teljes beviteli sor.
Ha be van állítva, a bash értékét annak a könyvtárnak a neveként használja, amelyben a bash ideiglenes fájlokat hoz létre a shell számára.
Ez a változó szabályozza, hogy a shell hogyan működik együtt a felhasználóval és a feladatvezérléssel. Ha ez a változó be van állítva, az egyszavas, átirányítás nélküli egyszerű parancsokat a rendszer egy meglévő leállított job folytatásának jelöltjeként kezeli. Nem megengedett a kétértelműség; ha egynél több job kezdődik a beírt karakterlánccal, akkor a legutóbb elért job kerül kiválasztásra. Ebben az összefüggésben a leállított job neve az elindításához használt parancssor. Ha pontos értékre van állítva, a megadott karakterláncnak pontosan meg kell egyeznie a leállított feladat nevével; ha substring-re van állítva, akkor a megadott karakterláncnak meg kell egyeznie a leállított feladat nevének részkarakterláncával. A substring érték a %? feladatazonosítóval analóg funkcionalitást biztosít (lásd alább a MUNKAVÉGZÉS részt). Ha bármilyen más értékre van állítva, akkor a megadott karakterláncnak egy leállított job nevének előtagjának kell lennie; ez a %string feladatazonosítóhoz hasonló funkcionalitást biztosít.
A két vagy három karakter, amely az előzmények bővítését és tokenizálását szabályozza (lásd alább az TÖRTÉNELEM BŐVÍTÉSÉT). Az első karakter a történetbővítés karakter, az a karakter, amely a történelembővítés kezdetét jelzi, általában `!'. A második karakter a gyors helyettesítés karakter, amely az előzőleg beírt parancs ismételt futtatására szolgál, és a parancsban az egyik karakterláncot egy másikkal helyettesíti. Az alapértelmezés a `^'. Az opcionális harmadik karakter az a karakter, amely azt jelzi, hogy a sor fennmaradó része megjegyzés, ha egy szó első karaktereként található, általában `#'. Az előzmények megjegyzés karaktere a sorban fennmaradó szavak előzményhelyettesítését kihagyja. Ez nem feltétlenül okozza, hogy a shell elemző a sor többi részét megjegyzésként kezelje.
A Bash egydimenziós indexelt és asszociatív tömbváltozókat biztosít. Bármely változó használható indexelt tömbként; a beépített declare kifejezetten deklarál egy tömböt. A tömb méretének nincs maximális korlátja, és nincs olyan követelmény sem, hogy a tagokat egymás mellett kell indexelni vagy hozzárendelni. Az indexelt tömbökre egész számokat használnak (beleértve az aritmetikai kifejezéseket is), és nulla alapúak; Az asszociatív tömbökre tetszőleges karakterláncok segítségével hivatkozunk. Hacsak másként nem jelezzük, az indexelt tömb indexeinek nem negatív egész számoknak kell lenniük.
A rendszer automatikusan létrehoz egy indexelt tömböt, ha bármely változó a név[alindex]=érték szintaxis használatával van hozzárendelve. Az alindexet a rendszer aritmetikai kifejezésként kezeli, amelynek ki kell számítania egy számra. Egy indexelt tömb kifejezett deklarálásához használja a declare -a name parancsot (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt). declare -a name[alsóindex] szintén elfogadott; az alindexet figyelmen kívül hagyja.
Az asszociatív tömbök a declare -A name használatával jönnek létre.
Az attribútumok megadhatók egy tömbváltozóhoz a declare és a readonly beépített modulok használatával. Minden attribútum egy tömb minden tagjára vonatkozik.
A tömbök a név=(érték1 ... értékn) formájú összetett hozzárendelésekkel vannak hozzárendelve >), ahol minden érték a következő formátumú lehet: [alindex]=karakterlánc. Az indexelt tömb-hozzárendelésekhez nincs szükség másra, mint a karakterláncra. A lista minden értéke kibővül az alább, a EXPANSION részben leírt shell-bővítésekkel. Az indexelt tömbökhöz való hozzárendeléskor, ha megadják az opcionális zárójeleket és az alsó indexet, az index hozzá van rendelve; egyébként a hozzárendelt elem indexe az utasítás által utoljára hozzárendelt index plusz egy. Az indexelés nulláról indul.
Asszociatív tömbhöz való hozzárendeléskor az összetett hozzárendelés szavai lehetnek hozzárendelési utasítások, amelyekhez az alsó index szükséges, vagy szavak listája, amelyet a rendszer váltakozó kulcsok és értékek sorozataként értelmez: name =( kulcs1 érték1 kulcs2 érték2 ...). Ezeket azonosan kezeli a név=( [kulcs1]=érték1 [kulcs2 ]=érték2 ...). A lista első szava határozza meg a fennmaradó szavak értelmezését; a listában szereplő összes hozzárendelésnek azonos típusúnak kell lennie. Kulcs/érték párok használatakor a kulcsok nem hiányozhatnak vagy üresek; a végső hiányzó értéket az üres karakterláncként kezeli.
Ezt a szintaxist a beépített declare is elfogadja. Az egyes tömbelemek a fent bemutatott name[subscript]=value szintaxissal rendelhetők hozzá. Indexelt tömbhöz való hozzárendeléskor, ha a név egy negatív számmal van aláírva, akkor ez a szám a name maximális indexénél eggyel nagyobbnak számít, így a negatív indexek számítanak. vissza a tömb végéről, és a -1 index az utolsó elemre hivatkozik.
A tömb bármely elemére hivatkozni lehet a $ {név[al index]} használatával. A kapcsos zárójelekre azért van szükség, hogy elkerüljük az útvonalnév-kiterjesztéssel kapcsolatos ütközéseket. Ha az alsó index értéke @ vagy *, a szó a név összes tagjára bővül. Ezek az alsó indexek csak akkor különböznek egymástól, ha a szó kettős idézőjelben szerepel. Ha a szó dupla idézőjeles, a $ {név[*]} egyetlen szóra bővül, és az egyes tömbtagok értékét az IFS első karaktere választja el. > speciális változót, és a $ {name[@]} a name minden egyes elemét külön szóvá bővíti. Ha nincsenek tömbtagok, a $ {név[@]} semmivé bővül. Ha a dupla idézőjeles bővítés egy szón belül történik, akkor az első paraméter kiterjesztése az eredeti szó kezdő részéhez, az utolsó paraméter bővítése pedig az eredeti szó utolsó részéhez kapcsolódik. Ez analóg a * és @ speciális paraméterek kiterjesztésével (lásd fent a Speciális paraméterek részt). $ {#név[alirat]} a $ {név[alsóindex hosszára bővül ]}. Ha az al index értéke * vagy @, akkor a kibontás a tömb elemeinek száma. Ha az indexelt tömb elemére hivatkozó alindex nullánál kisebb számra kerül, akkor a rendszer a tömb maximális indexénél eggyel nagyobb értékhez viszonyítva értelmezi, így a negatív indexek visszaszámlálása a tömb végén, és a -1 index az utolsó elemre hivatkozik.
Ha egy tömbváltozóra hivatkozik alsó index nélkül, az megegyezik a 0-ás alsó indexű tömbre való hivatkozással. Minden érvényes alsó indexet használó változóra történő hivatkozás törvényes, és a bash szükség esetén létrehoz egy tömböt.
Egy tömbváltozó beállítottnak tekinthető, ha egy alsó indexhez értéket rendeltek. A null karakterlánc érvényes érték.
Lehetőség van egy tömb kulcsainak (indexeinek) és értékeinek beszerzésére. $ {!név[@]} és $ {!név[*]} bontsa ki a name tömbváltozóhoz rendelt indexekre. A dupla idézőjelben való kezelés hasonló a speciális @ és * paraméterek dupla idézőjelekben történő kiterjesztéséhez.
A beépített unset a tömbök megsemmisítésére szolgál. Az unset name[subscript] megsemmisíti a tömbelemet az alindex indexnél, mind az indexelt, mind az asszociatív tömbök esetében. Az indexelt tömbök negatív indexei a fent leírtak szerint értelmezhetők. A tömbváltozó utolsó elemének visszavonása nem vonja vissza a változó értékét. unset name, ahol a name egy tömb, vagy unset name[ >alsóindex], ahol az alsóindex a * vagy @, eltávolítja a teljes tömböt.
Ha egy változónevet alsó indexszel használ egy parancs argumentumaként, például az unset mellett, a fent leírt szókiterjesztési szintaxis használata nélkül, az argumentum az elérési útnév kiterjesztésének függvénye. Ha az elérési útnév kiterjesztése nem kívánatos, az argumentumot idézőjelbe kell írni.
A declare, a local és a readonly beépített modulok mindegyike elfogad egy -a opciót egy indexelt tömb és egy -A opció asszociatív tömb megadásához. Ha mindkét opció rendelkezésre áll, a -A élvez elsőbbséget. Az read beépített modul elfogadja a -a opciót, hogy a szabványos bemenetről beolvasott szavak listáját hozzárendelje egy tömbhöz. A beépített set és declare tömbértékek olyan módon jelennek meg, amely lehetővé teszi azok hozzárendelésként történő újrafelhasználását.
A kiterjesztés a parancssorban történik, miután azt szavakra bontotta. Hét fajta bővítést hajtanak végre: kapcsos zárójel-kiterjesztés, tilde-kiterjesztés, paraméter- és változóbővítés, parancshelyettesítés, aritmetikai bővítés, szófelosztás és útnév-bővítés.
A bővítések sorrendje: merevítő bővítés; tilde bővítés, paraméter- és változóbővítés, aritmetikai bővítés és parancshelyettesítés (balról jobbra haladva); szóhasadás; és elérési út kiterjesztése.
Azon rendszereken, amelyek támogatni tudják, egy további bővítés is elérhető: folyamathelyettesítés. Ez a tilde, a paraméter, a változó és az aritmetikai bővítéssel és parancshelyettesítéssel egy időben történik.
A bővítések végrehajtása után az eredeti szóban szereplő idézőjeleket a rendszer eltávolítja, kivéve, ha magukat idézték (idézet eltávolítása).
Csak a kapcsos zárójel kiterjesztése, a szófelosztás és az elérési út kiterjesztése növelheti a kiterjesztés szavainak számát; más kiterjesztések egyetlen szót bővítenek ki egyetlen szóra. Ez alól csak a "$@" és a "$ {name[@]} " kiterjesztése képez kivételt. ", és a legtöbb esetben $* és $ {name[*]} a fentiek szerint (lásd: PARAMETERS).
A kapcsos zárójel-kiterjesztés egy olyan mechanizmus, amellyel tetszőleges karakterláncok generálhatók. Ez a mechanizmus hasonló az útvonalnév-kiterjesztéshez, de a létrehozott fájlneveknek nem kell létezniük. A kapcsos zárójellel kibontandó minták egy opcionális bevezető formáját öltik, amelyet vagy vesszővel elválasztott karakterláncok sorozata vagy egy kapcsos zárójelpár közötti sorozatkifejezés követ, majd egy opcionális utóirat. A preambulum a kapcsos zárójelben található minden egyes karakterlánc előtagja, majd az utószöveg hozzáfűződik minden eredményül kapott karakterlánchoz, balról jobbra bővülve.
A zárójel-kiterjesztések beágyazhatók. Az egyes kiterjesztett karakterláncok eredményei nincsenek rendezve; balról jobbra sorrend megmarad. Például az a{d,c,b}e 'ade ace abe'-re bővül.
A sorozatkifejezés a következő formájú: {x..y[..<incr]}, ahol az x és az y egész számok vagy egyedi karakterek, és az incr >, egy opcionális növekmény, egy egész szám. Ha egész számokat ad meg, a kifejezés az x és y közötti minden számra bővül. A megadott egész számok elé 0 kerülhet, hogy minden kifejezést azonos szélességűre kényszerítsen. Ha az x vagy az y nullával kezdődik, a shell megpróbálja rákényszeríteni az összes generált kifejezést, hogy azonos számú számjegyet tartalmazzon, szükség esetén nullázva. Karakterek megadása esetén a kifejezés lexikográfiailag minden karakterre bővül x és y között, beleértve az alapértelmezett C területi beállítást. Vegye figyelembe, hogy az x-nek és az y-nek azonos típusúnak kell lennie. A növekmény megadásakor az egyes kifejezések közötti különbségként használatos. Az alapértelmezett növekmény 1 vagy -1.
A kapcsos zárójelek kiterjesztése minden más bővítés előtt történik, és az eredményben megőrződnek a más bővítésekre jellemző karakterek. Szigorúan szöveges. A Bash nem alkalmaz szintaktikai értelmezést a bővítés kontextusára vagy a kapcsos zárójelek közötti szövegre.
A helyesen kialakított kapcsos zárójel-kiterjesztésnek tartalmaznia kell idézet nélküli nyitó és záró kapcsos zárójelet, valamint legalább egy idézet nélküli vesszőt vagy érvényes sorozatkifejezést. A helytelenül kialakított merevítőt változatlanul hagyjuk. A { vagy , idézőjelben fordított perjel szerepelhet, hogy ne lehessen egy kapcsos zárójelben szereplő kifejezésnek tekinteni. A paraméterbővítéssel kapcsolatos ütközések elkerülése érdekében a $ { karakterlánc nem tekinthető alkalmasnak a kapcsos kapcsos zárójel bővítésére, és a záró }-ig gátolja a kapcsos zárójelek kiterjesztését.
Ezt a konstrukciót általában gyorsírásként használják, ha a generálandó karakterláncok közös előtagja hosszabb, mint a fenti példában:
mkdir /usr/local/src/bash/{old,new,dist,bugs}vagy
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}A kapcsos zárójel-bővítés enyhe inkompatibilitást okoz az sh történelmi verzióival. Az sh nem kezeli kifejezetten a nyitó vagy záró kapcsos zárójeleket, ha azok egy szó részeként jelennek meg, és megőrzi őket a kimenetben. A Bash eltávolítja a kapcsos zárójeleket a szavakból a kapcsos zárójelek kiterjesztésének következtében. Például egy szó, amelyet az sh fájlba fájlként{1,2} ír be, ugyanúgy megjelenik a kimenetben. Ugyanez a szó jelenik meg a file1 file2 néven a bash kiterjesztést követően. Ha szigorúan kompatibilis az sh-val, indítsa el a bash-t a +B opcióval, vagy tiltsa le a kapcsos zárójel bővítését a +B gombbal. > lehetőséget a set parancsra (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt).
Ha egy szó idézőjel nélküli hullámvonal-karakterrel (`~') kezdődik, az első idézetlen perjel előtti összes karakter (vagy az összes karakter, ha nincs idézőjel nélküli perjel) tilde-nek minősül -előtagot. Ha a tilde-előtag egyik karaktere sem szerepel idézőjelben, a tilde-előtag karaktereit a rendszer lehetséges bejelentkezési névként kezeli. Ha ez a bejelentkezési név a null karakterlánc, a tilde helyére a rendszer a HOME shell-paraméter értékére kerül. Ha a HOME nincs beállítva, akkor a rendszer a parancsértelmezőt végrehajtó felhasználó kezdőkönyvtárát helyettesíti. Ellenkező esetben a tilde-előtag lecserélődik a megadott bejelentkezési névhez tartozó saját könyvtárra.
Ha a tilde-előtag `~+', akkor a PWD shell-változó értéke lecseréli a tilde-előtagot. Ha a tilde-előtag `~-', akkor az OLDPWD shell-változó értéke, ha be van állítva, be van cserélve. Ha a tilde-előtagban a tilde-előtagot követő karakterek egy N számból állnak, amelyet opcionálisan egy `+' vagy `-' előtag is tartalmaz, akkor a tilde-előtag lecserélődik a megfelelő elemre a könyvtárból. verem, ahogy azt a dirs beépített modul jeleníti meg, amelyet a tilde-előtag argumentumként hív meg. Ha a tilde-előtagban a tilde-t követő karakterek olyan számból állnak, amelyekben nincs '+' vagy '-', akkor a '+' jelet feltételezi.
Ha a bejelentkezési név érvénytelen, vagy a tilde kiterjesztése sikertelen, a szó változatlan marad.
Minden változó-hozzárendelés ellenőrzi a nem idézett tilde-előtagokat közvetlenül a : vagy az első = után. Ezekben az esetekben tilde kiterjesztést is végeznek. Következésképpen a PATH, MAILPATH és CDPATH hozzárendelésénél használhatunk tildákkal ellátott fájlneveket, és a shell hozzárendeli a kiterjesztett értéket.
A Bash a tilde kiterjesztést is végrehajtja azokon a szavakon, amelyek megfelelnek a változó-hozzárendelés feltételeinek (a fentebb a PARAMETERS részben leírtak szerint), amikor azok egyszerű parancsok argumentumaként jelennek meg. A Bash ezt nem teszi meg, kivéve a fent felsorolt declaration parancsokat, amikor posix módban van.
A $ karakter paraméterbővítést, parancshelyettesítést vagy aritmetikai bővítést vezet be. A kibontandó paraméter neve vagy szimbóluma kapcsos zárójelek közé tehető, amelyek nem kötelezőek, de arra szolgálnak, hogy megvédjék a bővítendő változót a közvetlenül utána következő karakterektől, amelyek a név részeként értelmezhetők.
Ha kapcsos zárójelet használunk, a megfelelő zárójel az első „}”, amelyet nem fordított perjel vagy idézőjeles karakterlánc, és nem egy beágyazott aritmetikai bővítés, parancshelyettesítés vagy paraméterbővítés.
A paraméter értéke be van cserélve. A kapcsos zárójelekre akkor van szükség, ha a parameter egy több számjegyből álló pozícióparaméter, vagy ha a parameter után olyan karakter található, amely nem értelmezhető a név részeként. A paraméter egy shell paraméter a fent leírtak szerint PARAMETERS) vagy egy tömbhivatkozás (Tömbök).
Ha a parameter első karaktere egy felkiáltójel (!), és a parameter nem egy nameref, akkor közvetettségi szintet vezet be. A Bash a többi paraméter kibontásával kapott értéket használja új paraméterként; ez azután kibővül, és ez az érték kerül felhasználásra a kiterjesztés többi részében, nem pedig az eredeti paraméter kiterjesztése. Ezt közvetett bővítésnek nevezik. Az érték függ a hullámvonal-bővítéstől, a paraméterbővítéstől, a parancshelyettesítéstől és az aritmetikai bővítéstől. Ha a parameter egy nameref, akkor a teljes közvetett bővítés végrehajtása helyett a parameter által hivatkozott paraméter nevére bővül. Ez alól kivételt képeznek a $ {!előtag*} és $ {! név[@]} az alábbiakban leírtak szerint. A felkiáltójelnek közvetlenül a bal kapcsos zárójelet kell követnie ahhoz, hogy indirekt kifejezést vezessen be.
Az alábbi esetek mindegyikében a szó tilde-bővítés, paraméterbővítés, parancshelyettesítés és aritmetikai bővítés tárgyát képezi.
Ha nem hajt végre részkarakterlánc-bővítést, az alább dokumentált űrlapok (pl. :-) használatával a bash tesztel egy beállítatlan vagy nulla paramétert. A kettőspont elhagyása csak olyan paraméter tesztjét eredményezi, amely nincs beállítva.
Használja az alapértelmezett értékeket. Ha a parameter értéke nincs beállítva vagy nulla, akkor a word szó kibővítése lecserélődik. Ellenkező esetben a paraméter értéke behelyettesítésre kerül.
Alapértelmezett értékek hozzárendelése. Ha a parameter érték nincs beállítva vagy nulla, akkor a word kiterjesztése a parameter-hez van rendelve. A paraméter értéke ezután behelyettesítésre kerül. Pozíciós paraméterek és speciális paraméterek ilyen módon nem rendelhetők hozzá.
Hiba megjelenítése, ha nulla vagy nincs beállítva. Ha a paraméter nulla vagy nincs beállítva, akkor a word kiterjesztése (vagy egy erre vonatkozó üzenet, ha a word nincs jelen) a szabványba kerül. hiba, és a shell, ha nem interaktív, kilép. Ellenkező esetben a paraméter értéke behelyettesítésre kerül.
Használjon alternatív értéket. Ha a parameter nulla vagy nincs beállítva, akkor semmi sem kerül behelyettesítésre, ellenkező esetben a word kiterjesztés behelyettesítésre kerül.
Részkarakterlánc-bővítés. A paraméter értékének legfeljebb hosszúságú karakterére bővül, az eltolás által megadott karaktertől kezdve. Ha a paraméter a @, egy @ vagy * jelölésű indexelt tömb, vagy egy asszociatív tömbnév, akkor az eredmény különböznek az alábbiakban leírtak szerint. Ha a length értéket kihagyjuk, a paraméter értékének részkarakterláncára bővül, az offset által megadott karaktertől kezdve és az érték végéig . A hosszúság és az eltolás aritmetikai kifejezések (lásd alább az ARITMETIKAI ÉRTÉKELÉS részt).
Ha az eltolás nullánál kisebb számot ad, akkor az értéket a rendszer a paraméter értékének végéhez képest karakteres eltolásként használja. Ha a hosszúság értéke nullánál kisebb szám, akkor a rendszer a karakterek számának eltolásaként értelmezi a paraméter értékének végétől, és nem a karakterek számától. az eltolás és az eredmény közötti karakterek. Vegye figyelembe, hogy a negatív eltolást legalább egy szóközzel el kell választani a kettősponttól, nehogy összekeverjék a :- kiterjesztéssel.
Ha a paraméter értéke @, akkor az eredmény hosszúság pozícióparaméter, amely az eltolás-tól kezdődik. A negatív eltolást a rendszer a legnagyobb pozícióparaméternél nagyobb értékhez viszonyítva veszi, így a -1 eltolás az utolsó pozícióparaméterre vonatkozik. Bővítési hibáról van szó, ha a length értéke nullánál kisebb.
Ha a parameter egy indexelt tömbnév, amelyet @ vagy * jellel jelez, az eredmény a tömb $ {parameter kezdetű length tagjai. [eltolás]}. Negatív eltolás a megadott tömb maximális indexénél nagyobb értékhez képest. Bővítési hibáról van szó, ha a length értéke nullánál kisebb.
Az asszociatív tömbre alkalmazott részkarakterlánc-bővítés meghatározatlan eredményeket ad.
A részkarakterlánc indexelése nulla alapú, hacsak nem a pozícióparamétereket használja, ebben az esetben az indexelés alapértelmezés szerint 1-től kezdődik. Ha az eltolás értéke 0, és a helyzeti paramétereket használja, akkor a $0 előtagja a lista előtt.
Az előtagnak megfelelő nevek. Kibővíti azon változók nevére, amelyek neve előtaggal kezdődik, elválasztva a változó első karakterével.
IFS speciális változó. Ha a @ karaktert használja, és a kiterjesztés idézőjelben jelenik meg, minden változónév külön szóvá bővül.
A tömbkulcsok listája. Ha a name egy tömbváltozó, akkor a name-hez rendelt tömbindexek (kulcsok) listájára bővül. Ha a name nem egy tömb, akkor 0-ra bővül, ha a name be van állítva, ellenkező esetben nullára. Ha a @ karaktert használja, és a kiterjesztés dupla idézőjelben jelenik meg, minden billentyű külön szóvá bővül.
Paraméter hossza. A paraméter értékének karakterekben megadott hossza be van cserélve. Ha a paraméter értéke * vagy @, akkor a helyettesített érték a pozícióparaméterek száma. Ha a paraméter egy * vagy @ előtaggal ellátott tömbnév, akkor a helyettesített érték a tömb elemeinek száma. Ha a parameter egy negatív számmal aláírt indexelt tömbnév, akkor ezt a számot a rendszer a paraméter maximális indexénél eggyel nagyobbnak tekinti, így a negatív indexek a a tömb végén, és a -1 index az utolsó elemre hivatkozik.
Távolítsa el a megfelelő előtagmintát. A szót a rendszer kibontja, hogy egy mintát hozzon létre, akárcsak az elérési út kiterjesztésénél, és a Mintaillesztés részben leírt szabályok szerint illeszkedik a paraméter kiterjesztett értékéhez. lent. Ha a minta megegyezik a paraméter értékének kezdetével, akkor a kibontás eredménye a paraméter kibontott értéke a legrövidebb egyező mintával (a `` #'' kis- és nagybetű) vagy a leghosszabb egyező minta (a ``##'' kis- és nagybetű) törölve. Ha a paraméter értéke @ vagy *, akkor a mintaeltávolítási műveletet a rendszer az egyes pozícióparaméterekre felváltva alkalmazza, és a kibontás az eredmény lista. Ha a parameter egy @ vagy * előtaggal jelölt tömbváltozó, akkor a mintaeltávolítási műveletet a rendszer a tömb minden tagjára felváltva alkalmazza, és bővítés az eredménylista.
Távolítsa el a megfelelő utótagmintát. A szót a rendszer kibontja, hogy egy mintát hozzon létre, akárcsak az elérési út kiterjesztésénél, és a Mintaillesztés részben leírt szabályok szerint illeszkedik a paraméter kiterjesztett értékéhez. lent. Ha a minta egyezik a paraméter kiterjesztett értékének utolsó részével, akkor a kibontás eredménye a paraméter kibontott értéke a legrövidebb egyező mintával (a ``%'' kis- és nagybetű) vagy a leghosszabb egyező minta (a ``%%'' kis- és nagybetű) törölve. Ha a paraméter értéke @ vagy *, akkor a mintaeltávolítási műveletet a rendszer az egyes pozícióparaméterekre felváltva alkalmazza, és a kibontás az eredmény lista. Ha a parameter egy @ vagy * előtaggal jelölt tömbváltozó, akkor a mintaeltávolítási műveletet a rendszer a tömb minden tagjára felváltva alkalmazza, és bővítés az eredménylista.
Mintahelyettesítés. A minta kibővül, hogy egy mintát hozzon létre, akárcsak az útvonalnév kibontásánál, a Paraméter kibővül, és a minta leghosszabb egyezését az értékével helyettesíti karakterlánc. A mérkőzés az alábbi Mintaillesztés részben leírt szabályok szerint történik. Ha a minta / karakterrel kezdődik, akkor a minta minden egyezése karakterláncra kerül lecserélésre. Általában csak az első meccset cserélik le. Ha a minta a következővel kezdődik: #, akkor egyeznie kell a paraméter kiterjesztett értékével. Ha a minta a következővel kezdődik: %, akkor egyeznie kell a paraméter kiterjesztett értékével. Ha a string értéke null, a minta egyezései törlődnek, és a következő / minta elhagyható. Ha a nocasematch shell opció engedélyezve van, az egyezés az alfabetikus karakterek kis- és nagybetűitől függetlenül történik. Ha a paraméter értéke @ vagy *, akkor a helyettesítési műveletet a rendszer az egyes pozícióparaméterekre felváltva alkalmazza, és a kibontás az eredmény lista. Ha a parameter egy @ vagy * előtaggal jelölt tömbváltozó, akkor a helyettesítési műveletet a rendszer a tömb minden tagjára felváltva alkalmazza, és a kiterjesztés az eredmény lista.
Az eset módosítása. Ez a kiterjesztés módosítja az alfabetikus karakterek kis- és nagybetűit a paraméterben. A minta kibővül, hogy egy mintát hozzon létre, akárcsak az elérési útnév kibontásánál. A paraméter kibővített értékének minden egyes karakterét a minta alapján teszteljük, és ha egyezik a mintával, a kis- és nagybetűket a rendszer átalakítja. A minta nem próbálhat meg egynél több karaktert megegyezni. A ^ operátor a mintának megfelelő kisbetűket nagybetűvé alakítja; a , operátor a megfelelő nagybetűket kisbetűvé alakítja. A ^^ és ,, kiterjesztések minden egyező karaktert a kibontott értékké konvertálnak; a ^ és , bővítmények egyeznek, és csak a kibontott érték első karakterét alakítják át. Ha a mintát kihagyja, a rendszer ?-ként kezeli, amely minden karakterhez illeszkedik. Ha a paraméter értéke @ vagy *, a kis- és nagybetűk módosítási műveletei sorra alkalmazzák az egyes pozícióparamétereket, és a kibontás az eredménylista lesz. Ha a paraméter egy @ vagy * előtaggal jelölt tömbváltozó, akkor a kis- és nagybetűk módosítási művelete a tömb minden tagjára sorra kerül, és a bővítés az eredménylista.
Paraméter-átalakítás. A kiterjesztés vagy a paraméter értékének átalakítása, vagy magára a paraméterre vonatkozó információ, az operátor értékétől függően. Minden operátor egyetlen betűből áll:
A kiterjesztés egy karakterlánc, amely a paraméter értéke kisbetűs alfabetikus karakterekkel nagybetűssé alakítva.
A kiterjesztés egy karakterlánc, amely a paraméter értéke, és az első karaktert nagybetűssé alakítjuk, ha az alfabetikus.
A kiterjesztés egy karakterlánc, amely a paraméter értéke nagybetűs alfabetikus karakterekkel kisbetűssé alakítva.
A kiterjesztés egy karakterlánc, amely a paraméter értéke olyan formátumban, amely újra felhasználható bemenetként.
A kiterjesztés egy karakterlánc, amely a paraméter értéke, és a fordított perjeles escape szekvenciák ki vannak bontva, mint a $'...' idézőmechanizmus esetében.
A kiterjesztés egy karakterlánc, amely a paraméter értékének kibontásának eredménye, mintha egy prompt karakterlánc lenne (lásd alább a PROMPTING részt).
A kiterjesztés egy hozzárendelési utasítás vagy declare parancs formájában lévő karakterlánc, amely kiértékelés esetén újra létrehozza a paramétert annak attribútumával és értékével.
Előállítja a paraméter értékének esetlegesen idézett változatát, azzal az eltéréssel, hogy az indexelt és asszociatív tömbök értékeit idézőjeles kulcs-érték párok sorozataként írja ki (lásd fent Tömbök ).
A kiterjesztés egy karakterlánc, amely a paraméter attribútumait képviselő jelzőértékekből áll.
Ha a paraméter értéke @ vagy *, a műveletet a rendszer az egyes pozícióparaméterekre felváltva alkalmazza, és a kibontás az eredménylista lesz. Ha a parameter egy @ vagy * feliratú tömbváltozó, akkor a művelet a tömb minden egyes tagjára sorra kerül, és a bővítés az eredményül kapott lista.
A kiterjesztés eredményét szófelosztás és elérési út-bővítés szabályozza az alábbiak szerint.
A Parancshelyettesítés lehetővé teszi, hogy a parancs kimenete lecserélje a parancs nevét. Két forma létezik:
$(command )
vagy
`command`
A Bash úgy hajtja végre a kibontást, hogy végrehajtja a command parancsot egy subshell-környezetben, és lecseréli a parancshelyettesítést a parancs szabványos kimenetére, a záró sorok törlésével. A beágyazott újsorok nem törlődnek, de szófelosztás közben eltávolíthatók. A parancshelyettesítő $ (cat fájl) helyettesíthető a megfelelő, de gyorsabb $ (< >fájl).
Ha a helyettesítés régi stílusú visszaidéző formáját használják, a fordított perjel megtartja szó szerinti jelentését, kivéve, ha a $, ` vagy \ követi. Az első fordított idézőjel, amelyet nem előz meg fordított perjel, befejezi a parancshelyettesítést. A $ ( parancs ) űrlap használatakor a zárójelben lévő összes karakter alkotja a parancsot; egyiket sem kezelik speciálisan.
A parancshelyettesítések beágyazhatók. A fordított idézőjelű űrlap használatakor a beágyazáshoz a belső idézőjeleket fordított perjelekkel szüntesse meg.
Ha a helyettesítés dupla idézőjelben jelenik meg, akkor a szófelosztás és az elérési út kibővítése nem történik meg az eredményeken.
Az aritmetikai bővítés lehetővé teszi egy aritmetikai kifejezés kiértékelését és az eredmény helyettesítését. Az aritmetikai bővítés formátuma:
$((expression))
A kifejezést a rendszer úgy kezeli, mintha dupla idézőjelben lenne, de a zárójelben lévő idézőjeleket nem kezeli külön. A kifejezésben szereplő összes token paraméter- és változóbővítésen, parancshelyettesítésen és idézőjel eltávolításon esik át. Az eredményt a rendszer a kiértékelendő aritmetikai kifejezésként kezeli. Az aritmetikai bővítések beágyazhatók.
Az értékelés az alábbi, ARITMETIKAI ÉRTÉKELÉS alatt felsorolt szabályok szerint történik. Ha a kifejezés érvénytelen, a bash hibaüzenetet nyomtat, és nem történik helyettesítés.
A Folyamat helyettesítés lehetővé teszi, hogy a folyamat bemenetére vagy kimenetére fájlnévvel hivatkozzanak. A formája <(lista ) vagy >(list >>). A folyamat listája aszinkron módon fut, és bemenete vagy kimenete fájlnévként jelenik meg. Ez a fájlnév argumentumként kerül átadásra az aktuális parancsnak a kiterjesztés eredményeként. Ha a >(lista ) űrlapot használja, a fájlba írás a lista bemenetét adja. Ha a <(list ) űrlapot használja, az argumentumként átadott fájlt be kell olvasni a lista kimenetének eléréséhez. . A folyamathelyettesítés azokon a rendszereken támogatott, amelyek támogatják a névvel ellátott csöveket (FIFO-k) vagy a /dev/fd módszert a nyitott fájlok elnevezésére.
Ha elérhető, a folyamathelyettesítés a paraméter- és változóbővítéssel, a parancshelyettesítéssel és az aritmetikai bővítéssel egyidejűleg történik.
A shell átvizsgálja a paraméterbővítés, a parancshelyettesítés és az aritmetikai kiterjesztések eredményeit, amelyek nem fordultak elő idézőjelek között szófelosztás esetén.
A shell az IFS minden egyes karakterét határolóként kezeli, és a többi kiterjesztés eredményét szavakra bontja, ezeket a karaktereket mezőzáróként használva. Ha az IFS nincs beállítva, vagy az értéke pontosan <space><tab><newline>, az alapértelmezett, akkor a <space> sorozatai , <tab> és <newline> az előző kiterjesztések eredményeinek elején és végén figyelmen kívül marad, és minden IFS sorozatot figyelmen kívül hagyunk. a nem elején vagy végén lévő karakterek a szavak elválasztására szolgál. Ha az IFS értéke az alapértelmezetttől eltérő, akkor a szóköz, tab és újsor szóköz karakterek sorozata figyelmen kívül hagyják a szó elején és végén, mindaddig, amíg a szóköz karakter az IFS értékben van (egy IFS szóköz karakter). Az IFS bármely olyan karaktere, amely nem IFS szóköz, valamint a szomszédos IFS szóközkarakterek elhatárol egy mezőt. Az IFS szóköz karakterek sorozatát is határolóként kezeljük. Ha az IFS értéke null, akkor nem történik szófelosztás.
Az explicit nullargumentumok ( " " vagy ' ' ) megmaradnak, és üres karakterláncként adják át a parancsoknak. A nem idézett implicit nullargumentumok, amelyek az értéktelen paraméterek kibővítéséből származnak, eltávolításra kerülnek. Ha egy érték nélküli paramétert dupla idézőjelbe bontunk ki, akkor null argumentum keletkezik, amely megmarad, és üres karakterláncként kerül átadásra a parancsnak. Ha egy idézett nullargumentum egy olyan szó részeként jelenik meg, amelynek kiterjesztése nem nulla, a null argumentum eltávolításra kerül. Vagyis a -d' ' szóból -d lesz a szófelosztás és a nullargumentum eltávolítása után.
Vegye figyelembe, hogy ha nem történik bővítés, akkor nem történik felosztás.
A szófelosztás után, hacsak nincs beállítva a -f opció, a bash minden szóban megvizsgálja a *, ? karaktereket. > és [. Ha ezen karakterek valamelyike megjelenik, és nincs idézőjelben, akkor a szót a rendszer mintának tekinti, és helyettesíti a mintának megfelelő fájlnevek ábécé sorrendben rendezett listájával (lásd: Mintaillesztés > lent). Ha nem található egyező fájlnév, és a nullglob parancsértelmező nincs engedélyezve, a szó változatlan marad. Ha a nullglob opció be van állítva, és nem található egyezés, a szó eltávolítva. Ha a failglob shell beállítás be van állítva, és nem található egyezés, a rendszer hibaüzenetet nyomtat, és nem hajtja végre a parancsot. Ha a nocaseglob parancsértelmező engedélyezve van, akkor az egyezés az alfabetikus karakterek kis- és nagybetűitől függetlenül történik. Ha egy mintát használunk az elérési út kibővítésére, akkor a név elején vagy közvetlenül a perjel után található ``.'' karaktert kifejezetten meg kell egyezni, kivéve, ha a shell opció dotglob > be van állítva. A ``.'' és ``..'' fájlneveknek mindig kifejezetten egyeznie kell, még akkor is, ha a dotglob be van állítva. Más esetekben a ``.'' karaktert nem kezeljük külön. Útvonalnév egyeztetésekor a perjel karaktert mindig kifejezetten egy perjellel kell egyeztetni a mintában, de más egyező kontextusban egy speciális mintakarakterrel is egyeztethető, amint azt alább, a Mintaillesztés részben ismertetjük. A nocaseglob, nullglob, leírását lásd alább a shopt leírásában a SHELL BEÉPÍTETT PARANCSOK alatt. failglob és dotglob shell beállításokat.
A GLOBIGNORE shell-változó használható a mintának megfelelő fájlnevek készletének korlátozására. Ha a GLOBIGNORE be van állítva, akkor minden egyező fájlnév, amely a GLOBIGNORE egyik mintájának is megfelel, törlődik az egyezések listájáról. Ha a nocaseglob beállítás be van állítva, a GLOBIGNORE mintákkal való egyeztetés a kis- és nagybetűktől függetlenül történik. A . és .. fájlneveket a rendszer mindig figyelmen kívül hagyja, ha a GLOBIGNORE be van állítva, és nem nulla. Ha azonban a GLOBIGNORE értéket nem nulla értékre állítja, akkor a dotglob shell opció engedélyezhető, így minden más karakterrel kezdődő fájlnév. mérkőzés. A régi, a .-vel kezdődő fájlnevek figyelmen kívül hagyásához használt viselkedéshez tegye a .*-t a GLOBIGNORE minták egyikévé. A dotglob opció le van tiltva, ha
A GLOBIGNORE nincs beállítva. A mintaillesztés tiszteletben tartja az extglob shell opció beállítását.
Mintaillesztés
Bármely karakter, amely egy mintában megjelenik, az alább leírt speciális mintakaraktereken kívül, megfelel önmagának. Előfordulhat, hogy a NUL karakter nem fordul elő a mintában. A fordított perjel kihagyja a következő karaktert; a kilépő fordított perjelt az illesztéskor el kell vetni. A speciális mintakaraktereket idézőjelbe kell írni, ha szó szerint illesztjük őket.
A speciális minta karaktereinek jelentése a következő:
- *
Bármely karakterláncnak megfelel, beleértve a null karakterláncot is. Ha a globstar shell opció engedélyezve van, és a * az elérési út kibővítési kontextusában van használva, akkor az egyetlen mintaként használt két szomszédos * egyezik. minden fájl és nulla vagy több könyvtár és alkönyvtár. Ha / követi, akkor két szomszédos * csak a könyvtáraknak és alkönyvtáraknak fog egyezni.
- ?
Bármely karakterrel egyezik.
- [...]
Megfelel a mellékelt karakterek bármelyikének. A kötőjellel elválasztott karakterpár tartománykifejezést jelöl; minden karakter, amely e két karakter közé esik, beleértve az aktuális területi beállítás leválogatási sorrendjét és karakterkészletét, illeszkedik. Ha a [ karaktert követő első karakter ! vagy ^, akkor a be nem zárt karakterek illeszkednek. A karakterek rendezési sorrendjét a tartománykifejezésekben az aktuális területi beállítás és az LC_COLLATE vagy az LC_ALL shell-változók értéke határozza meg, ha be van állítva. A tartománykifejezések hagyományos értelmezéséhez, ahol az [a-d] egyenértékű az [abcd]-vel, állítsa az LC_ALL shell változó értékét a következőre:C, vagy engedélyezze a globasciiranges shell opciót. A - akkor egyezhet meg, ha a készlet első vagy utolsó karaktereként szerepel. A ] akkor egyezhet meg, ha a készlet első karaktereként szerepel.
A [ és ] belül a karakterosztályok a [:class szintaxis használatával adhatók meg >:], ahol az class a következő, a POSIX szabványban meghatározott osztályok egyike:
alnum alpha ascii blank cntrl digit graph lower print punct space upper word xdigitEgy karakterosztály megfelel az adott osztályhoz tartozó bármely karakternek. A szó karakterosztály megfelel a betűknek, a számoknak és a _ karakternek.
A [ és ] belül egyenértékűségi osztály adható meg a [=c szintaxis használatával =], amely megegyezik a c karakterrel megegyező leválogatási súllyal (az aktuális területi beállítás által meghatározott) összes karakterrel.
A [ és ] kifejezésekben a [.szimbólum.] szintaxis megegyezik a leválogatással szimbólum szimbólum.
Ha az extglob shell opció engedélyezve van a beépített shopt használatával, akkor a rendszer több kiterjesztett mintaillesztő operátort ismer fel. A következő leírásban a minta-lista egy vagy több mintát tartalmazó lista, amelyeket | jel választ el. Összetett minták a következő alminták közül egy vagy több felhasználásával alakíthatók ki:
?( pattern-list ) Megfelel a megadott minták nulla vagy egy előfordulásának
*( pattern-list ) A megadott minták nulla vagy több előfordulásával egyezik meg
+( pattern-list ) Megfelel a megadott minták egy vagy több előfordulásának
@( pattern-list ) Megfelel az egyik megadott mintának
!( pattern-list ) Bármihez passzol, kivéve a megadott minták egyikét
A hosszú karakterláncok bonyolult kiterjesztett mintaillesztése lassú, különösen akkor, ha a minták váltakozásokat tartalmaznak, és a karakterláncok több egyezést tartalmaznak. Gyorsabb lehet, ha külön egyezéseket használ a rövidebb karakterláncokhoz, vagy karakterláncok tömbjét egyetlen hosszú karakterlánc helyett.
Az előző bővítések után a \, ' és " karakterek idézőjel nélküli előfordulásai, amelyek nem a fenti bővítések egyikéből származnak, eltávolításra kerülnek.
A parancs végrehajtása előtt a parancs bemenete és kimenete átirányítható a shell által értelmezett speciális jelölések használatával. Az átirányítás lehetővé teszi a parancsok fájlkezelőinek megkettőzését, megnyitását, bezárását, különböző fájlokra való hivatkozást, valamint módosíthatja a parancs által olvasott és írt fájlokat. Az átirányítás a fájlkezelők módosítására is használható az aktuális shell-végrehajtási környezetben. A következő átirányítási operátorok az egyszerű parancsok előtt vagy bárhol megjelenhetnek, vagy követhetnek egy parancsot. Az átirányítások feldolgozása a megjelenésük sorrendjében történik, balról jobbra.
Minden olyan átirányítást, amelyet egy fájlleíró szám előzhet meg, megelőzhet egy {varname} formájú szó. Ebben az esetben a >&- és <&- kivételével minden átirányítási operátorhoz a shell 10-nél nagyobb vagy azzal egyenlő fájlleírót rendel, és hozzárendeli a varname-hez. Ha a >&- vagy <&- előtt a {varname} szerepel, a varname értéke határozza meg a bezárandó fájlleírót. Ha a {varname} meg van adva, az átirányítás a parancs hatókörén kívül is megmarad, így a shell programozó maga kezelheti a fájlleírót.
A következő leírásokban, ha a fájlleíró száma kimaradt, és az átirányítási operátor első karaktere <, akkor az átirányítás a szabványos bemenetre vonatkozik (0 fájlleíró). Ha az átirányítási operátor első karaktere >, akkor az átirányítás a szabványos kimenetre vonatkozik (1. fájlleíró).
A következő leírásokban az átirányítási operátort követő szót, hacsak másképp nem jelezzük, kapcsos zárójel-bővítés, hullámvonal-kiterjesztés, paraméter- és változóbővítés, parancshelyettesítés, aritmetikai bővítés, idézőjel-eltávolítás, elérési út-bővítés és szófelosztás vonatkozik. Ha egynél több szóra bővül, a bash hibát jelez.
Vegye figyelembe, hogy az átirányítások sorrendje jelentős. Például a parancs
ls > dirlist 2>&1
a normál kimenetet és a normál hibát is a dirlist fájlba irányítja, miközben a parancs
ls 2>&1 > dirlist
csak a szabványos kimenetet irányítja a dirlist fájlba, mert a szabványos hiba megkettőződött a szabványos kimenetről, mielőtt a szabványos kimenetet átirányították volna a dirlist fájlba.
A Bash több fájlnevet kezel, különösen akkor, ha átirányításokhoz használják őket, amint azt a következő táblázat ismerteti. Ha az operációs rendszer, amelyen a bash fut, biztosítja ezeket a speciális fájlokat, a bash ezeket fogja használni; ellenkező esetben az alábbiakban leírt viselkedéssel belsőleg emulálja őket.
- /dev/fd/fd
Ha az fd egy érvényes egész szám, akkor az fd fájlleíró megkettőződik.
- /dev/stdin
A 0 fájlleíró megkettőződött.
- /dev/stdout
Az 1. fájlleíró megkettőződött.
- /dev/stderr
A 2. fájlleíró megkettőződött.
- /dev/tcp/host/port
Ha a host egy érvényes gazdagépnév vagy internetcím, a port pedig egy egész portszám vagy szolgáltatásnév, a bash megpróbálja megnyitni a megfelelő TCP-foglalatot. .
- /dev/udp/host/port
Ha a host egy érvényes gazdagépnév vagy internetcím, a port pedig egy egész portszám vagy szolgáltatásnév, a bash megpróbálja megnyitni a megfelelő UDP socketet. .
Ha nem sikerül megnyitni vagy létrehozni egy fájlt, akkor az átirányítás sikertelen lesz.
A 9-nél nagyobb fájlleírókat használó átirányításokat óvatosan kell használni, mivel ütközhetnek a shell által belsőleg használt fájlleírókkal.
A bemenet átirányítása azt eredményezi, hogy a fájl, amelynek a neve a word kiterjesztéséből adódik, megnyílik olvasásra az n fájlleírón, vagy a szabványos bemeneten (0 fájlleíró), ha n nincs megadva.
A bemenet átirányításának általános formátuma:
[n]<word
A kimenet átirányítása azt eredményezi, hogy a fájl, amelynek neve a word kibővítéséből adódik, megnyílik az n fájlleíróra való íráshoz, vagy a szabványos kimenetre (fájlleíró 1), ha n nincs megadva. Ha a fájl nem létezik, akkor létrejön; ha létezik, akkor nulla méretűre csonkoljuk.
A kimenet átirányításának általános formátuma:
[n]>word
Ha az átirányítási operátor a >, és a noclobber opció engedélyezve van a set beépített modulnál, akkor az átirányítás sikertelen lesz, ha a fájl, amelynek nevét eredményezi a word kiterjesztéséből létezik, és egy normál fájl. Ha az átirányítási operátor a >|, vagy az átirányítási operátor a > és a noclobber opció a beépített set parancs nincs engedélyezve, az átirányítás akkor is megkísérli, ha a word nevű fájl létezik.
A kimenet ilyen módon történő átirányítása azt eredményezi, hogy a fájl, amelynek neve a word kibővítéséből adódik, megnyílik az n fájlleíróhoz vagy a szabványos kimenethez (1. fájlleíró) való hozzáfűzés céljából. ha az n nincs megadva. Ha a fájl nem létezik, akkor létrejön.
A kimenet hozzáfűzésének általános formátuma a következő:
[n]>>word
Ez a konstrukció lehetővé teszi a szabványos kimenet (1. fájlleíró) és a szabványos hibakimenet (2. fájlleíró) átirányítását arra a fájlra, amelynek neve a word kiterjesztése.
A szabványos kimenet és a standard hiba átirányításának két formátuma van:
&>word
és
>&word
A két forma közül az elsőt részesítjük előnyben. Ez szemantikailag egyenértékű
>word 2>&1
A második űrlap használatakor a szó nem bővülhet számmá vagy --tá. Ha igen, akkor kompatibilitási okokból más átirányítási operátorok alkalmazzák (lásd alább a Fájlleírók sokszorosítása részt).
Ez a konstrukció lehetővé teszi mind a szabványos kimenet (1. fájlleíró), mind a szabványos hibakimenet (2. fájlleíró) hozzáfűzését ahhoz a fájlhoz, amelynek neve a word kiterjesztése.
A szabványos kimenet és a standard hiba hozzáfűzésének formátuma a következő:
&>>word
Ez szemantikailag egyenértékű
>>word 2>&1
(lásd alább a Fájlleírók sokszorosítása című részt).
Ez a fajta átirányítás arra utasítja a shellt, hogy olvassa be a bemenetet az aktuális forrásból, amíg meg nem jelenik egy olyan sor, amely csak határolót tartalmaz (az utolsó üres karakterek nélkül). Ezután az addig a pontig beolvasott összes sor standard bemenetként (vagy n fájlleíróként, ha az n meg van adva) egy parancshoz használható.
Az itt található dokumentumok formátuma:
[n]<<[-]word here-document delimiter
A szón nem történik paraméter- és változóbővítés, parancshelyettesítés, aritmetikai bővítés vagy elérési útnévbővítés. Ha a szó bármely része idézőjelbe kerül, a határoló a szó idézőjelének eltávolításának eredménye, és az itt található dokumentumban lévő sorok nem kiterjesztett. Ha a szó nem idézőjel, az itt-dokumentum minden sorát paraméterbővítésnek, parancshelyettesítésnek és aritmetikai bővítésnek vetik alá, a rendszer figyelmen kívül hagyja az \<newline> karaktersorozatot, és A \ karaktert kell használni a \, $ és ` karakterek idézésére.
Ha az átirányítási operátor a <<-, akkor az összes bevezető tabulátor karakter le lesz vonva a beviteli sorokról és a határolót tartalmazó sorból. Ez lehetővé teszi, hogy a shell-szkriptekben található dokumentumok természetes módon behúzhatók legyenek.
A dokumentumok egy változata, a formátum:
[n]<<<word
A szó tilde-bővítésen, paraméter- és változóbővítésen, parancshelyettesítésen, aritmetikai bővítésen és idézőjel-eltávolításon esik át. Az elérési útnév-bővítés és a szófelosztás nem történik meg. Az eredmény egyetlen karakterláncként jelenik meg, újsorral hozzáfűzve a parancshoz a szabványos bemenetén (vagy az n fájlleíróhoz, ha az n meg van adva).
Az átirányítási operátor
[n]<&word
a bemeneti fájlleírók megkettőzésére szolgál. Ha a szó egy vagy több számjegyre bővül, az n-vel jelölt fájlleíró a fájlleíró másolata lesz. Ha a word számjegyei nem adnak meg bevitelre megnyitott fájlleírót, átirányítási hiba történik. Ha a word értéke -, akkor az n fájlleíró bezárul. Ha az n nincs megadva, a szabványos bemenet (0 fájlleíró) kerül felhasználásra.
Az irányító
[n]>&word
hasonlóan használatos a kimeneti fájlleírók megkettőzésére. Ha az n nincs megadva, a szabványos kimenet (1. fájlleíró) kerül felhasználásra. Ha a word számjegyei nem adnak meg kimenetre megnyitott fájlleírót, átirányítási hiba történik. Ha a word értéke -, akkor az n fájlleíró bezárul. Különleges eset, ha az n ki van hagyva, és a word nem bővül egy vagy több számjegyre vagy -, a normál kimenet és a standard hiba átirányításra kerülnek a korábban leírtak szerint.
Az átirányítási operátor
[n]<&digit-
áthelyezi a számjegy fájlleírót az n fájlleíróba, vagy a szabványos bemenetre (fájlleíró 0), ha az n nincs megadva. A számjegy bezárásra kerül, miután az n számba került.
Hasonlóképpen, az átirányítási operátor
[n]>&digit-
áthelyezi a digit fájlleírót az n fájlleíróba, vagy a szabványos kimenetet (fájlleíró 1), ha az n nincs megadva.
Az átirányítási operátor
[n]<>word
a fájl, amelynek neve a word kiterjesztése, megnyílik olvasásra és írásra is az n fájlleírón, vagy a 0 fájlleírón, ha n > nincs megadva. Ha a fájl nem létezik, akkor létrejön.
Az Aliasok lehetővé teszik, hogy egy karakterláncot lecseréljenek egy szóra, ha azt egy egyszerű parancs első szavaként használják. A shell egy listát tart fenn azokról az álnevekről, amelyeket az alias és az unalias beépített paranccsal lehet be- és kikapcsolni (lásd alább a SHELL BEÉPÍTETT PARANCSOK című részt). Minden egyszerű parancs első szava, ha nincs idézőjel, ellenőrzi, hogy van-e álneve. Ha igen, ezt a szót az álnév szövege váltja fel. A /, $, ` és = karakterek, valamint a shell bármely metakarakterei vagy a fent felsorolt idéző karakterek nem jelennek meg az álnévben. A helyettesítő szöveg bármilyen érvényes shell-bemenetet tartalmazhat, beleértve a shell metakaraktereit is. A helyettesítő szöveg első szavát a rendszer teszteli az álnevekre, de a kibontandó álnévvel azonos szót másodszor nem bővíti ki. Ez azt jelenti, hogy például az ls alias ls -F névre cserélhető, és a bash nem próbálja meg rekurzívan kibontani a helyettesítő szöveget. Ha az álnév utolsó karaktere üres, akkor az álnevet követő következő parancsszó is ellenőrzi az álnév kiterjesztését.
Az álnevek az alias paranccsal jönnek létre és jelennek meg, és az unalias paranccsal távolíthatók el.
Nincs mechanizmus az argumentumok használatára a helyettesítő szövegben. Ha argumentumokra van szükség, akkor shell függvényt kell használni (lásd alább a FUNKCIÓK részt).
Az álnevek nem bővülnek ki, ha a shell nem interaktív, kivéve, ha az expand_aliases shell opciót a shopt segítségével állítja be (lásd a shopt leírását a alatt >SHELL BEÉPÍTETT PARANCSOK alatt).
Az álnevek meghatározására és használatára vonatkozó szabályok kissé zavarosak. A Bash mindig beolvas legalább egy teljes bemeneti sort, és az összes olyan sort, amely egy összetett parancsot alkot, mielőtt végrehajtaná az adott sorban vagy az összetett parancsot. Az álnevek a parancs olvasásakor bővülnek, nem pedig a parancs végrehajtásakor. Ezért egy másik paranccsal egy sorban megjelenő álnévdefiníció csak a következő bemeneti sor beolvasásáig lép érvénybe. Az adott sorban az álnévdefiníciót követő parancsokat az új álnév nem érinti. Ez a viselkedés függvények végrehajtásakor is probléma. Az álnevek a függvénydefiníció beolvasásakor bővülnek, nem pedig a függvény végrehajtásakor, mivel a függvénydefiníció maga is parancs. Ennek következtében a függvényben meghatározott álnevek csak a függvény végrehajtása után érhetők el. A biztonság kedvéért az alias definícióit mindig külön sorba írja, és ne használja az aliast összetett parancsokban.
Az álneveket szinte minden célra felváltják a shell függvények.
A fentiekben a SHELL GRAMMAR részben leírtak szerint meghatározott shell-függvény egy sor parancsot tárol a későbbi végrehajtáshoz. Ha egy shell-függvény nevét egyszerű parancsnévként használjuk, akkor az adott függvénynévhez tartozó parancsok listája végrehajtásra kerül. A függvények az aktuális shell kontextusában hajtódnak végre; nem jön létre új folyamat ezek értelmezésére (ellentétben egy shell script végrehajtásával). Amikor egy függvényt végrehajtanak, a függvény argumentumai a végrehajtás során a pozíció paramétereivé válnak. A speciális # paraméter frissül, hogy tükrözze a változást. A 0 speciális paraméter változatlan. A FUNCNAME változó első eleme a függvény nevére van állítva, miközben a függvény fut.
A shell-végrehajtási környezet minden egyéb aspektusa megegyezik a függvény és a hívója között, ezekkel a kivételekkel: DEBUG és RETURN trap (lásd a trap< leírását). beépített SHELL BEÉPÍTETT PARANCSOK alatt) nem öröklődnek, hacsak a függvény nem kapta meg a trace attribútumot (lásd a declare leírását). beépített alább) vagy a -o functrace shell opció engedélyezve van a beépített set paraméterrel (ebben az esetben minden függvény örökli a DEBUG és >RETURN trap), és az ERR trap nem öröklődik, hacsak nincs engedélyezve a -o errtrace shell opció.
A függvény helyi változói a beépített local paranccsal deklarálhatók. Általában a változók és azok értékei meg vannak osztva a függvény és a hívója között. Ha egy változó lokálisnak van deklarálva, akkor a változó látható hatóköre az adott függvényre és gyermekeire korlátozódik (beleértve az általa meghívott függvényeket is). A helyi változók „árnyékolják” a korábbi hatókörökben deklarált azonos nevű változókat. Például egy függvényben deklarált lokális változó elrejti az azonos nevű globális változót: a hivatkozások és a hozzárendelések a lokális változóra vonatkoznak, a globális változót változatlanul hagyva. Amikor a függvény visszatér, a globális változó ismét látható.
A shell dinamikus hatókört használ a változók függvényeken belüli láthatóságának szabályozására. A dinamikus hatókörrel a látható változók és azok értékei a függvényhívások sorozatának eredményeként jönnek létre, amelyek hatására a végrehajtás elérte az aktuális függvényt. Egy függvény által látott változó értéke a hívóján belüli értékétől függ, ha van ilyen, attól, hogy a hívó a "globális" hatókör vagy egy másik shell függvény. Ez az az érték is, amelyet a helyi változók deklarációja „árnyékol”, és az az érték, amely visszaáll, amikor a függvény visszatér.
Például, ha egy var változó helyiként van deklarálva a func1 függvényben, és a func1 egy másik func2 függvényt hív meg, a var-ra való hivatkozások a func2-ből a var helyi változóra fognak feloldódni a func1-ből, árnyékolva bármely nevű globális változót. var.
Az unset beépített szintén ugyanazt a dinamikus hatókört használja: ha egy változó lokális az aktuális hatókörhöz képest, az unset érvényteleníti azt; ellenkező esetben az unset a fent leírt módon bármely hívási hatókörben található változóra fog hivatkozni. Ha egy változó az aktuális helyi hatókörben nincs beállítva, az mindaddig az marad, amíg vissza nem állítja az adott hatókörben, vagy amíg a függvény vissza nem tér. Amint a függvény visszatér, a változó egy korábbi hatókörhöz tartozó bármely példánya láthatóvá válik. Ha a hatástalanítás egy korábbi hatókörben lévő változóra hat, akkor az ilyen nevű változó minden olyan példánya látható lesz, amely árnyékolt volt.
A FUNCNEST változó, ha 0-nál nagyobb számértékre van beállítva, meghatározza a függvénybeágyazás maximális szintjét. A korlátot meghaladó függvényhívások a teljes parancs megszakítását okozzák.
Ha a beépített return parancsot végrehajtják egy függvényben, a függvény befejeződik, és a végrehajtás a függvényhívás után következő paranccsal folytatódik. A RETURN csapdához kapcsolódó minden parancs végrehajtásra kerül a végrehajtás folytatása előtt. Amikor egy függvény befejeződik, a pozícióparaméterek és a speciális # paraméter értékei visszaállnak a függvény végrehajtása előtti értékekre.
A függvénynevek és -definíciók a -f kapcsolóval szerepelhetnek a beépített declare vagy typeset parancsok mellett. A -F opció deklarálása vagy beírás csak a függvényneveket jeleníti meg (és opcionálisan a forrásfájlt és a sorszámot, ha a extdebug shell opció engedélyezve van). A függvények exportálhatók, így az alhéjak automatikusan definiálják őket a -f kapcsolóval a beépített exportálásba. A függvénydefiníciókat a beépített unset -f kapcsolóval lehet törölni.
A függvények rekurzívak lehetnek. A FUNCNEST változó használható a függvényhívási verem mélységének és a függvényhívások számának korlátozására. Alapértelmezés szerint a rekurzív hívások száma nincs korlátozva.
A shell bizonyos körülmények között lehetővé teszi az aritmetikai kifejezések kiértékelését (lásd a let és a declare beépített parancsokat, a ( összetett parancsot és a Aritmetikai bővítés). Az értékelés rögzített szélességű egész számokkal történik, a túlcsordulás ellenőrzése nélkül, bár a 0-val való osztás csapdába kerül, és hibaként van megjelölve. Az operátorok, valamint azok precedenciája, asszociativitása és értékei megegyeznek a C nyelven.. Az operátorok alábbi listája egyenlő prioritású operátorok szintjei szerint van csoportosítva, a szintek csökkenő prioritás szerint vannak felsorolva.
változó utónövelés és utócsökkentés
egységes mínusz és plusz
változó előnövekmény és előcsökkentés
logikai és bitenkénti tagadás
hatványozás
szorzás, osztás, maradék
összeadás, kivonás
balra és jobbra bitenkénti eltolás
összehasonlítás
egyenlőség és egyenlőtlenség
bitenként ÉS
bitenkénti exkluzív VAGY
bitenként VAGY
logikus ÉS
logikai VAGY
feltételes operátor
feladat
vessző
A shell-változók megengedettek operandusként; paraméterbővítésre kerül sor a kifejezés kiértékelése előtt. Egy kifejezésen belül a shell-változókra név szerint is hivatkozhatunk a paraméterbővítési szintaxis használata nélkül. A nulla vagy beállítatlan shell-változó 0-ra értékelődik, ha névvel hivatkoznak rá a paraméterbővítési szintaxis használata nélkül. A változó értékét a rendszer aritmetikai kifejezésként értékeli, amikor hivatkozik rá, vagy ha egy olyan változóhoz, amely az declare -i paranccsal kapott integer attribútumot, értéket rendel a rendszer. A null érték 0. A shell változó integer attribútuma nem kell, hogy legyen bekapcsolva, hogy egy kifejezésben használható legyen.
Az egész konstansok a C nyelvi definíciót követik, utótagok vagy karakterkonstansok nélkül. A 0 bevezető konstansokat oktális számként értelmezzük. A kezdő 0x vagy 0X hexadecimális számot jelöl. Egyébként a számok [alap#]n formátumúak, ahol az opcionális alap egy 2 és 64 közötti decimális szám, amely a számtani alapot jelöli, és az n. egy szám abban az alapban. Ha az alap# ki van hagyva, akkor a 10-es bázis kerül felhasználásra. Az n megadásakor, ha nem számjegyre van szükség, a 9-nél nagyobb számjegyeket kisbetűk, a nagybetűk, @ és _ jelentik ebben a sorrendben. Ha az alapszám kisebb vagy egyenlő, mint 36, a kis- és nagybetűk felváltva használhatók a 10 és 35 közötti számok jelölésére.
Az operátorok értékelése fontossági sorrendben történik. A zárójelben lévő részkifejezések kerülnek kiértékelésre először, és felülírhatják a fenti elsőbbségi szabályokat.
A feltételes kifejezéseket a [[ összetett parancs, valamint a beépített teszt és [ parancs használja a fájlattribútumok tesztelésére, valamint karakterlánc- és aritmetikai összehasonlítások végrehajtására. A test és [ parancsok az argumentumok száma alapján határozzák meg viselkedésüket; lásd a parancsok leírását a többi parancsspecifikus művelethez.
A kifejezések a következő unáris vagy bináris primerekből jönnek létre. A Bash több fájlnevet kezel, különösen akkor, ha kifejezésekben használják őket. Ha az operációs rendszer, amelyen a bash fut, biztosítja ezeket a speciális fájlokat, a bash ezeket fogja használni; ellenkező esetben a következő viselkedéssel emulálja őket belsőleg: Ha az egyik elsődleges file argumentum /dev/fd/n alakú, akkor a fájlleíró n be van jelölve. Ha az egyik elsődleges file argumentum a /dev/stdin, /dev/stdout vagy /dev/ stderrben a 0, 1 vagy 2 fájlleíró be van jelölve.
Eltérő rendelkezés hiányában a fájlokon működő elsődlegesek szimbolikus hivatkozásokat követnek, és a hivatkozás célpontján működnek, nem pedig magán a hivatkozáson.
A [[-val együtt használva a < és > operátorok lexikográfiai sorrendben rendezik az aktuális területi beállítást. A teszt parancs ASCII-sorrend szerint rendezi.
Igaz, ha létezik fájl.
Igaz, ha a fájl létezik, és egy speciális blokkfájl.
Igaz, ha a fájl létezik, és karakterspecifikus fájl.
Igaz, ha a fájl létezik, és egy könyvtár.
Igaz, ha létezik fájl.
Igaz, ha a fájl létezik, és normál fájl.
Igaz, ha a fájl létezik, és a set-group-id.
Igaz, ha a fájl létezik, és szimbolikus hivatkozás.
Igaz, ha a fájl létezik, és a ``ragadós'' bitje be van állítva.
Igaz, ha a fájl létezik, és egy named pipe (FIFO).
Igaz, ha a fájl létezik és olvasható.
Igaz, ha a fájl létezik, és annak mérete nagyobb, mint nulla.
Igaz, ha az fd fájlleíró nyitva van, és terminálra hivatkozik.
Igaz, ha a fájl létezik, és a set-user-id bitje be van állítva.
Igaz, ha a fájl létezik és írható.
Igaz, ha a fájl létezik és végrehajtható.
Igaz, ha a fájl létezik, és a tényleges csoportazonosító tulajdonában van.
Igaz, ha a fájl létezik, és szimbolikus hivatkozás.
Igaz, ha a fájl létezik, és az utolsó olvasás óta módosult.
Igaz, ha a fájl létezik, és a tényleges felhasználói azonosító tulajdonában van.
Igaz, ha a fájl létezik, és egy socket.
Igaz, ha a file1 és a file2 ugyanarra az eszközre és inode számra utal.
Igaz, ha a fájl1 újabb (a módosítás dátuma szerint), mint a fájl2, vagy ha a fájl1 létezik, a fájl2 pedig nem .
Igaz, ha a fájl1 régebbi, mint a fájl2, vagy ha a fájl2 létezik, a fájl1 pedig nem.
Igaz, ha az optname parancsértelmező engedélyezve van. Tekintse meg az opciók listáját a beépített set -o opció leírása alatt.
Igaz, ha a varname shell-változó be van állítva (értéket rendeltek hozzá).
Igaz, ha a varname shell-változó be van állítva, és névreferencia.
Igaz, ha a karakterlánc hossza nulla.
Igaz, ha a karakterlánc hossza nem nulla.
Igaz, ha a karakterláncok egyenlőek. A = parancsot a teszt paranccsal kell használni a POSIX-megfelelőség érdekében. A [[ paranccsal együtt használva a mintaillesztést a fent leírtak szerint hajtja végre (Összetett parancsok).
Igaz, ha a karakterláncok nem egyenlőek.
Igaz, ha a karakterlánc1 lexikográfiailag a karakterlánc2 elé rendezi.
Igaz, ha a karakterlánc1 a karakterlánc2 után rendeződik lexikográfiailag.
Az OP az egyike: -eq, -ne, -lt, -le , -gt vagy -ge. Ezek az aritmetikai bináris operátorok igazat adnak vissza, ha az arg1 egyenlő, nem egyenlő, kisebb, kisebb vagy egyenlő, nagyobb, nagyobb vagy egyenlő, mint az arg2, illetőleg. Az Arg1 és az arg2 pozitív vagy negatív egész számok lehetnek. A [[ paranccsal együtt használva az Arg1 és az Arg2 aritmetikai kifejezésként kerül kiértékelésre (lásd fent az ARITMETIKAI ÉRTÉKELÉS részt) .
Egy egyszerű parancs végrehajtásakor a shell a következő bővítéseket, hozzárendeléseket és átirányításokat hajtja végre balról jobbra, a következő sorrendben.
Azokat a szavakat, amelyeket az értelmező változó-hozzárendelésként jelölt meg (a parancs neve előttieket) és átirányításokat, a rendszer elmenti későbbi feldolgozáshoz.
Azok a szavak, amelyek nem változó-hozzárendelések vagy átirányítások, kibontásra kerülnek. Ha bármilyen szó marad a kibontás után, akkor az első szó a parancs neve, a fennmaradó szavak pedig az argumentumok.
Az átirányításokat a fenti ÁTIRÁNYÍTÁS részben leírtak szerint hajtják végre.
Az egyes változó-hozzárendelésekben szereplő = utáni szöveg hullámvonal-bővítésen, paraméterbővítésen, parancshelyettesítésen, aritmetikai bővítésen és idézőjel-eltávolításon esik át, mielőtt hozzárendelné a változóhoz.
Ha nincs parancsnév, akkor a változó-hozzárendelések hatással vannak az aktuális shell-környezetre. Ellenkező esetben a változók hozzáadódnak a végrehajtott parancs környezetéhez, és nem befolyásolják az aktuális shell-környezetet. Ha bármelyik hozzárendelés megkísérel értéket rendelni egy csak olvasható változóhoz, hiba történik, és a parancs nem nulla állapottal lép ki.
Ha nincs parancsnév, akkor a rendszer átirányításokat hajt végre, de ez nem érinti az aktuális shell-környezetet. Az átirányítási hiba miatt a parancs nem nulla állapottal lép ki.
Ha a kibővítés után maradt parancsnév, a végrehajtás az alábbiak szerint halad. Ellenkező esetben a parancs kilép. Ha az egyik bővítés parancshelyettesítést tartalmazott, a parancs kilépési állapota az utolsó végrehajtott parancshelyettesítés kilépési állapota. Ha nem volt parancshelyettesítés, akkor a parancs nulla állapottal lép ki.
Egy parancs szavakra bontása után, ha az egy egyszerű parancsot és egy opcionális argumentumlistát eredményez, a következő műveleteket hajtja végre.
Ha a parancs neve nem tartalmaz perjelet, a parancsértelmező megpróbálja megtalálni azt. Ha létezik ilyen nevű shell-függvény, akkor a függvény a fenti FUNCTIONS részben leírtak szerint kerül meghívásra. Ha a név nem egyezik egy funkcióval, akkor a shell megkeresi a shell beépített listájában. Ha talál egyezést, akkor az a beépített modul kerül meghívásra.
Ha a név nem shell-függvény és nem is beépített, és nem tartalmaz perjelet, a bash a PATH minden egyes elemében megkeresi az adott nevű végrehajtható fájlt tartalmazó könyvtárat. A Bash egy hash táblát használ a végrehajtható fájlok teljes elérési útjának megjegyezésére (lásd a hash részt a SHELL BEÉPÍTETT PARANCSOK alatt). A PATH könyvtárak teljes keresése csak akkor történik meg, ha a parancs nem található a hash táblában. Ha a keresés sikertelen, a shell egy command_not_found_handle nevű definiált shell-függvényt keres. Ha ez a függvény létezik, akkor egy külön végrehajtási környezetben kerül meghívásra az eredeti paranccsal és az eredeti parancs argumentumaival, és a függvény kilépési állapota az adott alhéj kilépési állapota lesz. Ha ez a függvény nincs megadva, a shell hibaüzenetet nyomtat, és 127-es kilépési állapotot ad vissza.
Ha a keresés sikeres, vagy ha a parancs neve egy vagy több perjelet tartalmaz, a shell a megnevezett programot külön végrehajtási környezetben hajtja végre. A 0-s argumentum a megadott névre, a parancs többi argumentuma pedig a megadott argumentumra van beállítva, ha vannak ilyenek.
Ha ez a végrehajtás sikertelen, mert a fájl nem végrehajtható formátumú, és a fájl nem könyvtár, akkor azt egy shell script-nek, azaz egy shell-parancsokat tartalmazó fájlnak kell tekinteni. A végrehajtáshoz egy alhéj jön létre. Ez az alhéj újrainicializálja magát, így a hatás olyan, mintha egy új shell lett volna meghívva a szkript kezelésére, azzal az eltéréssel, hogy a parancsok helyére a szülő emlékszik (lásd a hash részt alább a alatt SHELL BEÉPÍTETT PARANCSOKat) a gyermek megtartja.
Ha a program egy #! karakterekkel kezdődő fájl, akkor az első sor fennmaradó része megadja a program értelmezőjét. A shell végrehajtja a megadott értelmezőt azokon az operációs rendszereken, amelyek maguk nem kezelik ezt a végrehajtható formátumot. Az értelmező argumentumai egyetlen opcionális argumentumból állnak, amely az értelmező nevét követi a program első sorában, ezt követi a program neve, majd a parancs argumentumai, ha vannak.
A shell rendelkezik egy végrehajtási környezettel, amely a következőkből áll:
nyissa meg azokat a fájlokat, amelyeket a parancsértelmező örökölt meghíváskor, az exec beépített átirányításokkal módosított
az aktuális munkakönyvtár, amelyet a cd, pushd vagy popd állított be, vagy a parancsértelmező örökölte az híváskor
a fájllétrehozási mód maszkja az umask által beállított vagy a shell szülőjétől örökölt
a trap által beállított aktuális csapdák
olyan shell-paraméterek, amelyek változó-hozzárendeléssel vagy set-lel vannak beállítva, vagy a shell szülőjétől örököltek a környezetben
a végrehajtás során meghatározott vagy a környezetben a shell szülőjétől örökölt shell függvények
Az opciók az híváskor engedélyezettek (alapértelmezés szerint vagy parancssori argumentumokkal) vagy a set
a shopt által engedélyezett lehetőségek
az alias segítségével meghatározott shell-aliasok
különféle folyamatazonosítók, beleértve a háttérfeladatok azonosítóit, a $$ és a PPID értékét. Ha a beépített vagy shell függvénytől eltérő egyszerű parancsot kell végrehajtani, akkor az egy külön végrehajtási környezetben kerül meghívásra, amely a következőkből áll. Hacsak másképp nem jelezzük, az értékek a héjból öröklődnek.
a shell megnyitott fájljai, valamint a parancshoz való átirányítás által meghatározott módosítások és kiegészítések
az aktuális munkakönyvtárat
a fájllétrehozási mód maszkja
exportálásra megjelölt shell-változók és függvények, valamint a környezetben átadott parancshoz exportált változók
a shell által elkapott csapdákat a rendszer visszaállítja a shell szülőjétől örökölt csapdákra, és figyelmen kívül hagyja a shell által figyelmen kívül hagyott csapdákat
Az ebben a különálló környezetben meghívott parancs nem befolyásolhatja a shell végrehajtási környezetét.
A parancshelyettesítés, a zárójelekkel csoportosított parancsok és az aszinkron parancsok olyan alhéj-környezetben hívódnak meg, amely a shell környezet másodpéldánya, azzal a különbséggel, hogy a shell által elkapott csapdák visszaállnak azokra az értékekre, amelyeket a shell a szülőtől örökölt a híváskor. A folyamat részeként meghívott beépített parancsok egy alhéj-környezetben is végrehajtásra kerülnek. Az alhéj-környezetben végrehajtott változtatások nem befolyásolhatják a shell végrehajtási környezetét.
A parancshelyettesítések végrehajtására létrehozott részhéjak a szülő shelltől öröklik a -e opció értékét. Ha nincs posix módban, a bash törli a -e opciót az ilyen alhéjakban.
Ha egy parancsot egy & jel követ, és a jobvezérlés nem aktív, a parancs alapértelmezett szabványos bemenete az üres /dev/null fájl. Ellenkező esetben a meghívott parancs örökli a hívó shell átirányításokkal módosított fájlleíróit.
Amikor egy program meghívásra kerül, egy környezet nevű karakterlánc-tömböt kap. Ez a név–érték párok listája, név=érték formában.
A shell számos módot kínál a környezet manipulálására. Meghíváskor a shell megvizsgálja a saját környezetét, és minden talált névhez létrehoz egy paramétert, és automatikusan megjelöli az exportáláshoz az alárendelt folyamatokba. A végrehajtott parancsok öröklik a környezetet. Az export és a declare -x parancsok lehetővé teszik paraméterek és függvények hozzáadását és törlését a környezetből. Ha egy paraméter értéke a környezetben módosul, az új érték a környezet részévé válik, a régi helyébe. A végrehajtott parancsok által örökölt környezet a shell kezdeti környezetéből áll, amelynek értékei módosíthatók a shellben, levonva az unset paranccsal eltávolított párokat, valamint az exporton keresztül történő hozzáadásokat. és declare -x parancsokat.
Bármely egyszerű parancs vagy funkció környezete ideiglenesen kibővíthető úgy, hogy paraméter-hozzárendeléssel előtagozzák, a fenti PARAMETERS részben leírtak szerint. Ezek a hozzárendelési utasítások csak az adott parancs által látott környezetre vannak hatással.
Ha a -k opció be van állítva (lásd alább a set beépített parancsot), akkor az minden paraméter-hozzárendelés a parancs környezetébe kerül, nem csak azokat, amelyek a parancs nevét megelőzik.
Amikor a bash külső parancsot hív meg, a _ változó a parancs teljes fájlnevére lesz beállítva, és átadja a parancsnak a környezetében.
A végrehajtott parancs kilépési állapota a waitpid rendszerhívás vagy azzal egyenértékű függvény által visszaadott érték. A kilépési állapotok 0 és 255 közé esnek, bár az alábbiak szerint a shell speciálisan 125 feletti értékeket használhat. A beépített shell-beépített kilépési állapotok és az összetett parancsok is erre a tartományra korlátozódnak. Bizonyos körülmények között a héj speciális értékeket használ az adott hibamódok jelzésére.
A shell céljaira egy olyan parancs sikerült, amely nulla kilépési állapottal lép ki. A nulla kilépési állapot sikerességet jelez. A nullától eltérő kilépési állapot meghibásodást jelez. Amikor egy parancs egy végzetes N jelre fejeződik be, a bash a 128+N értéket használja kilépési állapotként.
Ha egy parancs nem található, a végrehajtására létrehozott gyermekfolyamat 127-es állapotot ad vissza. Ha egy parancs található, de nem hajtható végre, a visszatérési állapot 126.
Ha egy parancs a bővítés vagy az átirányítás során fellépő hiba miatt meghiúsul, a kilépési állapot nagyobb, mint nulla.
A shell beépített parancsai 0 (igaz) állapotot adnak vissza, ha sikeresek, és nem nullát (false), ha hiba történik végrehajtásuk során. Minden beépített 2-es kilépési állapotot ad vissza, jelezve a helytelen használatot, általában érvénytelen opciókat vagy hiányzó argumentumokat.
A Bash maga az utoljára végrehajtott parancs kilépési állapotát adja vissza, hacsak nem történik szintaktikai hiba, amely esetben nem nulla értékkel lép ki. Lásd még az alábbi beépített exit parancsot.
Ha a bash interaktív, csapdák hiányában figyelmen kívül hagyja a SIGTERM-et (hogy a kill 0 ne öljön meg egy interaktív shellt), és A SIGINT elkapja és kezeli (hogy a beépített várakozás megszakítható legyen). A bash minden esetben figyelmen kívül hagyja a SIGQUIT elemet. Ha a feladatvezérlés érvényben van, a bash figyelmen kívül hagyja a SIGTTIN, SIGTTOU és SIGTSTP paramétereket.
A bash által futtatott, nem beépített parancsok jelkezelői a shell által a szülőtől örökölt értékekre vannak beállítva. Ha a jobvezérlés nincs érvényben, az aszinkron parancsok figyelmen kívül hagyják a SIGINT és a SIGQUIT funkciót az örökölt kezelőkön kívül. A parancshelyettesítés eredményeként futtatott parancsok figyelmen kívül hagyják a billentyűzet által generált SIGTTIN, SIGTTOU és SIGTSTP feladatvezérlő jeleket.
A rendszerhéj alapértelmezés szerint kilép, ha SIGHUP érkezik. A kilépés előtt egy interaktív parancsértelmező újra elküldi a SIGHUP fájlt az összes futó vagy leállított jobnak. A leállított munkákat a rendszer SIGCONT küldi el annak biztosítására, hogy megkapják a SIGHUP üzenetet. Annak megakadályozása érdekében, hogy a shell jelet küldjön egy adott jobnak, el kell távolítani a jobtáblázatból a disown beépített elemmel (lásd alább a SHELL BEÉPÍTETT PARANCSOK című részt), vagy meg kell jelölni, hogy nem. fogadja a SIGHUP parancsot a disown -h használatával.
Ha a huponexit shell opció a shopt paraméterrel van beállítva, a bash interaktív bejelentkezéskor SIGHUP üzenetet küld az összes feladatnak. héj kilép.
Ha a bash parancs befejezésére vár, és olyan jelet kap, amelyhez csapdát állítottak be, akkor a trap nem hajtódik végre, amíg a parancs be nem fejeződik. Amikor a bash aszinkron parancsra vár a beépített wait-en keresztül, akkor egy olyan jel vétele, amelyhez csapdát állítottak be, várakozást okoz. beépített, hogy azonnal visszatérjen 128-nál nagyobb kilépési állapottal, amely után azonnal végrehajtódik a csapda.
A Feladat-ellenőrzés a folyamatok végrehajtásának szelektív leállításának (felfüggesztésének) és végrehajtásának egy későbbi időpontban történő folytatásának (folytatásának) képességére utal. A felhasználó ezt a szolgáltatást általában az operációs rendszer kernel terminál-illesztőprogramja és a bash által közösen biztosított interaktív interfészen keresztül használja.
A shell minden folyamathoz egy feladatot társít. Táblázatot tart az aktuálisan végrehajtott feladatokról, amelyeket a jobs paranccsal lehet felsorolni. Amikor a bash aszinkron módon (a háttérben) elindít egy feladatot, a következőképpen néz ki:
[1] 25647
jelezve, hogy ez a job az 1. job, és hogy a jobhoz társított folyamat utolsó folyamatának folyamatazonosítója 25647. Az egyetlen folyamatban lévő összes folyamat ugyanannak a jobnak a tagja. A Bash a job absztrakciót használja a munka ellenőrzésének alapjaként.
A felhasználói felület jobvezérléshez való megvalósításának megkönnyítése érdekében az operációs rendszer fenntartja az aktuális terminál folyamatcsoport-azonosító fogalmát. Ennek a folyamatcsoportnak a tagjai (olyan folyamatok, amelyek folyamatcsoport-azonosítója megegyezik az aktuális terminálfolyamatcsoport-azonosítóval) billentyűzet által generált jeleket kapnak, például SIGINT. Állítólag ezek a folyamatok előtérben vannak. A Háttér folyamatok azok, amelyek folyamatcsoport-azonosítója eltér a terminálétól; az ilyen folyamatok immunisak a billentyűzet által generált jelekre. Csak az előtérbeli folyamatok olvashatnak a terminálról, vagy ha a felhasználó ezt az stty tostop paraméterrel megadja, akkor írjon a terminálra. A háttérfolyamatok, amelyek megpróbálnak olvasni a termináltól (írni, ha az stty tostop érvényben van) a termináltól, SIGTTIN (SIGTTOU) jelet küldenek a kernel terminál-illesztőprogramja által, amely, hacsak nem elkapják, felfüggeszti a folyamatot.
Ha az operációs rendszer, amelyen a bash fut, támogatja a jobvezérlést, a bash tartalmaz lehetőségeket a használatához. Ha egy folyamat futása közben beírja a suspend karaktert (általában ^Z, Control-Z), a folyamat leáll, és visszaadja a vezérlést a bash-ra. . A késleltetett felfüggesztés karakter beírása (általában ^Y, Control-Y) a folyamat leáll, amikor megpróbálja beolvasni a terminál bemenetét, és a vezérlés visszakerül bash. A felhasználó ezután módosíthatja a feladat állapotát a bg paranccsal a háttérben való folytatásához, az fg paranccsal az előtérben való folytatásához, vagy a >kill paranccsal megölni. A ^Z azonnal érvénybe lép, és további mellékhatással jár, hogy a függőben lévő kimenetet és a beírást elveti.
Számos módon lehet hivatkozni egy munkára a héjban. A % karakter bevezet egy munkameghatározást (jobspec). Az n munkakör neve %n. A jobra az indításhoz használt név előtagja vagy a parancssorban megjelenő részkarakterlánc használatával is hivatkozhatunk. Például a %ce egy leállított feladatra utal, amelynek parancs neve ce-vel kezdődik. Ha egy előtag egynél több feladatnak felel meg, a bash hibát jelez. A %?ce használata viszont minden olyan feladatra vonatkozik, amely a parancssorban a ce karakterláncot tartalmazza. Ha az alkarakterlánc egynél több feladattal egyezik, a bash hibát jelez. A %% és %+ szimbólumok az aktuális feladat shell-fogalmára utalnak, amely az utolsó munka, amelyet leállítottak, miközben az előtérben volt. vagy a háttérben indult el. Az korábbi munkára a %- használatával lehet hivatkozni. Ha csak egyetlen feladat van, a %+ és a %- egyaránt használható arra a munkára hivatkozni. A jobokra vonatkozó kimenetben (pl. a jobs parancs kimenete) az aktuális job mindig +, az előző pedig egy - jellel van megjelölve. . Egyetlen % (a hozzá tartozó munkameghatározás nélkül) az aktuális munkára is utal.
Egy feladat egyszerű elnevezésével előtérbe kerülhet: a % 1 az ``fg % 1'' szinonimája, ami az 1. feladatot a háttérből a előtér. Hasonlóképpen, a ``%1 &'' a háttérben folytatja az 1. feladatot, ami megegyezik a ``bg %1''-vel.
A shell azonnal megtanulja, ha egy munka állapota megváltozik. Normális esetben a bash megvárja, amíg kinyomtat egy felszólítást, mielőtt jelentené a munka állapotában bekövetkezett változásokat, hogy ne szakítsa meg a többi kimenetet. Ha a beépített set parancs -b kapcsolója engedélyezve van, a bash azonnal jelenti az ilyen változásokat. A SIGCHLD csapdája minden kilépő gyermeknél végrehajtódik.
Ha a bash programból kilépési kísérlet történik, miközben a feladatok le vannak állítva (vagy ha a checkjobs shell opció engedélyezve van a beépített shop segítségével, akkor fut ), a rendszerhéj figyelmeztető üzenetet nyomtat, és ha a checkjobs opció engedélyezve van, felsorolja a feladatokat és azok állapotát. A jobs parancs ezután használható állapotuk ellenőrzésére. Ha egy második kilépési kísérlet közbelépő parancs nélkül történik, a shell nem nyomtat újabb figyelmeztetést, és minden leállított feladat leáll.
Amikor a shell egy feladatra vagy folyamatra vár a beépített várakoztatás használatával, és a feladatvezérlés engedélyezve van, a várakozás visszatér, amikor a feladat állapota megváltozik. A -f kapcsoló hatására a várakozás megvárja, amíg a feladat vagy folyamat leáll, mielőtt visszatérne.
Interaktív végrehajtáskor a bash megjeleníti a PS1 elsődleges promptot, amikor készen áll egy parancs olvasására, és a másodlagos PS2 promptot, ha további bevitelre van szüksége. parancs végrehajtásához. A Bash megjeleníti a PS0 elemet, miután elolvasta a parancsot, de még a végrehajtás előtt. A Bash megjeleníti a PS4 elemet a fent leírtak szerint, mielőtt az egyes parancsokat nyomon követné, ha a -x opció engedélyezve van. A Bash lehetővé teszi ezen prompt karakterláncok testreszabását számos fordított perjellel megtisztított speciális karakter beszúrásával, amelyek dekódolása a következőképpen történik:
- \a
egy ASCII csengő karakter (07)
- \d
a dátum "Hétköznapi hónap dátuma" formátumban (pl. "május 26. ked")
- \D{format}
a formátumot a rendszer átadja az strftime-nek (3), és az eredményt a rendszer beilleszti a prompt karakterláncba; az üres formátum egy terület-specifikus időábrázolást eredményez. A fogszabályzó szükséges
- \e
egy ASCII escape karakter (033)
- \h
a gazdagépnév az első `.'-ig
- \H
a gazdagépnév
- \j
a shell által jelenleg kezelt munkahelyek száma
- \l
a shell termináleszköz nevének alapneve
- \n
új sor
- \r
kocsi vissza
- \s
a shell neve, a $0 alapneve (az utolsó perjelet követő rész)
- \t
az aktuális idő 24 órás ÓÓ:PP:SS formátumban
- \T
az aktuális idő 12 órás ÓÓ:PP:SS formátumban
- \@
az aktuális idő 12 órás délelőtt/délutános formátumban
- \A
az aktuális idő 24 órás ÓÓ:PP formátumban
- \u
az aktuális felhasználó felhasználóneve
- \v
a bash verziója (pl. 2.00)
- \V
a bash kiadása, verzió + javítási szint (pl. 2.00.0)
- \w
az aktuális munkakönyvtár, a $HOME karakterlánccal rövidítve (a PROMPT_DIRTRIM változó értékét használja)
- \W
az aktuális munkakönyvtár alapneve, a $HOME tilde-vel rövidítve
- \!
a parancs előzményszáma
- \#
ennek a parancsnak a parancs számát
- \$
ha a tényleges UID 0, egy #, egyébként egy $
- \nnn
az nnn oktális számnak megfelelő karakter
- \\
egy fordított perjel
- \[
elkezdi a nem nyomtatható karakterek sorozatát, amellyel terminálvezérlő sorozatot lehet beágyazni a promptba
- \]
nem nyomtatható karakterek sorozatának vége
A parancs száma és az előzményszám általában eltérő: a parancs előzményszáma a pozíciója az előzménylistában, amely tartalmazhat az előzményfájlból visszaállított parancsokat (lásd alább az TÖRTÉNELEM részt), míg a parancs A szám az aktuális shell-munkamenet során végrehajtott parancsok sorozatának pozíciója. A karakterlánc dekódolása után paraméterbővítéssel, parancshelyettesítéssel, aritmetikai bővítéssel és idézőjel eltávolításával bővül, a promptvars shell opció értékétől függően (lásd a shopt< leírását). parancsot a SHELL BEÉPÍTETT PARANCSOK alatt). Ennek nemkívánatos mellékhatásai lehetnek, ha a karakterlánc kihagyott részei a parancshelyettesítésben jelennek meg, vagy a szóbővítésre jellemző karaktereket tartalmaznak.
Ez az a könyvtár, amely interaktív shell használatakor kezeli az olvasási bevitelt, kivéve, ha a --noediting opció a shell-híváskor adott. A sorszerkesztés akkor is használható, ha a -e opciót használja a beépített olvasáshoz. Alapértelmezés szerint a sorszerkesztő parancsok hasonlóak az Emacs parancsaihoz. Vi-stílusú vonalszerkesztő felület is elérhető. A vonalszerkesztés bármikor engedélyezhető a beépített set -o emacs vagy -o vi kapcsolókkal (lásd: SHELL BUILTIN PARANCSOK alatt). A parancsértelmező futása után a sorszerkesztés kikapcsolásához használja a beépített +o emacs vagy +o vi opciókat a beépített set beállításhoz.
Ebben a részben az Emacs-stílusú jelölést használjuk a billentyűleütések jelölésére. A vezérlőbillentyűket C-billentyű jelöli, például a C-n a Control-N billentyűt jelenti. Hasonlóképpen a meta billentyűket M-kulcs jelöli, tehát az M-x Meta-X-et jelent. (A meta billentyű nélküli billentyűzeteken az M-x ESC x billentyűt jelent, azaz nyomja meg az Escape billentyűt, majd az xet billentyű. Ezzel az ESC meta előtag. Az M-C-x kombináció ESC-Control-x-t jelent, vagy nyomja meg az Escape billentyűt, majd tartsa lenyomva a Control billentyűt, miközben lenyomva tartja az x billentyűt.)
A Readline parancsok numerikus argumentumokat kaphatnak, amelyek általában ismétlésszámként működnek. Néha azonban az érvelés jele a lényeges. Ha negatív argumentumot adunk át egy előrefelé ható parancsnak (pl. kill-line), akkor a parancs hátrafelé működik. Az alábbiakban felsoroljuk azokat a parancsokat, amelyek viselkedése érvekkel eltér ettől.
Ha egy parancsot megölő szövegként írnak le, a törölt szöveg mentésre kerül esetleges későbbi visszakeresés (rángatás) céljából. A megölt szöveget a rendszer egy kill ringbe menti. Az egymást követő ölések hatására a szöveg egyetlen egységbe halmozódik fel, amely egyszerre rángatható. Azok a parancsok, amelyek nem ölnek meg szöveget, elválasztják a szövegrészeket a kill gyűrűn.
A Readline testreszabása a parancsok inicializálási fájlba (az inputrc fájlba) történő elhelyezésével történik. A fájl neve az INPUTRC változó értékéből származik. Ha ez a változó nincs beállítva, az alapértelmezett a ~/.inputrc. Ha ez a fájl nem létezik, vagy nem olvasható, a végső alapértelmezés az /etc/inputrc. Amikor egy program, amely a readline könyvtárat használja, elindul, az inicializálási fájl beolvasásra kerül, és a kulcs-összerendelések és változók beállítása megtörténik. Csak néhány alapvető konstrukció megengedett a readline inicializálási fájlban. Az üres sorokat figyelmen kívül hagyja. A # karakterrel kezdődő sorok megjegyzések. A $ karakterrel kezdődő sorok feltételes konstrukciókat jelölnek. Más sorok a billentyű-összerendeléseket és a változóbeállításokat jelölik.
Az alapértelmezett kulcs-összerendelések módosíthatók egy inputrc fájllal. Más, ezt a könyvtárat használó programok hozzáadhatják saját parancsaikat és összerendeléseiket.
Például az elhelyezés
M-Control-u: universal-argument
vagy
C-Meta-u: universal-argument
Az inputrc-be az M-C-u az univerzális argumentum readline parancsot hajtja végre.
A következő szimbolikus karakterneveket ismeri fel a rendszer: RUBOUT, DEL, ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE és TAB.
A parancsnevek mellett a readline lehetővé teszi a billentyűk egy karakterlánchoz való kötését, amely a billentyű lenyomásakor szúródik be (makró).
Az inputrc fájlban a kulcs-összerendelések vezérlésének szintaxisa egyszerű. Csak a parancs neve vagy egy makró szövege és egy kulcssorozat, amelyhez kötni kell, szükséges. A név kétféleképpen adható meg: szimbolikus kulcsnévként, esetleg Meta- vagy Control- előtaggal, vagy kulcssorozatként.
A kulcsnév: függvénynév vagy makró formátum használata esetén a kulcsnév egy kulcs neve Angol. Például:
Control-u: universal-argument Meta-Rubout: backward-kill-word Control-o: "> output"
A fenti példában a C-u az univerzális argumentum függvényhez, az M-DEL a backward-kill függvényhez van kötve. -word és C-o köteles futtatni a jobb oldalon kifejezett makrót (vagyis beilleszteni a ``> output'' szöveget a sorba).
A második formában "keyseq": függvénynév vagy makró, a keyseq eltér a kulcsnévtől fentebb, mivel a teljes kulcssorozatot jelölő karakterláncok megadhatók a sorozat dupla idézőjelek közé helyezésével. Néhány GNU Emacs stílusú billentyűkilépés használható, mint a következő példában is, de a szimbolikus karakterneveket nem ismeri fel a rendszer.
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
Ebben a példában a C-u ismét az univerzális argumentum függvényhez van kötve. A C-x C-r a read-init-file függvényhez van kötve, az ESC [ 1 1 ~ pedig a `` szöveget illeszti be. Funkciógomb 1''.
A GNU Emacs stílusú escape szekvenciák teljes készlete az
- \C-
vezérlő előtag
- \M-
meta előtag
- \e
menekülő karakter
- \\
fordított perjel
- \"
szó szerint"
- \'
szó szerinti'
A GNU Emacs stílusú escape szekvenciákon kívül elérhető egy második backslash escape készlet is:
- \a
riadó (csengő)
- \b
backspace
- \d
töröl
- \f
forma takarmány
- \n
új sor
- \r
kocsi vissza
- \t
vízszintes fül
- \v
függőleges fül
- \nnn
a nyolc bites karakter, amelynek értéke az nnn oktális érték (egy-három számjegy)
- \xHH
a nyolcbites karakter, amelynek értéke hexadecimális HH (egy vagy két hexadecimális számjegy)
A makró szövegének beírásakor egyszeres vagy dupla idézőjeleket kell használni a makródefiníció jelzésére. A nem idézett szöveget a rendszer függvénynévnek tekinti. A makrótörzsben a fent leírt fordított perjelek kibontásra kerülnek. A fordított perjel minden más karaktert idéz a makrószövegben, beleértve a " és " karaktereket is.
A Bash lehetővé teszi az aktuális readline kulcs-összerendelések megjelenítését vagy módosítását a beépített bind paranccsal. A szerkesztési mód interaktív használat közben átkapcsolható a -o kapcsolóval a set beépített parancsra (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt).
A Readline olyan változókkal rendelkezik, amelyek segítségével tovább testreszabható a viselkedése. Egy változót be lehet állítani az inputrc fájlban az űrlap utasításával
set variable-name value
vagy a bind beépített paranccsal (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt).
A megjelölés kivételével az readline változók Be vagy Ki értéket vehetnek fel (a kis- és nagybetűktől függetlenül). Az ismeretlen változóneveket figyelmen kívül hagyja. Változóérték beolvasásakor az üres vagy null értékek, az „on” (kis- és nagybetűk megkülönböztetése) és az „1” egyenértékű a Be értékkel. Az összes többi érték egyenértékű a Ki értékkel. A változók és alapértelmezett értékeik a következők:
Szabályozza, hogy mi történjen, amikor a readline meg akarja csengetni a terminál csengőjét. Ha a nincs értékre van állítva, a readline soha nem csenget. Ha látható értékre van állítva, a readline látható csengőt használ, ha van ilyen. Ha hallható értékre van állítva, a readline megpróbálja megszólaltatni a terminál csengőjét.
Ha Be értékre van állítva, akkor az readline megpróbálja a kernel terminál-illesztőprogramja által speciálisan kezelt vezérlőkaraktereket az readline megfelelőikhez kötni.
Ha Be értékre van állítva, a readline megpróbálja rövid időre a kurzort egy nyitó zárójelre mozgatni, amikor záró zárójelet szúr be.
Ha Be értékre van állítva, akkor a kiegészítések listázásakor a readline a lehetséges kiegészítések halmazának közös előtagját jeleníti meg más színnel. A színdefiníciók az LS_COLORS környezeti változó értékéből származnak.
Ha Be értékre van állítva, az readline a lehetséges befejezéseket különböző színekkel jeleníti meg a fájltípus jelzésére. A színdefiníciók az LS_COLORS környezeti változó értékéből származnak.
A readline insert-comment parancs végrehajtásakor beszúrt karakterlánc. Ez a parancs az M-#-hoz van kötve emacs módban és a #-hez vi parancs módban.
A lehetséges egyezések megjelenítésére használt képernyőoszlopok száma a kitöltés végrehajtásakor. A rendszer figyelmen kívül hagyja az értéket, ha kisebb, mint 0, vagy nagyobb, mint a terminál képernyőjének szélessége. A 0 érték esetén soronként egy találat jelenik meg. Az alapértelmezett érték -1.
Ha Be értékre van állítva, a readline a fájlnévegyeztetést és a befejezést a kis- és nagybetűk megkülönböztetése nélkül hajtja végre.
Ha a Be értékre van állítva, és a befejezés – kis- és nagybetűk figyelmen kívül hagyása be van kapcsolva, a readline kezeli a kötőjeleket (-) és az aláhúzásjeleket (_ ) ).
A módosítás nélkül megjelenített lehetséges kiegészítések listájának közös előtagjának hossza karakterekben. Ha nullánál nagyobb értékre van állítva, akkor az ennél hosszabb általános előtagokat a rendszer ellipszisre cseréli a lehetséges kiegészítések megjelenítésekor.
Ez határozza meg, hogy mikor kérdezik a felhasználót a possible-completions parancs által generált lehetséges befejezések számának megtekintéséről. Bármely nullánál nagyobb vagy azzal egyenlő egész értékre beállítható. Ha a lehetséges befejezések száma nagyobb vagy egyenlő, mint ennek a változónak az értéke, a readline megkérdezi, hogy a felhasználó meg kívánja-e tekinteni azokat; egyébként egyszerűen felkerülnek a terminálra.
Ha Be értékre van állítva, a readline a nyolcadik bittel rendelkező karaktereket ASCII-kulcssorozattá alakítja a nyolcadik bit eltávolításával és egy escape karakter előtaggal (valójában az escape karaktert használja meta előtagként). Az alapértelmezett Be, de a readline Ki értékre állítja, ha a nyelvi beállítás nyolc bites karaktereket tartalmaz.
Ha Be-re van állítva, a readline letiltja a szókiegészítést. A befejező karakterek úgy kerülnek be a sorba, mintha önbeszúrás-ra lettek volna leképezve.
Ha Be értékre van állítva, azokon az operációs rendszereken, amelyek jelzik, hogy támogatják, a readline a billentyűzet által generált jelnek megfelelő karaktert visszhangozza.
Azt szabályozza, hogy az readline az Emacshoz vagy a vi-hez hasonló kulcs-összerendelésekkel kezdődjön-e. Az szerkesztési mód az emacs vagy a vi értékre állítható.
Ha a show-mode-in-prompt változó engedélyezve van, ez a karakterlánc közvetlenül az elsődleges prompt utolsó sora előtt jelenik meg, amikor az emacs szerkesztési mód aktív. Az érték kibővül, mint egy kulcs-összerendelés, így elérhető a szabványos meta- és vezérlőelőtagok, valamint a fordított perjel escape szekvenciák készlete. Használja a \1 és \2 escape karaktereket a nem nyomtatható karakterek kezdő és záró szekvenciáihoz, amelyek segítségével terminálvezérlő sorozatot ágyazhat be a mód karakterláncba.
Ha Be-re van állítva, a readline úgy konfigurálja a terminált, hogy minden beillesztést egyetlen karaktersorozatként illesszen be a szerkesztőpufferbe, ahelyett, hogy az egyes karaktereket úgy kezelné, mintha elolvasták volna. a billentyűzetről. Ez megakadályozhatja, hogy a beillesztett karakterek szerkesztési parancsként legyenek értelmezve.
Ha Be értékre van állítva, a readline megpróbálja engedélyezni az alkalmazás billentyűzetét, amikor hívják. Egyes rendszereknek szüksége van erre a nyílbillentyűk engedélyezéséhez.
Ha Be értékre van állítva, a readline megpróbálja engedélyezni a terminál által támogatott bármely metamódosító kulcsot, amikor hívják. Sok terminálon a metakulcsot nyolc bites karakterek küldésére használják.
Ha Be értékre van állítva, akkor a hullámvonal-kiterjesztés akkor történik meg, amikor a readline szókiegészítést kísérel meg.
Ha Be értékre van állítva, az előzménykód megpróbálja ugyanazon a helyen elhelyezni a pontot az previous-history vagy a next-history paraméterekkel lekért előzménysorokon. .
Állítsa be az előzmények listájába mentett előzménybejegyzések maximális számát. Ha nullára van állítva, akkor minden meglévő előzménybejegyzés törlődik, és új bejegyzések nem kerülnek mentésre. Ha nullánál kisebb értékre van állítva, az előzménybejegyzések száma nincs korlátozva. Alapértelmezés szerint az előzménybejegyzések száma a HISTSIZE shell változó értékére van állítva. Ha megkísérlik a history-size értéket nem numerikus értékre állítani, az előzménybejegyzések maximális száma 500 lesz.
Ha Be értékre van állítva, az Readline egyetlen sort használ a megjelenítéshez, és a bemenetet vízszintesen görgeti egyetlen képernyősorban, ha az hosszabb lesz, mint a képernyő szélessége, ahelyett, hogy új sorba törne. Ez a beállítás automatikusan engedélyezve van az 1. magasságú kapcsoknál.
Ha Be értékre van állítva, a readline engedélyezi a nyolcbites bevitelt (azaz nem veszi le a nyolcadik bitet az olvasott karakterekből), függetlenül attól, hogy a terminál mit tud támogatni. A meta-flag név ennek a változónak a szinonimája. Az alapértelmezett Ki, de a readline Be értékre állítja, ha a nyelvi beállítás nyolc bites karaktereket tartalmaz.
Az a karaktersorozat, amelynek be kell fejeznie a növekményes keresést anélkül, hogy ezt követően a karaktert parancsként végrehajtaná. Ha ez a változó nem kapott értéket, az ESC és a C-J karakterek befejezik a növekményes keresést.
Állítsa be az aktuális readline billentyűkiosztást. Az érvényes billentyűleképezési nevek emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-command és vi-insert. vi egyenértékű a vi-command kifejezéssel; Az emacs egyenértékű az emacs-standard kifejezéssel. Az alapértelmezett érték az emacs; az editing-mode értéke az alapértelmezett billentyűzetkiosztásra is hatással van.
Megadja azt az időtartamot, ameddig az readline vár egy karakterre, amikor kétértelmű billentyűsorozatot olvas (olyan, amely egy teljes billentyűsorozatot tud alkotni az eddig beolvasott bemenettel, vagy további bevitelt igényel egy hosszabb billentyűsorozat befejezéséhez) . Ha az időkorláton belül nem érkezik bemenet, a readline a rövidebb, de teljes billentyűkombinációt fogja használni. Az érték ezredmásodpercben van megadva, így az 1000 érték azt jelenti, hogy a readline egy másodpercet vár a további bevitelre. Ha ez a változó nullánál kisebb vagy azzal egyenlő értékre vagy nem numerikus értékre van állítva, a readline megvárja, amíg egy másik billentyűt lenyomnak, hogy eldöntse, melyik billentyűsorozatot kell befejezni.
Ha Be értékre van állítva, a befejezett könyvtárnevekhez perjel kerül hozzáfűzve.
Ha Be értékre van állítva, akkor a módosított előzménysorok előtt csillaggal (*) jelennek meg.
Ha Be értékre van állítva, a befejezett nevekhöz, amelyek szimbolikus hivatkozások a könyvtárakra, perjel van hozzáfűzve (a mark-directories értékétől függően).
Ez a változó Be értékre állítva azt eredményezi, hogy az readline megfeleljen a `.' karakterrel kezdődő fájlok nevének. (rejtett fájlok) a fájlnév-kiegészítés végrehajtásakor. Ha Ki értékre van állítva, a bevezető `.' a felhasználónak kell megadnia a kitöltendő fájlnévben.
Ha a Be értékre van állítva, a menü befejezése megjeleníti a lehetséges kiegészítések listájának közös előtagját (amely lehet üres is), mielőtt a listán végighaladna.
Ha Be-re van állítva, a readline a nyolcadik bitet közvetlenül beállított karakterekkel jeleníti meg, nem pedig meta-előtagú escape szekvenciát. Az alapértelmezett Ki, de a readline Be értékre állítja, ha a nyelvi beállítás nyolc bites karaktereket tartalmaz.
Ha Be értékre van állítva, a readline belső többszerű lapozót használ, hogy egyszerre több képernyőnyi lehetséges befejezést jelenítsen meg.
Ha a Be értékre van állítva, a readline a befejezéseket a képernyőn lefelé, vízszintesen, ábécé sorrendbe rendezve jeleníti meg.
Ha Be értékre van állítva, a readline visszavonja az előzménysorok összes módosítását, mielőtt visszatérne az accept-line végrehajtásakor. Alapértelmezés szerint az előzmények sorai módosulhatnak, és megőrzik az egyedi visszavonási listákat a readline hívásoknál.
Ez megváltoztatja a befejezési függvények alapértelmezett viselkedését. Ha Be értékre van állítva, akkor a több lehetséges befejezéssel rendelkező szavak a csengetés helyett azonnal megjelennek a listán.
Ez a befejezési függvények alapértelmezett viselkedését a show-all-if-ambiguous-hoz hasonló módon módosítja. Ha a Be értékre van állítva, akkor a szavak, amelyeknél több lehetséges befejezés is van lehetséges részleges befejezés nélkül (a lehetséges kiegészítéseknek nincs közös előtagja), a megfelelőek azonnal megjelennek a listában a csengetés helyett.
Ha Be értékre van állítva, adjon hozzá egy karakterláncot a prompt elejéhez, amely jelzi a szerkesztési módot: emacs, vi parancs vagy vi beillesztés. A mód karakterláncai a felhasználó által beállíthatók (pl. emacs-mode-string).
Ha Be értékre van állítva, akkor ez megváltoztatja az alapértelmezett befejezési viselkedést, amikor egyetlen egyezést szúr be a sorba. Csak akkor aktív, ha egy szó közepén végez befejezést. Ha engedélyezve van, a readline nem szúr be olyan karaktereket a befejezésből, amelyek megegyeznek a befejezett szóban egy pont után, így a szó kurzort követő részei nem duplikálódnak.
Ha a show-mode-in-prompt változó engedélyezve van, ez a karakterlánc közvetlenül az elsődleges prompt utolsó sora előtt jelenik meg, amikor a vi szerkesztési mód aktív és parancs módban van. Az érték kibővül, mint egy billentyű-összerendelés, így elérhető a szabványos meta- és vezérlőelőtagok, valamint a fordított perjel escape szekvenciák készlete. Használja a \1 és \2 escape karaktereket a nem nyomtatható karakterek kezdő és záró szekvenciáihoz, amelyek segítségével terminálvezérlő sorozatot ágyazhat be a mód karakterláncba.
Ha a show-mode-in-prompt változó engedélyezve van, ez a karakterlánc közvetlenül az elsődleges prompt utolsó sora előtt jelenik meg, amikor a vi szerkesztési mód aktív és beszúrási módban van. Az érték kibővül, mint egy billentyű-összerendelés, így elérhető a szabványos meta- és vezérlőelőtagok, valamint a fordított perjel escape szekvenciák készlete. Használja a \1 és \2 escape karaktereket a nem nyomtatható karakterek kezdő és záró szekvenciáihoz, amelyek segítségével terminálvezérlő sorozatot ágyazhat be a mód karakterláncba.
Ha Be értékre van állítva, akkor a fájl típusát a stat(2) által jelentett karakter fűzi a fájlnévhez, amikor felsorolja a lehetséges kiegészítéseket.
A Readline a C előfeldolgozó feltételes fordítási szolgáltatásaihoz hasonló szellemű lehetőséget valósít meg, amely lehetővé teszi a kulcs-összerendelések és a változóbeállítások végrehajtását a tesztek eredményeként. Négy elemző direktíva használatos.
Az $if konstrukció lehetővé teszi az összerendelések létrehozását a szerkesztési mód, a használt terminál vagy a readline-t használó alkalmazás alapján. A teszt szövege minden összehasonlító operátor után a sor végéig terjed; hacsak másképp nem jelezzük, nincs szükség karakterekre az elkülönítéséhez.
Az $if direktíva mode= alakja annak tesztelésére szolgál, hogy a readline emacs vagy vi módban van-e. Ez a set keymap paranccsal együtt használható, például csak az emacs-standard és az emacs-ctlx billentyűleképezések kötéseinek beállítására. ha a readline emacs módban indul.
A term= űrlap használható terminálspecifikus billentyű-összerendelések felvételére, esetleg a terminál funkcióbillentyűi által kiadott billentyűsorozatok összerendelésére. A = jobb oldalán található szót a rendszer a terminál teljes nevével és a terminálnév első - előtti részével szemben teszteli. Ez lehetővé teszi például, hogy a sun megfeleljen a sun és a sun-cmd.
A verzió teszt használható bizonyos readline verziókkal való összehasonlításra. A verzió az aktuális readline verzióra bővül. Az összehasonlító operátorok halmaza a következőket tartalmazza: =, (és ==), !=, <=, >>=, < és >. Az operátor jobb oldalán található verziószám egy fő verziószámból, egy opcionális tizedesvesszőből és egy opcionális mellékverzióból (pl. 7.1) áll. Ha a mellékváltozatot kihagyjuk, akkor azt 0-nak kell tekinteni. Az operátort szóközzel lehet elválasztani a version karakterlánctól és a verziószám argumentumától.
Az alkalmazás konstrukció az alkalmazás-specifikus beállítások megadására szolgál. Minden, a readline könyvtárat használó program beállítja az alkalmazás nevét, és az inicializálási fájl tesztelhet egy adott értéket. Ez használható a billentyűsorozatok egy adott program számára hasznos funkciókhoz való kötésére. Például a következő parancs olyan kulcssorozatot ad hozzá, amely idézi az aktuális vagy előző szót a bash-ban:
$if Bash
# Quote the current or previous word
"\C-xq": "\eb\"\ef\""
$endifA változó konstrukció egyszerű egyenlőségi teszteket biztosít az readline változókhoz és értékekhez. Az engedélyezett összehasonlító operátorok: =, == és !=. A változó nevét szóközzel kell elválasztani az összehasonlító operátortól; az operátor a jobb oldali értéktől szóközzel választható el. Karakterlánc és logikai változók is tesztelhetők. A logikai változókat tesztelni kell az on és az off értékekkel.
Ez a parancs, ahogy az előző példában is látható, leállítja az $if parancsot.
Az $if direktíva ezen ágában lévő parancsok végrehajtásra kerülnek, ha a teszt sikertelen.
Ez a direktíva egyetlen fájlnevet vesz fel argumentumként, és ebből a fájlból olvassa be a parancsokat és a kötéseket. Például a következő direktíva a következőt olvasná: /etc/inputrc:
$include /etc/inputrcA Readline parancsokat biztosít a parancselőzményekben való kereséshez (lásd alább az TÖRTÉNELEM részt) a megadott karakterláncot tartalmazó sorok számára. Két keresési mód létezik: növekményes és nem növekményes.
A növekményes keresés azelőtt kezdődik, hogy a felhasználó befejezte volna a keresési karakterlánc beírását. A keresési karakterlánc minden karakterének beírása közben a readline megjeleníti az előzmények következő bejegyzését, amely megfelel az eddig beírt karakterláncnak. A növekményes keresés csak annyi karaktert igényel, amennyi a kívánt előzménybejegyzés megtalálásához szükséges. Az isearch-terminators változó értékében szereplő karakterek a növekményes keresés befejezésére szolgálnak. Ha ehhez a változóhoz nem rendeltek értéket, az Escape és a Control-J karakterek befejezik a növekményes keresést. A Control-G megszakítja a növekményes keresést, és visszaállítja az eredeti sort. A keresés befejezésekor a keresési karakterláncot tartalmazó előzménybejegyzés lesz az aktuális sor.
Ha további egyező bejegyzéseket szeretne keresni az előzmények listájában, írja be a Ctrl-S vagy a Control-R billentyűkombinációt. Ez visszafelé vagy előre keresi az előzményekben az eddig beírt keresési karakterláncnak megfelelő következő bejegyzést. A readline parancshoz kötött bármely más billentyűsorozat leállítja a keresést és végrehajtja a parancsot. Például egy újsor befejezi a keresést és elfogadja a sort, ezáltal végrehajtja a parancsot az előzmények listájából.
A Readline megjegyzi az utolsó növekményes keresési karakterláncot. Ha két Control-R-t ír be anélkül, hogy bármilyen közbeeső karakter definiálna egy új keresési karakterláncot, akkor bármelyik megjegyzett keresési karakterlánc kerül felhasználásra.
A nem növekményes keresések beolvassák a teljes keresési karakterláncot, mielőtt elkezdenének keresni a megfelelő előzménysorokat. A keresési karakterláncot a felhasználó gépelheti be, vagy része lehet az aktuális sor tartalmának.
Az alábbiakban felsoroljuk a parancsok nevét és az alapértelmezett billentyűsorozatokat, amelyekhez kapcsolódnak. A kísérő billentyűsorozat nélküli parancsnevek alapértelmezés szerint nincsenek kötve. A következő leírásokban a pont a kurzor aktuális pozíciójára, a mark pedig a set-mark paranccsal mentett kurzorpozícióra utal. A pont és a jel közötti szöveget régiónak nevezzük.
Ugrás az aktuális sor elejére.
Lépjen a sor végére.
Lépj előre egy karaktert.
Helyezzen vissza egy karaktert.
Lépjen előre a következő szó végére. A szavak alfanumerikus karakterekből (betűkből és számokból) állnak.
Ugrás az aktuális vagy az előző szó elejére. A szavak alfanumerikus karakterekből (betűkből és számokból) állnak.
Lépjen előre a következő szó végére. A szavakat nem idézett shell metakarakterek határolják el.
Ugrás az aktuális vagy az előző szó elejére. A szavakat nem idézett shell metakarakterek határolják el.
Próbálja meg áthelyezni a pontot ugyanarra a fizikai képernyőoszlopra az előző fizikai képernyősorban. Ennek nem lesz a kívánt hatása, ha az aktuális Readline sor nem foglal el egynél több fizikai sort, vagy ha a pont nem nagyobb, mint a prompt hossza plusz a képernyő szélessége.
Próbálja meg áthelyezni a pontot ugyanarra a fizikai képernyőoszlopra a következő fizikai képernyősorban. Ennek nem lesz a kívánt hatása, ha az aktuális Readline sor nem foglal el egynél több fizikai sort, vagy ha az aktuális Readline sor hossza nem nagyobb, mint a prompt hossza plusz a képernyő szélessége.
Törölje a képernyőt, és ha lehetséges, a terminál scrollback pufferét, majd rajzolja újra az aktuális sort úgy, hogy az aktuális sort a képernyő tetején hagyja.
Törölje a képernyőt, majd rajzolja újra az aktuális sort úgy, hogy az aktuális sort a képernyő tetején hagyja. Egy argumentum segítségével frissítse az aktuális sort a képernyő törlése nélkül.
Frissítse az aktuális sort.
Fogadja el a sort, függetlenül attól, hogy hol van a kurzor. Ha ez a sor nem üres, adja hozzá az előzmények listájához a HISTCONTROL változó állapotának megfelelően. Ha a sor egy módosított előzménysor, akkor állítsa vissza az előzménysort az eredeti állapotába.
Hozza le az előző parancsot az előzmények listájából, és lépjen vissza a listában.
Hozza le a következő parancsot az előzmények listájáról, és lépjen előre a listában.
Lépjen az előzmények első sorára.
Ugrás a beviteli előzmények végére, azaz az éppen beírt sorra.
Keresés visszafelé az aktuális sortól kezdve, és szükség szerint „felfelé” haladva az előzményekben. Ez egy növekményes keresés.
Keresés előre az aktuális sortól kezdve, és szükség szerint 'lefelé' haladva az előzményekben. Ez egy növekményes keresés.
Keresés visszafelé az előzményekben az aktuális sortól kezdve a felhasználó által megadott karakterlánc nem növekményes keresésével.
Keresés előre az előzmények között a felhasználó által megadott karakterlánc nem növekményes keresésével.
Keressen előre az előzményekben az aktuális sor eleje és a pont közötti karakterláncot. Ez egy nem növekményes keresés.
Keressen visszafelé az előzményekben az aktuális sor eleje és a pont közötti karakterláncot. Ez egy nem növekményes keresés.
Keressen visszafelé az előzményekben az aktuális sor eleje és a kurzor aktuális pozíciója (a pont) közötti karakterláncot. A keresési karakterlánc bárhol megegyezhet az előzmények sorában. Ez egy nem növekményes keresés.
Keressen előre az előzményekben az aktuális sor eleje és a pont közötti karakterláncot. A keresési karakterlánc bárhol megegyezhet az előzmények sorában. Ez egy nem növekményes keresés.
Szúrja be az előző parancs első argumentumát (általában az előző sorban a második szót) a pontba. Az n argumentummal illessze be az előző parancs nedik szavát (az előző parancs szavai 0 szóval kezdődnek). A negatív argumentum beszúrja az nedik szót az előző parancs végéről. Az n argumentum kiszámítása után az argumentum kibontásra kerül, mintha a "!n" előzménybővítés megadva lett volna.
Szúrja be az előző parancs utolsó argumentumát (az előző előzménybejegyzés utolsó szavát). Numerikus argumentumokkal pontosan úgy viselkedjen, mint a yank-nth-arg. A yank-last-arg egymást követő hívásai visszalépnek az előzmények listáján, és sorra beillesztik az egyes sorok utolsó szavát (vagy az argumentum által megadott szót az első híváshoz). Bármely numerikus argumentum, amelyet ezeknek az egymást követő hívásoknak adnak meg, meghatározza az előzményekben való mozgás irányát. A negatív argumentum irányt vált a történelemben (vissza vagy előre). Az előzménybővítési lehetőségeket az utolsó szó kinyerésére használják, mintha a "!$" előzménybővítés lett volna megadva.
Bővítse ki a vonalat, ahogy a héj teszi. Ez végrehajtja az álnevet és az előzményeket, valamint az összes shell szóbővítést. Az előzmények bővítésének leírásához lásd alább az TÖRTÉNELEM BŐVÍTÉSE részt.
Végezze el az előzmények bővítését az aktuális sorban. Az előzmények bővítésének leírásához lásd alább az TÖRTÉNELEM BŐVÍTÉSE részt.
Hajtsa végre az előzmények bővítését az aktuális sorban, és szúrjon be egy szóközt. Az előzmények bővítésének leírásához lásd alább az TÖRTÉNELEM BŐVÍTÉSE részt.
Hajtsa végre az álnév kiterjesztését az aktuális sorban. Az alias-bővítés leírásához lásd fent az ALIASES részt.
Előzmények és álnévbővítés végrehajtása az aktuális sorban.
A yank-last-arg szinonimája.
Fogadja el az aktuális sort végrehajtásra, és az aktuális sorhoz viszonyított következő sort kérje le az előzményekből szerkesztésre. A numerikus argumentum, ha megadja, az aktuális sor helyett használandó előzménybejegyzést határozza meg.
Hívjon meg egy szerkesztőt az aktuális parancssorban, és hajtsa végre az eredményt shell-parancsként. A Bash megpróbálja meghívni a következőt: $VISUAL, $EDITOR és emacs szerkesztőként, ebben a sorrendben.
A fájl végét jelző karakter, például a ``stty'' által beállítva. Ha ezt a karaktert akkor olvassa be, amikor nincs karakter a sorban, és a pont a sor elején van, a Readline a bemenet végeként értelmezi, és az EOF eredményt adja vissza.
Törölje a karaktert a ponton. Ha ez a függvény ugyanahhoz a karakterhez van kötve, mint a tty EOF karakter, mint általában a C-d, lásd fent az effektusokat.
Törölje a kurzor mögötti karaktert. Ha adott egy numerikus argumentumot, mentse el a törölt szöveget a kill ringre.
Törölje a kurzor alatti karaktert, kivéve, ha a kurzor a sor végén van, ebben az esetben a kurzor mögötti karakter törlődik.
Adja hozzá a következő beírt karaktert a sorhoz szó szerint. Így szúrhat be például olyan karaktereket, mint a C-q.
Tabulátor karakter beszúrása.
Illessze be a beírt karaktert.
A pont előtti karaktert húzza előre a ponton lévő karakter fölé, és mozgassa a pontot előre is. Ha a pont a sor végén van, akkor ez transzponálja a pont előtti két karaktert. A negatív érveknek nincs hatása.
Húzza a pont előtti szót a szó utáni szó mögé, és mozgassa a pontot is a szó fölé. Ha a pont a sor végén van, akkor ez transzponálja a sor utolsó két szavát.
Az aktuális (vagy az azt követő) szó nagybetűje. Negatív argumentum esetén írja nagybetűvel az előző szót, de ne mozgassa a pontot.
Kisbetűvel írd az aktuális (vagy a következő) szót. Negatív argumentum esetén kisbetűvel írd az előző szót, de ne helyezd át a pontot.
Az aktuális (vagy a következő) szót írd nagybetűvel. Negatív érv esetén nagy kezdőbetűvel írjuk az előző szót, de ne mozdítsuk el a pontot.
Felülírási mód váltása. Explicit pozitív numerikus argumentum esetén felülírási módba vált. Explicit, nem pozitív numerikus argumentummal átvált beszúrási módba. Ez a parancs csak az emacs módot érinti; A vi mód eltérően írja felül. A readline() minden hívása beszúrási módban kezdődik. Felülírási módban az önbeszúrásra kötött karakterek a szöveget egy ponton helyettesítik, nem pedig jobbra tolják. A backward-delete-char karakterek a pont előtti karaktert szóközzel helyettesítik. Alapértelmezés szerint ez a parancs nincs kötve.
Öld meg a szöveget ponttól a sor végéig.
Ölj vissza a sor elejére.
Ölj vissza a ponttól a sor elejéig. A megölt szöveg a kill-gyűrűre van mentve.
Öld meg az összes karaktert az aktuális sorban, függetlenül attól, hogy hol van a pont.
Öld meg ponttól az aktuális szó végéig, vagy ha szavak között, akkor a következő szó végéig. A szóhatárok megegyeznek az forward-word által használtakkal.
Öld meg a szót pont mögött. A szóhatárok megegyeznek a backward-word által használtakkal.
Öld meg ponttól az aktuális szó végéig, vagy ha szavak között, akkor a következő szó végéig. A szóhatárok megegyeznek a shell-forward-word által használtakkal.
Öld meg a szót a pont mögött. A szóhatárok megegyeznek a shell-backward-word által használtakkal.
Öld meg a szót a pont mögött, szóhatárként szóközt használva. A megölt szöveg a kill-gyűrűre van mentve.
Öld meg a szót pont mögé, szóhatárként szóközt és perjelet használva. A megölt szöveg a kill-gyűrűre van mentve.
Töröljön minden szóközt és tabulátort a pont körül.
Öld meg a szöveget az aktuális régióban.
Másolja a szöveget a régióban a kill pufferbe.
Másolja a pont előtti szót a kill pufferbe. A szóhatárok ugyanazok, mint a visszafelé szó.
Másolja a pontot követő szót a kill pufferbe. A szóhatárok ugyanazok, mint az előre-szó.
A pontnál rántsa be az ölőgyűrű tetejét a pufferbe.
Forgassa el az ölőgyűrűt, és rántsa fel az új felsőt. Csak yank vagy yank-pop után működik.
Adja hozzá ezt a számjegyet a már felhalmozódó argumentumhoz, vagy indítson új argumentumot. M-- negatív vitát indít.
Ez egy másik módja egy argumentum megadásának. Ha ezt a parancsot egy vagy több számjegy követi, opcionálisan bevezető mínuszjellel, akkor ezek a számjegyek határozzák meg az argumentumot. Ha a parancsot számjegyek követik, az univerzális argumentum ismételt végrehajtása befejezi a numerikus argumentumot, de egyébként figyelmen kívül hagyja. Speciális esetként, ha ezt a parancsot közvetlenül egy olyan karakter követi, amely nem számjegy és nem mínuszjel, akkor a következő parancs argumentumszámát megszorozzuk néggyel. Az argumentumok száma kezdetben egy, így ennek a függvénynek az első végrehajtásakor az argumentum négyes, a második alkalommal tizenhatos lesz, és így tovább.
Próbálja meg befejezni a pont előtti szöveget. A Bash a szöveget változóként (ha a szöveg $-val kezdődik), felhasználónévként (ha a szöveg ~-val kezdődik), gazdagépnévként (ha a szöveg @-val kezdődik) vagy parancsként (beleértve az álneveket és funkciókat) megkísérli a befejezésre. Ha ezek egyike sem ad egyezést, a fájlnév befejezése megkísérli.
Sorolja fel a pont előtti szöveg lehetséges kiegészítéseit!
Szúrja be a szöveg összes befejezését a pont elé, amelyet a lehetséges kiegészítések generáltak volna.
Hasonló a befejezéshez, de a kiegészítendő szót egyetlen egyezéssel helyettesíti a lehetséges kiegészítések listájából. A menü befejezése lépések ismételt végrehajtása a lehetséges befejezések listáján keresztül, minden egyezés beszúrásával. A befejezések listájának végén megszólal a csengő (abell-style beállításától függően), és visszaáll az eredeti szöveg. Az n argumentum n pozíciót mozdít előre az egyezések listájában; negatív argumentum használható a listában való visszalépéshez. Ez a parancs a TAB-hoz van kötve, de alapértelmezés szerint nincs kötve.
Megegyezik a menu-complete-vel, de visszafelé mozog a lehetséges kiegészítések listáján, mintha a menu-complete negatív argumentumot kapott volna. Ez a parancs alapértelmezés szerint nincs kötve.
Törli a kurzor alatti karaktert, ha nem a sor elején vagy végén (például delete-char). Ha a sor végén van, ugyanúgy viselkedik, mint a lehetséges befejezések. Ez a parancs alapértelmezés szerint nincs kötve.
Próbálja meg a fájlnév befejezését a pont előtti szövegen.
Sorolja fel a pont előtti szöveg lehetséges kiegészítéseit, fájlnévként kezelve.
Próbálja meg befejezni a pont előtti szöveget, felhasználónévként kezelve.
Sorolja fel a pont előtti szöveg lehetséges kiegészítéseit, felhasználói névként kezelve.
Próbálja meg befejezni a pont előtti szöveget, shell-változóként kezelve.
Sorolja fel a pont előtti szöveg lehetséges kiegészítéseit, shell-változóként kezelve!
Próbálja meg befejezni a pont előtti szöveget, és kezelje gazdagépnévként.
Sorolja fel a pont előtti szöveg lehetséges kiegészítéseit, hosztnévként kezelve.
Próbálja meg befejezni a pont előtti szöveget, parancsnévként kezelve. A parancskiegészítés megpróbálja egyeztetni a szöveget az álnevekkel, a lefoglalt szavakkal, a shell-függvényekkel, a shell beépített elemeivel és végül a végrehajtható fájlnevekkel, ebben a sorrendben.
Sorolja fel a pont előtti szöveg lehetséges kiegészítéseit, parancsnévként kezelve!
Próbálja meg befejezni a pont előtti szöveget, összehasonlítva a szöveget az előzménylista soraival a lehetséges befejezési egyezések érdekében.
Menü befejezésének megkísérlése a pont előtti szövegen, összehasonlítva a szöveget az előzménylista soraival a lehetséges befejezési egyezések érdekében.
Végezze el a fájlnév-kiegészítést, és illessze be a lehetséges kiegészítések listáját a kapcsos zárójelek közé, hogy a lista elérhető legyen a parancsértelmező számára (lásd fent a Képzárójel-kiterjesztés részt).
Kezdje el menteni a beírt karaktereket az aktuális billentyűzet makróba.
Állítsa le a beírt karakterek mentését az aktuális billentyűzetmakróba, és tárolja a definíciót.
Futtassa újra az utoljára definiált billentyűzet makrót úgy, hogy a makró karaktereit úgy jeleníti meg, mintha a billentyűzeten írták volna be.
Nyomtassa ki az utolsó definiált billentyűzet makrót az inputrc fájlnak megfelelő formátumban.
Olvassa el az inputrc fájl tartalmát, és foglalja bele az ott található kötéseket vagy változó-hozzárendeléseket.
Szakítsa meg az aktuális szerkesztési parancsot, és nyomja meg a terminál csengőjét (a bell-style beállításától függően).
Ha a metafikált x karakter nagybetűs, futtassa a parancsot, amely a megfelelő kisbetűs metafire karakterhez van kötve. A viselkedés nem definiált, ha az x már kisbetű.
Metafikálja a következő beírt karaktert.
Az ESC f a Meta-f-nek felel meg.
Növekményes visszavonás, minden sornál külön megjegyezve.
Az ezen a sorban végzett összes módosítás visszavonása. Ez olyan, mintha az Undo parancsot elégszer végrehajtaná ahhoz, hogy a vonal visszaálljon a kezdeti állapotába.
Hajtsa végre a hullámvonal-kiterjesztést az aktuális szóra.
Állítsa a jelet a pontra. Ha numerikus argumentumot adunk meg, a jel erre a pozícióra kerül.
Cserélje fel a pontot a jellel. A kurzor aktuális pozíciója a mentett pozícióra kerül, a régi kurzorpozíció pedig jelölésként kerül mentésre.
Egy karakter beolvasásra kerül, és a pont a karakter következő előfordulására kerül. A negatív szám korábbi előfordulásokat keres.
Egy karakter beolvasásra kerül, és a pont a karakter előző előfordulására kerül. A negatív szám a következő előfordulásokat keresi.
Olvasson el elegendő karaktert ahhoz, hogy több billentyűből álló sorozatot használjon, például az olyan billentyűkhöz, mint a Kezdőlap és a Vége. Az ilyen sorozatok egy Control Sequence Indicator (CSI) jelzéssel kezdődnek, általában ESC-[. Ha ez a sorozat a "\["-hez van kötve, akkor az ilyen szekvenciákat előállító billentyűknek nincs hatása, hacsak nincsenek kifejezetten egy readline parancshoz kötve, ahelyett, hogy kósza karaktereket szúrnának be a szerkesztőpufferbe. Ez alapértelmezés szerint nincs kötve, de általában az ESC-[.
Numerikus argumentum nélkül a readline comment-begin változó értéke beszúrásra kerül az aktuális sor elejére. Ha numerikus argumentumot adunk meg, ez a parancs kapcsolóként működik: ha a sor elején lévő karakterek nem egyeznek a comment-begin értékével, akkor az érték beszúrásra kerül, ellenkező esetben a comment-begin karakterei törlődnek a sor elejéről. A sor mindkét esetben úgy lesz elfogadva, mintha újsort írtak volna be. A comment-begin alapértelmezett értéke miatt ez a parancs az aktuális sort shell megjegyzéssé teszi. Ha egy numerikus argumentum a megjegyzés karakter eltávolítását okozza, a sort a shell hajtja végre.
A pont előtti szót a rendszer az elérési út kibővítésének mintájaként kezeli, egy csillaggal hozzáfűzve. Ez a minta az egyező fájlnevek listájának létrehozására szolgál a lehetséges kiegészítésekhez.
A pont előtti szót a rendszer mintaként kezeli az elérési út kibővítéséhez, és beszúrja a megfelelő fájlnevek listáját a szó helyére. Ha numerikus argumentumot ad meg, a rendszer egy csillagot fűz hozzá az elérési útnév kiterjesztés előtt.
Megjelenik azon bővítmények listája, amelyeket a glob-expand-word generált volna, és a vonal újrarajzolódik. Ha numerikus argumentumot ad meg, a rendszer egy csillagot fűz hozzá az elérési útnév kiterjesztés előtt.
Nyomtassa ki az összes függvényt és azok kulcs-összerendeléseit a readline kimeneti adatfolyamba. Ha numerikus argumentumot adunk meg, akkor a kimenet úgy van formázva, hogy egy inputrc fájl részévé váljon.
Nyomtassa ki az összes beállítható readline változót és azok értékét a readline kimeneti adatfolyamba. Ha numerikus argumentumot adunk meg, akkor a kimenet úgy van formázva, hogy egy inputrc fájl részévé váljon.
Nyomtassa ki a makrókhoz kötött összes readline billentyűsorozatot és az általuk kiadott karakterláncokat. Ha numerikus argumentumot adunk meg, akkor a kimenet úgy van formázva, hogy egy inputrc fájl részévé váljon.
Verzióinformációk megjelenítése a bash aktuális példányáról.
Amikor egy olyan parancs argumentumának szókiegészítését kíséreljük meg, amelyhez a complete beépített modul segítségével befejezési specifikációt (a compspec) definiáltak (lásd alább a SHELL BEÉPÍTETT PARANCSOK című részt), a programozható befejezési szolgáltatások meghívásra kerülnek.
Először a parancs neve kerül azonosításra. Ha a parancsszó az üres karakterlánc (a befejezést egy üres sor elején kísérelték meg), akkor a rendszer a -E kapcsolóval complete definiált compspec-et használja. Ha ehhez a parancshoz compspec van megadva, akkor a compspec a szó lehetséges kiegészítéseinek listáját generálja. Ha a parancsszó egy teljes elérési út, akkor először a teljes elérési út compspec-jét kell keresni. Ha nem található compspec a teljes elérési útnévhez, akkor a rendszer megpróbálja megtalálni a compspec-et az utolsó perjelet követő részhez. Ha ezek a keresések nem eredményeznek compspec-t, akkor a -D opcióval complete definiált compspec lesz alapértelmezett. Ha nincs alapértelmezett compspec, a bash megkísérli az álnév kiterjesztését a parancsszóra végső megoldásként, és megpróbálja megtalálni a parancsszó compspec-jét minden sikeres bővítésből.
Miután megtalálta a compspec-et, a rendszer a megfelelő szavak listájának létrehozására szolgál. Ha nem található compspec, akkor az alapértelmezett bash befejezést hajtja végre a fenti Befejezés részben leírtak szerint.
Először a compspec által meghatározott műveletek kerülnek felhasználásra. Csak azok a találatok jelennek meg, amelyek előtt a befejezett szó szerepel. Ha a -f vagy a -d opciót használja a fájlnév- vagy könyvtárnév-kiegészítéshez, a FIGNORE shell-változót a rendszer az egyezések szűrésére használja.
A -G opció elérési útnév-bővítési mintája által megadott befejezések ezután jönnek létre. A minta által generált szavaknak nem kell megegyezniük a befejezett szóval. A GLOBIGNORE shell változót nem használják az egyezések szűrésére, de a FIGNORE változót használják.
Ezután a rendszer a -W opció argumentumaként megadott karakterláncot veszi figyelembe. A karakterláncot először az IFS speciális változó karaktereinek elválasztóként történő felhasználásával osztja fel. A Shell idézet megtiszteltetés. Ezután minden szó kibővítésre kerül a kapcsos zárójelek, a hullámvonal-kiterjesztés, a paraméter- és változóbővítés, a parancshelyettesítés és az aritmetikai bővítés segítségével, a fenti KIBŐVÍTÉS részben leírtak szerint. Az eredmények felosztása a fenti Szófelosztás részben leírt szabályok szerint történik. A bővítés eredményeit a befejezett szó előtagjaként párosítják, és a megfelelő szavakból a lehetséges kiegészítések lesznek.
Miután ezek az egyezések létrejöttek, a -F és a -C kapcsolókkal megadott shell-függvények vagy parancsok meghívásra kerülnek. A parancs vagy függvény meghívásakor a COMP_LINE, COMP_POINT, COMP_KEY és COMP_TYPE változók a Shell-változók részben leírtak szerint vannak hozzárendelve. Ha egy shell függvényt hívnak meg, a COMP_WORDS és a COMP_CWORD változók is be vannak állítva. A függvény vagy parancs meghívásakor az első argumentum ($1) annak a parancsnak a neve, amelynek argumentumait befejezik, a második argumentum ($2) a befejezés alatt álló szó, a harmadik argumentum ($3) pedig az aktuális parancssorban befejezett szót megelőző szó. Nem történik meg a generált kiegészítések szűrése a befejezett szóhoz; a függvénynek vagy parancsnak teljes szabadsága van az egyezések generálásában.
A -F billentyűvel megadott függvények először kerülnek meghívásra. A függvény bármelyik shell-lehetőséget használhatja, beleértve az alább leírt compgen beépített modult is, hogy létrehozza az egyezéseket. A lehetséges kiegészítéseket a COMPREPLY tömbváltozóba kell helyeznie, tömbelemenként egyet.
Ezután a -C kapcsolóval megadott bármely parancs meghívásra kerül a parancshelyettesítéssel egyenértékű környezetben. Ki kell nyomtatnia a befejezések listáját, soronként egyet a szabványos kimenetre. Ha szükséges, a fordított perjel használható az újsor megszakítására.
Az összes lehetséges befejezés létrehozása után a rendszer a -X opcióval megadott szűrőket alkalmazza a listára. A szűrő egy minta, amelyet az elérési út kiterjesztésére használnak; egy & jelet a mintában felváltja a befejezett szó szövege. A szó szerinti & karaktereket fordított perjellel meg lehet szüntetni; a fordított perjel eltávolításra kerül a mérkőzés megkísérlése előtt. A mintának megfelelő kiegészítések törlődnek a listáról. A vezető ! tagadja a mintát; ebben az esetben a mintának nem megfelelő kiegészítések eltávolításra kerülnek. Ha a nocasematch shell opció engedélyezve van, az egyezés az alfabetikus karakterek kis- és nagybetűitől függetlenül történik.
Végül a -P és -S opciókkal megadott előtagok és utótagok hozzáadódnak a befejezési lista minden egyes tagjához, és az eredményt a rendszer visszaküldi a readline befejezési kódba, mint a lehetséges kiegészítések listáját.
Ha a korábban alkalmazott műveletek nem generálnak egyezést, és a -o dirnames opciót a complete értékre adták a compspec definiálásakor, a címtárnév-kiegészítés megkísérli.
Ha a -o plusdirs opciót a complete értékre adták meg a compspec meghatározásakor, akkor a rendszer megpróbálja a könyvtárnév-kiegészítést, és minden egyezés hozzáadódik a többi művelet eredményéhez.
Alapértelmezés szerint, ha egy compspec található, bármit is generál, az visszakerül a befejezési kódba a lehetséges befejezések teljes halmazaként. A rendszer nem kísérli meg az alapértelmezett bash befejezéseket, és a fájlnév-kiegészítés olvasási sorában le van tiltva. Ha a -o bashdefault opciót a complete értékre adták meg a compspec meghatározásakor, akkor a rendszer az bash alapértelmezett befejezéseket kísérli meg, ha a compspec nem generál egyezést. Ha a -o default opciót a complete értékre adták meg a compspec meghatározásakor, akkor a readline alapértelmezett befejezése akkor történik meg, ha a compspec (és, ha megkísérli, az alapértelmezett bash befejezések) nem generál egyezést.
Amikor egy compspec azt jelzi, hogy a könyvtárnév-kiegészítés szükséges, a programozható befejező funkciók arra kényszerítik a readline-t, hogy perjelet fűzzenek a befejezett nevekhez, amelyek szimbolikus hivatkozások a könyvtárakhoz, a mark-directories readline változó értékétől függően, függetlenül a mark-symlinked-directories readlineories változó beállításától.
Van némi támogatás a befejezések dinamikus módosításához. Ez a leghasznosabb, ha a complete -D paraméterrel megadott alapértelmezett befejezéssel együtt használjuk. A befejezéskezelőként végrehajtott shell-függvények 124-es kilépési állapot visszaadásával jelezhetik, hogy a befejezést újra meg kell próbálni. Ha egy shell függvény 124-et ad vissza, és megváltoztatja a befejezést megkísérelt parancshoz társított compspec-et (elsőként megadva). argumentum, amikor a függvény végrehajtódik), a programozható befejezés újraindul az elejétől, és megpróbál új compspec-et találni a parancshoz. Ez lehetővé teszi a befejezések halmazának dinamikus felépítését, amikor a befejezést megkíséreljük, ahelyett, hogy azokat egyszerre töltenék be.
Például, ha feltételezzük, hogy van egy compspec-könyvtár, amelyek mindegyike a parancs nevének megfelelő fájlban van tárolva, a következő alapértelmezett befejező függvény dinamikusan tölti be a befejezéseket:
_completion_loader()
{
. "/etc/bash_completion.d/$1.sh" >/dev/null 2>&1 && return 124
teljes -D -F _completion_loader -o bashdefault -o default
Ha a beépített -o history opció engedélyezve van, a shell hozzáférést biztosít a parancselőzményekhez, a korábban begépelt parancsok listájához. A HISTSIZE változó értéke az előzménylistába mentendő parancsok száma. Az utolsó HISTSIZE parancsok szövege (alapértelmezett 500) mentésre kerül.
A shell minden parancsot az előzménylistában tárol a paraméter- és változóbővítés előtt (lásd fent az EXPANSION részt), de az előzménybővítés végrehajtása után, a HISTIGNORE shell-változók értékétől függően. és a HISTCONTROL.
Indításkor az előzmények a HISTFILE változó által elnevezett fájlból inicializálódnak (alapértelmezett ~/.bash_history). A HISTFILE értékkel megnevezett fájlt szükség esetén a rendszer levágja, hogy legfeljebb annyi sort tartalmazzon, mint ahány sor a HISTFILESIZE értékben megadott. Ha a HISTFILESIZE nincs beállítva, vagy nullára van állítva, egy nem numerikus érték, vagy egy numerikus érték kisebb, mint nulla, az előzményfájl nem csonkolódik.
Az előzményfájl beolvasásakor az előzmény megjegyzés karakterrel kezdődő sorok, amelyeket közvetlenül egy szám követ, a következő előzménysor időbélyegeiként értelmezik. Ezek az időbélyegek opcionálisan megjelennek a HISTTIMEFORMAT változó értékétől függően. Amikor az előzményeket engedélyező shell kilép, az utolsó $HISTSIZE sorok átmásolódnak az előzmények listájából a $HISTFILE fájlba.
Ha a histappend shell opció engedélyezve van (lásd a shopt leírását a SHELL BEÉPÍTETT PARANCSOK alatt alább), a sorok hozzá lesznek fűzve az előzményfájlhoz, ellenkező esetben az előzményfájl felülíródik. Ha a HISTFILE nincs beállítva, vagy ha az előzményfájl nem írható, az előzmények nem kerülnek mentésre. Ha a HISTTIMEFORMAT változó be van állítva, az időbélyegek az előzményfájlba íródnak, az előzmény megjegyzés karakterrel megjelölve, így megőrizhetők a shell-munkameneteken keresztül. Ez az előzmény megjegyzés karaktert használja az időbélyegek megkülönböztetésére a többi előzménysortól.
Az előzmények mentése után az előzményfájlt a rendszer úgy csonkolja, hogy legfeljebb HISTFILESIZE sort tartalmazzon. Ha a HISTFILESIZE nincs beállítva, vagy nullára van állítva, egy nem numerikus érték, vagy egy numerikus érték kisebb, mint nulla, az előzményfájl nem csonkolódik.
Az fc beépített paranccsal (lásd alább a SHELL BEÉPÍTETT PARANCSOK című részt) használható az előzménylista egy részének listázására, szerkesztésére és újrafuttatására. A beépített előzmények használható az előzmények listájának megjelenítésére vagy módosítására, valamint az előzményfájl manipulálására. Parancssori szerkesztés esetén minden szerkesztési módban elérhetők a keresési parancsok, amelyek hozzáférést biztosítanak az előzmények listájához.
A shell lehetővé teszi annak szabályozását, hogy mely parancsok kerüljenek mentésre az előzmények listájára. A HISTCONTROL és HISTIGNORE változók beállíthatók úgy, hogy a shell a beírt parancsoknak csak egy részét mentse el. A cmdhist shell opció, ha engedélyezve van, a shell megpróbálja elmenteni egy többsoros parancs minden sorát ugyanabban az előzménybejegyzésben, és szükség esetén pontosvesszőket ad hozzá a szintaktikai helyesség megőrzése érdekében. A lithist shell beállítás hatására a parancsértelmező pontosvessző helyett beágyazott újsorokkal menti el a parancsot. Tekintse meg a beépített shopt leírását alább a SHELL BEÉPÍTETT PARANCSOK alatt a shell opciók beállításával és hatástalanításával kapcsolatos információkért.
A shell támogatja az előzmények bővítési szolgáltatását, amely hasonló a csh előzménybővítményéhez. Ez a szakasz leírja, hogy milyen szintaktikai szolgáltatások állnak rendelkezésre. Ez a funkció alapértelmezés szerint engedélyezve van az interaktív parancsértelmezőknél, és letiltható a +H kapcsolóval a set beépített parancshoz (lásd alább a SHELL BEÉPÍTETT PARANCSOK részt). A nem interaktív héjak alapértelmezés szerint nem hajtják végre az előzmények bővítését.
Az előzménybővítések bevezetik az előzmények listájából származó szavakat a beviteli adatfolyamba, megkönnyítve a parancsok ismétlését, az előző parancs argumentumainak beszúrását az aktuális beviteli sorba, vagy a korábbi parancsok hibáinak gyors kijavítását.
Az előzmények kibővítése közvetlenül a teljes sor beolvasása után, mielőtt a shell szavakra bontja azt, és minden soron külön-külön, az előző sorok idézésének figyelembevétele nélkül történik. Két részben játszódik. Az első annak meghatározása, hogy az előzmények listájából melyik sort használja a helyettesítés során. A második a sor egyes részei kiválasztása az aktuális sorba való felvételhez. Az előzményekből kiválasztott sor az esemény, és a sor azon részei, amelyekre hatást gyakorolnak, szavak. Különféle módosítók állnak rendelkezésre a kiválasztott szavak kezeléséhez. A sor ugyanúgy van szavakra bontva, mint a bemenet olvasásakor, így több metakaraktertől elválasztott, idézőjelekkel körülvett szó egy szónak minősül. A történelembővítéseket a történelembővítés karakter megjelenése vezeti be, amely alapértelmezés szerint ! . Csak a fordított perjel ( \ ) és a szimpla idézőjelek idézhetik az előzménybővítő karaktert, de az előzménybővítő karaktert is idézőjelként kezeljük, ha közvetlenül megelőzi a záró kettős idézőjelet egy dupla idézőjeles karakterláncban.
Számos karakter gátolja az előzménykibontást, ha közvetlenül az előzménybővítő karakter után található, még akkor is, ha nem idézőjelek meg: szóköz, tabulátor, újsor, kocsivisszaadás és =. Ha az extglob shell opció engedélyezve van, az ( szintén gátolja a bővítést.
Számos, a shopt beépített shell-beállítás használható a történelembővítés viselkedésének testreszabására. Ha a histverify shell opció engedélyezve van (lásd a beépített shopt leírását alább), és a readline használatban van, az előzmények helyettesítései nem kerülnek azonnal át a shell elemzőbe. Ehelyett a kibontott sor újra betöltődik a readline szerkesztőpufferbe további módosítás céljából. Ha a readline használatban van, és a histreedit shell opció engedélyezve van, a sikertelen előzmények helyettesítése újra betöltődik a readline szerkesztőpufferbe javítás céljából. A beépített history parancs -p kapcsolója használható annak megtekintéséhez, hogy az előzménybővítés mit fog tenni használat előtt. A beépített -s opcióval a beépített history parancsokat lehet használni arra, hogy parancsokat adjon az előzmények listájának végére anélkül, hogy ténylegesen végrehajtaná azokat, így azok későbbi visszahíváshoz elérhetők.
A shell lehetővé teszi az előzménybővítési mechanizmus által használt különféle karakterek vezérlését (lásd a histchars leírását fent a Shell változók alatt). A shell a történelem megjegyzés karaktert használja az előzmények időbélyegeinek megjelölésére az előzményfájl írásakor.
Az eseményjelölő az előzmények listájában szereplő parancssori bejegyzésre való hivatkozás. Hacsak a hivatkozás nem abszolút, az események az előzmények listájában lévő aktuális pozícióhoz viszonyítva vannak.
Indítsa el az előzmények helyettesítését, kivéve, ha ezt követi egy üres, újsor, kocsivissza,=vagy ( (ha az extglob shell opció engedélyezve van a shopt használatával beépített).
Lásd az n parancssort.
Tekintse meg az aktuális parancsot mínusz n.
Lásd az előző parancsot. Ez a '!-1' szinonimája.
Tekintse meg az előzmények listájában az aktuális pozíciót megelőző legutóbbi parancsot, amely a string karakterlánccal kezdődik.
Tekintse meg a karakterláncot tartalmazó előzménylistában az aktuális pozíciót megelőző legutóbbi parancsot. A záró ? kihagyható, ha a karakterlánc után azonnal újsor következik. Ha a karakterlánc hiányzik, akkor a legutóbbi keresésből származó karakterlánc kerül felhasználásra; hiba, ha nincs előző keresési karakterlánc.
Gyors csere. Ismételje meg az előző parancsot, és a karakterlánc1 helyére cserélje a karakterlánc2-t. Egyenértékű a következővel: ``!!:s^karakterlánc1^karakterlánc2^'' (lásd a Módosítók részt alább).
Az eddig beírt teljes parancssor.
A szójelölők a kívánt szavak kiválasztására szolgálnak az eseményből. A : elválasztja az eseményspecifikációt a megjelölő szótól. Kihagyható, ha a szójelölő ^, $, *, - vagy karakterrel kezdődik >%. A szavak számozása a sor elejétől kezdődik, az első szót 0 (nulla) jelöli. A szavak beszúródnak az aktuális sorba, szóközzel elválasztva.
A nulladik szó. A shell számára ez a parancsszó.
Az nedik szó.
Az első érv. Vagyis az 1. szó.
Az utolsó szó. Ez általában az utolsó argumentum, de a nulladik szóra bővül, ha csak egy szó van a sorban.
Az első szó, amelyre a legutóbbi `?karakterlánc?' keresés, ha a keresési karakterlánc olyan karakterrel kezdődik, amely egy szó részét képezi.
Egy sor szó; A „-y” a „0-y” rövidítése.
Minden szó, kivéve a nulladik. Ez az `1-$' szinonimája. Nem hiba a * használata, ha csak egy szó van az eseményben; ebben az esetben az üres karakterlánc kerül visszaadásra.
Az x-$ rövidítése.
Az x-$ rövidítése, mint az x*, de kihagyja az utolsó szót. Ha az x hiányzik, az alapértelmezett érték 0.
Ha egy szójelölőt eseményspecifikáció nélkül adunk meg, akkor a rendszer az előző parancsot használja eseményként.
Az opcionális szójelölő után egy vagy több következő módosító szekvenciája jelenhet meg, mindegyik előtt egy `:'. Ezek módosítják vagy szerkesztik az előzményeseményből kiválasztott szót vagy szavakat.
Távolítsa el a záró fájlnév-összetevőt, és csak a fejet hagyja meg.
Távolítsa el az összes vezető fájlnév-összetevőt, hagyja meg a végét.
Távolítsa el a .xxx formájú utótagot, hagyja meg az alapnevet.
Távolítsa el az összeset, kivéve a záró utótagot.
Nyomtassa ki az új parancsot, de ne hajtsa végre.
Idézze a behelyettesített szavakat, elkerülve a további helyettesítéseket.
Idézze a behelyettesített szavakat a q karakterhez hasonlóan, de az üres és újsorok helyén törje meg a szavakat. A q és x módosítók kölcsönösen kizárják egymást; az utoljára szállított kerül felhasználásra.
Helyettesítse az új szót a régi első előfordulására az eseménysorban. Bármely karakter használható határolóként a/helyett. A végső határoló nem kötelező, ha az eseménysor utolsó karaktere. A határoló jelet régi és új idézheti egyetlen fordított perjellel. Ha az & megjelenik az új szövegben, a helyébe a régi lép. Egyetlen fordított perjel a &-t idézi. Ha a old nulla, akkor az utolsó régi helyettesítésre lesz beállítva, vagy ha nem történt korábbi helyettesítés, akkor az utolsó karakterlánc a !?karakterlánc[?] keresésben. Ha az new értéke null, akkor minden megfelelő old törlődik.
Ismételje meg az előző helyettesítést.
A változtatások alkalmazását a teljes eseménysoron okozhatja. Ezt a `:s-vel együtt használjuk (pl. `:gs/old/ new/') vagy `:&'. Ha a `:s' karakterrel együtt használjuk, bármilyen elválasztójel használható a/helyett, és a végső határoló nem kötelező, ha az eseménysor utolsó karaktere. Az a a g szinonimájaként használható.
Alkalmazza egyszer a következő `s' vagy `&' módosítót az eseménysor minden szavára.
Hacsak másképp nem jelezzük, minden beépített parancs, amely ebben a szakaszban a - karakterek előtt opciókat fogad el, elfogadja a -- jelet az opciók végének jelzésére. A :, igaz, hamis és teszt/[ beépített modulok nem fogadják el a beállításokat, és nem kezelik speciálisan a -- elemet. A exit, logout, return, break, continue, let és shift beépített modulok elfogadják és feldolgozzák a - kezdetű argumentumokat a -- nélkül. Más beépített modulok, amelyek elfogadják az argumentumokat, de nincs megadva elfogadó opcióként, a - kezdetű argumentumokat érvénytelen opcióként értelmezik, és a -- elemet igénylik az értelmezés megakadályozásához.
Hatástalan; a parancs nem tesz mást, mint az argumentumok kiterjesztése és a megadott átirányítások végrehajtása. A visszatérési állapot nulla.
Olvassa el és hajtsa végre a fájlnév parancsait az aktuális shell-környezetben, és visszaadja a fájlnévből utoljára végrehajtott parancs kilépési állapotát. Ha a fájlnév nem tartalmaz perjelet, akkor a rendszer a PATH fájlneveket használja a fájlnevet tartalmazó könyvtár megkeresésére. A PATH útvonalon keresett fájlnak nem kell végrehajthatónak lennie. Ha a bash nincs posix módban, akkor a rendszer az aktuális könyvtárban keres, ha nem található fájl a PATH mappában. Ha a beépített shopt parancs forrásútvonala opciója ki van kapcsolva, akkor a PATH nem keres. Ha argumentumot adnak meg, akkor azok a fájlnév végrehajtásakor pozícióparaméterekké válnak.
Ellenkező esetben a helyzeti paraméterek változatlanok. Ha a -T opció engedélyezve van, a forrás örökli a DEBUG csapdáját; ha nem, akkor a rendszer a DEBUG trap karakterláncot elmenti és visszaállítja a source hívás körül, a source pedig hatástalanítja a DEBUG trap-et végrehajtás közben. Ha a -T nincs beállítva, és a forrásfájl megváltoztatja a DEBUG csapdát, akkor az új érték megmarad, amikor a source befejeződik. A visszatérési állapot a parancsfájlban utoljára kiadott parancs állapota (0, ha nem futnak parancsok), és hamis, ha a fájlnév nem található vagy nem olvasható.
Az Alias argumentumok nélkül vagy a -p opcióval kinyomtatja az álnevek listáját alias name=< formábanérték a szabványos kimeneten. Az argumentumok megadásakor egy álnév van megadva minden névhez, amelynek értéke meg van adva. Az value záró szóköze azt eredményezi, hogy az álnév kibontásakor a következő szót ellenőrzi az álnév helyettesítése. Az argumentumlistában szereplő minden név esetén, amelyhez nincs megadva érték, a rendszer kinyomtatja az álnév nevét és értékét. Az Alias true értéket ad vissza, kivéve, ha olyan nevet adnak meg, amelyhez nincs álnév megadva.
Minden felfüggesztett feladatot jobspec folytasson a háttérben, mintha a & gombbal kezdték volna. Ha a jobspec nincs jelen, a rendszer az jelenlegi feladat shell-fogalmát használja. A bg jobspec 0 értéket ad vissza, hacsak nem fut, ha a jobvezérlés le van tiltva, vagy ha engedélyezve van a jobvezérléssel, a megadott jobspec nem található vagy elindult. munkaellenőrzés nélkül.
Jelenítse meg az aktuális readline billentyű- és funkció-összerendeléseket, kapcsolódjon egy billentyűsorozathoz egy readline függvényhez vagy makróhoz, vagy állítson be egy readline változót. Minden nem opciós argumentum egy parancs, ahogyan az .inputrc fájlban megjelenne, de minden kötést vagy parancsot külön argumentumként kell átadni; például '"\C-x\C-r": újraolvassa az init-fájlt'. Az opciók, ha vannak, a következő jelentéssel bírnak:
- -m keymap
Használja a billentyűkiosztást a következő összerendelések által érintett billentyűleképezésként. Az elfogadható keymap nevek: emacs, emacs-standard, emacs-meta, emacs-ctlx, vi, vi-move, vi-command és vi-insert. vi egyenértékű a vi-command szóval (a vi-move szintén szinonimája); Az emacs egyenértékű az emacs-standard kifejezéssel.
- -l
Sorolja fel az összes readline függvény nevét.
- -p
Jelenítse meg a readline függvényneveket és kötéseket oly módon, hogy újra lehessen őket olvasni.
- -P
Sorolja fel az aktuális readline függvényneveket és kötéseket.
- -s
Jelenítse meg a makrókhoz kötött readline billentyűsorozatokat és az általuk kiadott karakterláncokat oly módon, hogy azokat újra lehessen olvasni.
- -S
A makrókhoz kötött readline billentyűsorozatok és az általuk kiadott karakterláncok megjelenítése.
- -v
Jelenítse meg az readline változóneveket és -értékeket oly módon, hogy azokat újra lehessen olvasni.
- -V
Sorolja fel az aktuális readline változóneveket és értékeket.
- -f filename
Kulcs-összerendelések olvasása a fájlnévből.
- -q function
Kérdezze meg, mely kulcsok hívják meg a megnevezett függvényt.
- -u function
Oldja fel az elnevezett függvényhez kötött összes billentyűt.
- -r keyseq
Távolítsa el a keyseq minden jelenlegi összerendelését.
- -x keyseq:shell-command
A shell-command parancs végrehajtása a keyseq megadásakor. A shell-command végrehajtásakor a shell a READLINE_LINE változót a readline sorpuffer tartalmára, a READLINE_POINT és READLINE_MARK változókat pedig a beszúrási pont aktuális helyére (a megjelölt beszúrási pontra) állítja (a megjelölt mentési pontra.
Ha a végrehajtott parancs megváltoztatja a READLINE_LINE, READLINE_POINT vagy READLINE_MARK bármelyik értékét, ezek az új értékek megjelennek a szerkesztési állapotban.
- -X
Sorolja fel a shell-parancsokhoz kötött összes billentyűsorozatot és a kapcsolódó parancsokat olyan formátumban, amely újra felhasználható bemenetként.
A visszatérési érték 0, kivéve, ha fel nem ismert opciót adnak meg, vagy hiba történt.
Lépjen ki egy for, while, ig vagy select ciklusból. Ha az n meg van adva, törje meg az n szintet. Az n értékének ≥ 1-nek kell lennie. Ha az n nagyobb, mint a befoglaló hurkok száma, akkor az összes befoglaló hurokból kilép. A visszatérési érték 0, hacsak az n nem nagyobb, mint 1, vagy egyenlő azzal.
Hajtsa végre a megadott beépített shellt, argumentumot adva át neki, és adja vissza a kilépési állapotát. Ez akkor hasznos, ha olyan függvényt definiálunk, amelynek neve megegyezik a beépített héjéval, megőrizve a beépített funkcionalitást a függvényen belül. A beépített cd-et általában így definiálják újra. A visszatérési állapot hamis, ha a shell-builtin nem egy shell beépített parancs.
Bármely aktív szubrutinhívás kontextusát adja vissza (a shell függvény vagy a . vagy a source beépített modullal végrehajtott szkript). Az kifejezés nélkül a hívó megjeleníti az aktuális szubrutinhívás sorszámát és forrásfájlnevét. Ha egy nem negatív egész számot ad meg kifejezésként, a hívó megjeleníti a sorszámot, a szubrutin nevét és a forrásfájlt, amely megfelel az aktuális végrehajtási hívási veremben az adott pozíciónak. Ez az extra információ felhasználható például veremnyomok nyomtatására. Az aktuális keret a 0. képkocka. A visszatérési érték 0, kivéve, ha a shell nem hajt végre szubrutinhívást, vagy az expr nem felel meg egy érvényes pozíciónak a hívási veremben.
Módosítsa az aktuális könyvtárat a következőre: dir. ha a dir nincs megadva, akkor a HOME shell változó értéke az alapértelmezett. A dir utáni további argumentumok figyelmen kívül maradnak. A CDPATH változó határozza meg a keresési útvonalat a dir könyvtárat tartalmazó könyvtárhoz: a CDPATH könyvtárban minden könyvtárnévben a rendszer a dir kifejezést keresi. .
Az alternatív könyvtárnevek a CDPATH könyvtárban kettősponttal (:) vannak elválasztva. A null könyvtárnév a CDPATHban megegyezik az aktuális könyvtárral, azaz: ``.''. Ha a dir perjellel (/) kezdődik, akkor a CDPATH nem használatos. A -P opció arra készteti a cd-t, hogy a fizikai könyvtárszerkezetet használja azáltal, hogy feloldja a szimbolikus hivatkozásokat a dir bejárása közben és a példányok feldolgozása előtt. a dir mappában (lásd még a -P opciót a beépített set parancshoz); a -L opció arra kényszeríti, hogy a szimbolikus hivatkozásokat kövesse a hivatkozás feloldásával, miután feldolgozta a .. példányait a könyvtárban.
Ha a .. megjelenik a dir mappában, akkor a folyamat a közvetlenül előző elérési útnév összetevő eltávolításával történik a dir mappából, vissza perjelre vagy a dir elejére. Ha a -e opció a -P paraméterrel van ellátva, és az aktuális munkakönyvtárat nem lehet sikeresen meghatározni a sikeres címtármódosítás után, a cd sikertelen állapotot ad vissza. Az ezt támogató rendszereken a -@ opció a fájlokhoz társított kiterjesztett attribútumokat könyvtárként jeleníti meg.
A - argumentumot a rendszer $OLDPWD-re konvertálja a címtármódosítási kísérlet előtt. Ha a CDPATH nem üres könyvtárnevet használja, vagy ha a - az első argumentum, és a könyvtármódosítás sikeres, akkor az új munkakönyvtár abszolút elérési útja a szabványos kimenetre kerül. A visszatérési érték igaz, ha a könyvtárat sikeresen megváltoztatta; hamis egyébként.
Futtassa a parancsot az argokkal, ezzel elnyomva a normál shell függvénykeresést. Csak a beépített vagy a PATH-ban található parancsok hajtódnak végre. Ha a -p opció adott, a command keresése a PATH alapértelmezett értékével történik, amely garantáltan megtalálja az összes szabványt. segédprogramok. Ha a -V vagy a -v opciót megadja, a rendszer kinyomtatja a parancs leírását.
A -v opció egyetlen szót eredményez, amely a command meghívásához használt parancsot vagy fájlnevet jelzi; a -V opció részletesebb leírást ad. Ha a -V vagy -v opció meg van adva, a kilépési állapot 0, ha parancs található, és 1, ha nem. Ha egyik opció sincs megadva, és hiba történt vagy a command nem található, a kilépési állapot 127. Ellenkező esetben a beépített command kilépési állapota a command kilépési állapota.
Lehetséges befejezési egyezések generálása a szó számára az opciók szerint, amelyek a befejezés által elfogadott bármely opció lehet, kivéve a -p és -r, és írja be az egyezéseket a szabványos kimenetre. A -F vagy -C opciók használatakor a programozható befejezési lehetőségek által beállított különféle shell-változók, bár elérhetők, nem rendelkeznek hasznos értékkel.
Az egyezések ugyanúgy generálódnak, mintha a programozható befejezési kód közvetlenül egy befejezési specifikációból generálta volna őket ugyanazokkal a jelzőkkel. Ha a szó meg van adva, csak a szó szónak megfelelő kiegészítések jelennek meg.
A visszatérési érték igaz, kivéve, ha érvénytelen opciót adnak meg, vagy ha nem generálnak egyezéseket.
[-F function] [-C command] [-X filterpat] [-P prefix] [-S suffix] name [name ...]
Adja meg, hogy az egyes nevekhez tartozó argumentumokat hogyan kell kitölteni. Ha a -p opció rendelkezésre áll, vagy ha nincsenek megadva opciók, a meglévő befejezési specifikációk olyan módon kerülnek kinyomtatásra, amely lehetővé teszi azok újrafelhasználását bemenetként. A -r opció eltávolítja az egyes nevek befejezési specifikációit, vagy ha nincs megadva név, akkor az összes kitöltési specifikációt. A -D opció azt jelzi, hogy az ``alapértelmezett'' parancs befejezésére más megadott opcióknak és műveleteknek kell vonatkozniuk; vagyis egy olyan parancson megkísérelték a befejezést, amelyhez korábban nincs megadva befejezés. A -E opció azt jelzi, hogy a többi megadott opciónak és műveletnek az ``üres'' parancs befejezésére kell vonatkoznia; vagyis üres sorban megkísérelték a befejezést. A -I opció azt jelzi, hogy a többi megadott opciónak és műveletnek érvényesnek kell lennie a sorban lévő kezdeti nem hozzárendelési szó befejezésére, vagy egy parancshatároló után, például ; vagy |, ami általában parancsnév-kiegészítés. Ha több opciót is megad, a -D opció elsőbbséget élvez a -E-vel szemben, és mindkettő elsőbbséget élvez a -I-vel szemben. Ha a -D, -E vagy -I közül bármelyiket megadjuk, a többi name argumentum figyelmen kívül marad; ezek a kiegészítések csak az opció által meghatározott esetre vonatkoznak.
A szókiegészítési kísérletek során ezeknek a kiegészítési specifikációknak az alkalmazásának folyamatát fentebb a Programozható kiegészítés részben ismertetjük.
A többi opció, ha meg van adva, a következő jelentéssel bír. A -G, -W és -X opciók argumentumait (és ha szükséges, a -P és -S opciókat) idézni kell, hogy megvédjük őket a kibővítéstől, mielőtt a teljes beépítményt meghívnák.
- -o comp-option
A comp-option a compspec viselkedésének számos aspektusát szabályozza az egyszerű kiegészítések generálásán túl. A komp-opció a következők egyike lehet:
- bashdefault
Hajtsa végre az alapértelmezett bash befejezések többi részét, ha a compspec nem generál egyezést.
- default
Használja a readline alapértelmezett fájlnév-kiegészítését, ha a compspec nem generál egyezést.
- dirnames
Hajtsa végre a könyvtárnév-kiegészítést, ha a compspec nem generál egyezést.
- filenames
Mondja meg a readline-nak, hogy a compspec fájlneveket generál, így bármilyen fájlnév-specifikus feldolgozást végrehajthat (például perjel hozzáadása a könyvtárnevekhez, speciális karakterek idézése vagy szóközök elnyomása a végén). Shell funkciókkal való használatra készült.
- noquote
Mondja meg a readline-nak, hogy ne idézze a befejezett szavakat, ha azok fájlnevek (a fájlnevek idézése az alapértelmezett).
- nosort
Mondja meg a readline-nak, hogy ne rendezze a lehetséges kiegészítések listáját ábécé szerint.
- nospace
Mondja meg a readline-nak, hogy ne fűzzen szóközt (alapértelmezett) a sor végén kitöltött szavakhoz.
- plusdirs
A compspec által meghatározott egyezések generálása után a program megkísérli a könyvtárnév-kiegészítést, és az egyezéseket hozzáadja a többi művelet eredményéhez.
- -A action
A művelet a következők egyike lehet a lehetséges befejezések listájának létrehozásához:
- alias
Alias nevek. Megadható -a-ként is.
- arrayvar
Tömbváltozónevek.
- binding
Readline billentyű-összerendelési nevek.
- builtin
A shell beépített parancsainak neve. Megadható -b-ként is.
- command
Parancsok nevei. Megadható -c-ként is.
- directory
Könyvtárnevek. Megadható -d-ként is.
- disabled
A letiltott shell beépített nevei.
- enabled
Az engedélyezett shell beépített modulok nevei.
- export
Exportált shell-változók nevei. Megadható -e-ként is.
- file
Fájlnevek. Megadható -f-ként is.
- function
A héjfüggvények nevei.
- group
Csoportnevek. Megadható -gként is.
- helptopic
Súgótémák a beépített súgó által elfogadottak szerint.
- hostname
A gazdagépnevek a HOSTFILE shell-változó által megadott fájlból származnak.
- job
Feladatnevek, ha a jobvezérlés aktív. Megadható -jként is.
- keyword
Shell fenntartott szavak. Megadható -k-ként is.
- running
A futó jobok nevei, ha a jobvezérlés aktív.
- service
Szolgáltatások nevei. Megadható -s-ként is.
- setopt
A beépített set beépített -o opciójának érvényes argumentumai.
- shopt
A shell opciónevek a shopt beépített modul által elfogadottak szerint.
- signal
A jelek nevei.
- stopped
A leállított jobok nevei, ha a jobvezérlés aktív.
- user
Felhasználói nevek. Megadható -u-ként is.
- variable
Az összes shell-változó neve. Megadható -vként is.
- -C command
A command parancs egy alhéj-környezetben kerül végrehajtásra, és kimenete lehetséges befejezésekként használható.
- -F function
A function shell függvény az aktuális shell-környezetben kerül végrehajtásra. A függvény végrehajtásakor az első argumentum ($1) annak a parancsnak a neve, amelynek argumentumait befejezik, a második argumentum ($2) a befejezés alatt álló szó, a harmadik argumentum ($3) pedig az aktuális parancssorban befejezett szót megelőző szó. Amikor befejeződik, a lehetséges befejezéseket a rendszer a COMPREPLY tömbváltozó értékéből kéri le.
- -G globpat
A globpat elérési út kiterjesztési mintája kibővül a lehetséges kiegészítések generálásához.
- -P prefix
Az előtag minden lehetséges kiegészítés elejére kerül hozzáadásra, miután az összes többi beállítást alkalmazta.
- -S suffix
Az utótag minden lehetséges kiegészítéshez fűződik, miután az összes többi opciót alkalmazta.
- -W wordlist
A szólistát a rendszer az IFS speciális változó karaktereit használja elválasztóként, és minden eredményül kapott szót kibont. A shell-idézet tiszteletben tartja a szólistán, annak érdekében, hogy a szavak olyan mechanizmust biztosítsanak, amelyek shell metakaraktereket vagy karaktereket tartalmaznak az IFS értékben. A lehetséges kiegészítések az eredménylista azon tagjai, amelyek megfelelnek a befejezett szónak.
- -X filterpat
A filterpat egy minta, amelyet az elérési út kibővítésére használnak. Alkalmazza az előző opciók és argumentumok által generált lehetséges kiegészítések listájára, és minden, a filterpat-nak megfelelő befejezést eltávolít a listából. A vezető ! a filterpat-ban tagadja a mintát; ebben az esetben a filterpat-nak nem megfelelő kiegészítések eltávolításra kerülnek.
A visszatérési érték igaz, kivéve, ha érvénytelen beállítást ad meg, a -p vagy -r függvénytől eltérő opciót ad meg name argumentum nélkül, egy olyan név befejezési specifikációját próbálják eltávolítani, amelyre nincs specifikáció, vagy hiba történik a befejezési specifikáció hozzáadásakor.
Módosítsa az egyes nevek kitöltési beállításait a beállításoknak megfelelően, vagy az éppen futó befejezést, ha nincs megadva név. Ha nincs megadva opció, jelenítse meg az egyes nevek vagy az aktuális kiegészítések kitöltési beállításait. Az opció lehetséges értékei a fent leírt teljes beépített modulra érvényesek. A -D kapcsoló azt jelzi, hogy az ``alapértelmezett'' parancs befejezésére más megadott opcióknak kell vonatkozniuk; vagyis egy olyan parancson megkísérelték a befejezést, amelyhez korábban nincs megadva befejezés. A -E kapcsoló azt jelzi, hogy az ``üres'' parancs befejezésére más megadott opcióknak kell vonatkozniuk; vagyis üres sorban megkísérelték a befejezést. A -I opció azt jelzi, hogy a többi megadott beállításnak érvényesnek kell lennie a sorban lévő kezdeti nem hozzárendelési szó befejezésére, vagy egy parancshatároló után, például ; vagy |, ami általában a parancsnév-kiegészítés.
A visszatérési érték igaz, kivéve, ha érvénytelen beállítást adnak meg, vagy olyan név beállításait próbálják módosítani, amelyhez nem létezik befejezési specifikáció, vagy kimeneti hiba történik.
Folytassa a körbezáró for, while, ig vagy select ciklus következő iterációját. Ha az n meg van adva, folytassa az n-edik bezáró hurokkal. Az n értéke ≥ 1. Ha az n nagyobb, mint a befoglaló hurkok száma, akkor az utolsó befoglaló ciklus (a "legfelső szintű" ciklus) folytatódik. A visszatérési érték 0, hacsak az n nem nagyobb, mint 1, vagy egyenlő azzal.
Változók deklarálása és/vagy attribútumok megadása. Ha nincs megadva név, akkor jelenítse meg a változók értékeit. A -p opció megjeleníti az egyes nevek attribútumait és értékeit. Ha a -p name argumentumokat használja, a -f és -F kivételével a rendszer figyelmen kívül hagyja a további beállításokat. . Ha a -p paramétert name argumentumok nélkül adjuk meg, akkor az összes olyan változó attribútumait és értékét jeleníti meg, amelyek rendelkeznek a további beállításokban megadott attribútumokkal. Ha a -p mellett nincs más beállítás, a declare megjeleníti az összes shell-változó attribútumait és értékét. A -f opció a shell-funkciókra korlátozza a megjelenítést. A -F opció letiltja a függvénydefiníciók megjelenítését; csak a függvény neve és attribútumai kerülnek kinyomtatásra. Ha az extdebug shell opció engedélyezve van a shopt használatával, akkor a forrásfájl neve és a sorszám is megjelenik, ahol minden név meg van határozva. A -F opció a -f billentyűt jelenti. A -g opció kényszeríti a változók globális hatókörben történő létrehozását vagy módosítását, még akkor is, ha a declare parancshéjfüggvényben végrehajtódik. Minden más esetben figyelmen kívül hagyják. A -I opció hatására a helyi változók öröklik az attribútumokat (kivéve a nameref attribútumot) és az azonos névvel rendelkező meglévő változók értékét környező hatókör. Ha nincs létező változó, akkor a helyi változó kezdetben nincs beállítva. A következő opciók használhatók a kimenet korlátozására a megadott attribútummal rendelkező változókra, vagy a változók attribútumainak megadására:
- -a
Minden név egy indexelt tömbváltozó (lásd fent a Tömbök részt).
- -A
Minden név egy asszociatív tömbváltozó (lásd fent a Tömbök részt).
- -f
Csak függvényneveket használjon.
- -i
A változót egész számként kezeljük; Az aritmetikai kiértékelés (lásd az ARITMETIKAI ÉRTÉKELÉS részt fent) akkor történik meg, ha a változóhoz értéket rendelnek.
- -l
Ha a változóhoz értéket rendelünk, az összes nagybetűs karakter kisbetűssé alakul. A nagybetűs attribútum le van tiltva.
- -n
Adja meg minden névnek a nameref attribútumot, így egy másik változóra mutató névhivatkozást tesz. Ezt a másik változót a name értéke határozza meg. Minden hivatkozás, hozzárendelés és attribútummódosítás a name-re, kivéve azokat, amelyek magát az -n attribútumot használják vagy módosítják, a name értéke által hivatkozott változón hajtódnak végre. A nameref attribútum nem alkalmazható tömbváltozókra.
- -r
Tegye a neveket csak olvashatóvá. Ezek a nevek ezután nem rendelhetők hozzá értékekhez későbbi hozzárendelési utasításokkal vagy hatástalanítással.
- -t
Adja meg minden névnek a trace attribútumot. A követett függvények a DEBUG és a RETURN csapdákat öröklik a hívó shelltől. A nyomkövetés attribútumnak nincs különleges jelentése a változók számára.
- -u
Amikor a változóhoz értéket rendelünk, az összes kisbetűs karakter nagybetűssé alakul. A kisbetűs attribútum le van tiltva.
- -x
Jelölje meg a neveket a következő parancsokba történő exportáláshoz a környezetben.
A `+' használata a `-' helyett az attribútumot kikapcsolja, azzal a kivétellel, hogy a +a és +A nem használható tömbváltozók és megsemmisítésére. Az +r nem távolítja el a csak olvasható attribútumot. Függvényben használva a declare és a typeset minden name-et helyisé teszi, mint a local parancsnál, kivéve, ha a A -g opció rendelkezésre áll. Ha egy változó nevét az =value követi, a változó értéke érték lesz. Ha -a vagy -A és összetett hozzárendelési szintaxist használ tömbváltozók létrehozásához, a további attribútumok csak a következő hozzárendelésekkor lépnek érvénybe. A visszatérési érték 0, hacsak nem találkozik érvénytelen opcióval, megkísérelnek definiálni egy függvényt a ``-f foo=bar'' használatával, megkísérelnek értéket rendelni egy csak olvasható változóhoz, megkísérelnek hozzárendelni egy tömbváltozó értéke az összetett hozzárendelési szintaxis használata nélkül (lásd fent a Tömbök részt), a nevek egyike nem érvényes shell-változónév, a rendszer megpróbálja elfordítani írásvédett állapot kikapcsolása csak olvasható változó esetén, megkísérlik kikapcsolni egy tömbváltozó tömbállapotát, vagy megpróbál egy nem létező függvényt megjeleníteni a -f billentyűvel.
Opciók nélkül megjeleníti az aktuálisan megjegyzett könyvtárak listáját. Az alapértelmezett megjelenítés egyetlen sorban található, a könyvtárnevek szóközzel vannak elválasztva. A könyvtárak a pushd paranccsal adhatók hozzá a listához; a popd parancs eltávolítja a bejegyzéseket a listáról. Mindig az aktuális könyvtár az első könyvtár a veremben.
Törli a könyvtár veremét az összes bejegyzés törlésével.
Teljes elérési útvonalak használatával listát hoz létre; az alapértelmezett listaformátum tilde-t használ a kezdőkönyvtár jelölésére.
Nyomtassa ki a könyvtárvermet soronként egy bejegyzéssel.
Nyomtassa ki a címtárvermet soronként egy bejegyzéssel, minden bejegyzés előtt a veremben lévő indexével.
Megjeleníti az nedik bejegyzést a dirs által megjelenített lista bal oldalától számítva, ha opciók nélkül hívják meg, nullával kezdődően.
Megjeleníti az nedik bejegyzést a dirs által megjelenített lista jobb oldaláról, ha opciók nélkül hívják meg, nullával kezdődően.
A visszatérési érték 0, kivéve, ha érvénytelen opciót adnak meg, vagy ha n index nem található a könyvtárverem végén.
Beállítások nélkül távolítsa el az egyes jobspeceket az aktív feladatok táblázatából. Ha a jobspec nincs jelen, és sem a -a, sem a -r opció nincs megadva, akkor az jelenlegi feladat használt. Ha a -h opció meg van adva, akkor a rendszer nem távolítja el az egyes jobspec-eket a táblázatból, hanem megjelöli, hogy a SIGHUP ne kerüljön elküldésre a feladatnak. ha a shell SIGHUP-ot kap. Ha nincs megadva jobspec, a -a opció az összes feladat eltávolítását vagy megjelölését jelenti; a -r opció jobspec argumentum nélkül a műveletet a futó jobokra korlátozza. A visszatérési érték 0, kivéve, ha a jobspec nem ad meg érvényes munkát.
Írja ki az argokat szóközzel elválasztva, majd egy újsort. A visszatérési állapot 0, hacsak nem történik írási hiba. Ha a -n meg van adva, a záró újsor nem lesz látható. Ha a -e opció adott, a következő fordított perjellel megtisztított karakterek értelmezése engedélyezett. A -E opció letiltja ezen escape karakterek értelmezését, még azokon a rendszereken is, ahol alapértelmezés szerint értelmezve vannak. Az xpg_echo shell beállítás használható annak dinamikus meghatározására, hogy az echo alapértelmezés szerint kibontja-e ezeket az escape karaktereket. A visszhang nem úgy értelmezi a -- kifejezést, hogy az opciók végét jelenti. Az echo a következő escape szekvenciákat értelmezi:
riadó (csengő)
backspace
elnyomja a további kimenetet
menekülő karakter
forma takarmány
új sor
kocsi vissza
vízszintes fül
függőleges fül
fordított perjel
az a nyolc bites karakter, amelynek értéke az nnn oktális érték (nulla-három oktális számjegy)
a nyolcbites karakter, amelynek értéke a hexadecimális HH (egy vagy két hexadecimális számjegy)
a Unicode (ISO/IEC 10646) karakter, amelynek értéke a hexadecimális HHHH (egy-négy hexadecimális számjegy)
a Unicode (ISO/IEC 10646) karakter, amelynek értéke a hexadecimális érték HHHHHHHH (egytől nyolc hexadecimális számjegyig)
A beépített shell-parancsok engedélyezése és letiltása. A beépített modul letiltása lehetővé teszi a beépített shell-nevű lemezparancs végrehajtását a teljes elérési út megadása nélkül, még akkor is, ha a shell általában a lemezparancsok előtt keresi a beépített elemeket. A -n használata esetén minden név le van tiltva; ellenkező esetben a nevek engedélyezve vannak. Például, ha a PATH-on keresztül talált test binárist szeretné használni a shell beépített verziója helyett, futtassa az "enable -n test" parancsot. A -f opció azt jelenti, hogy az új, beépített name parancsot kell betölteni a fájlnév megosztott objektumból olyan rendszereken, amelyek támogatják a dinamikus betöltést. A -d opció törli a korábban -f karakterrel betöltött beépített modult. Ha nincs megadva name argumentum, vagy ha a -p opció megadva van, a rendszer kinyomtatja a shell beépített moduljait. Más opció argumentumok nélkül a lista az összes engedélyezett shell beépített elemet tartalmazza. Ha a -n meg van adva, csak a letiltott beépített modulok kerülnek kinyomtatásra. Ha a -a meg van adva, a kinyomtatott lista tartalmazza az összes beépített modult, jelezve, hogy mindegyik engedélyezve van-e vagy sem. Ha a -s meg van adva, a kimenet a POSIX speciális beépülő moduljaira korlátozódik. A visszatérési érték 0, kivéve, ha a name nem egy shell-beépített, vagy hiba történt egy új beépített objektumból való betöltésekor.
Az arg-ok beolvasása és összefűzése egyetlen paranccsá válik. Ezt a parancsot ezután a shell beolvassa és végrehajtja, és a kilépési állapotát az eval értékeként adja vissza. Ha nincsenek argumentumok vagy csak null argumentumok, az eval 0-t ad vissza.
Ha a parancs meg van adva, az lecseréli a parancsértelmezőt. Nem jön létre új folyamat. Az argumentumok a parancs argumentumaivá válnak. Ha megadja a -l opciót, a shell kötőjelet helyez a command-nak átadott nulladik argumentum elejére. Ezt teszi a bejelentkezés (1). A -c opció hatására a command üres környezetben kerül végrehajtásra. Ha a -a megadva van, akkor a shell a name értéket nulladik argumentumként adja át a végrehajtott parancsnak. Ha a parancs valamilyen okból nem hajtható végre, egy nem interaktív parancsértelmező kilép, kivéve, ha az execfail shell opció engedélyezve van. Ebben az esetben kudarcot ad vissza. Az interaktív shell hibát ad vissza, ha a fájl nem hajtható végre. Egy alhéj feltétel nélkül kilép, ha az exec sikertelen. Ha a command nincs megadva, az átirányítások az aktuális shellben lépnek érvénybe, és a visszatérési állapot 0. Ha átirányítási hiba történik, a visszatérési állapot 1.
A parancsértelmező kilépése n állapottal. Ha az n ki van hagyva, a kilépési állapot az utoljára végrehajtott parancs állapota lesz. Az EXIT csapdája végrehajtásra kerül, mielőtt a shell befejeződik.
A megadott nevek meg vannak jelölve az utólag végrehajtott parancsok környezetébe történő automatikus exportáláshoz. Ha a -f opció adott, a nevek függvényekre vonatkoznak. Ha nem ad meg neveket, vagy ha a -p opció megadva van, a rendszer kinyomtatja az összes exportált változó nevét. A -n opció hatására az exportálási tulajdonság minden névből el lesz távolítva. Ha a változó nevét a =word követi, akkor a változó értéke word lesz. Az export 0 kilépési állapotot ad vissza, kivéve, ha érvénytelen beállítást találunk, a nevek egyike nem érvényes shell-változónév, vagy a -f name-vel van ellátva, amely nem függvény.
Az első űrlap egy sor parancsot választ ki az elsőtől az utolsóig az előzmények listájából, és megjeleníti vagy szerkeszti és újra végrehajtja azokat. Az Első és az utolsó megadható karakterláncként (az adott karakterlánccal kezdődő utolsó parancs megkereséséhez) vagy számként (index az előzmények listájához, ahol a rendszer egy negatív számot használ az aktuális parancs számához képest). A listázás során a 0 első vagy utolsó értéke -1, a -0 pedig az aktuális paranccsal (általában az fc paranccsal); egyébként a 0 egyenértékű -1-gyel, a -0 pedig érvénytelen. Ha az last nincs megadva, akkor a listázáshoz az aktuális parancsra lesz beállítva (így az ``fc -l -10'' az utolsó 10 parancsot írja ki), egyébként pedig az first-re. Ha az first nincs megadva, akkor az előző parancsra lesz állítva a szerkesztéshez és -16-ra a listázáshoz.
A -n opció elnyomja a parancsok számát a listázás során. A -r opció megfordítja a parancsok sorrendjét. Ha a -l opció meg van adva, a parancsok a szabványos kimeneten jelennek meg. Ellenkező esetben az ename által megadott szerkesztő meghívásra kerül az ezeket a parancsokat tartalmazó fájlban. Ha az ename nincs megadva, akkor az FCEDIT változó értéke, az EDITOR értéke pedig, ha az FCEDIT nincs beállítva. Ha egyik változó sincs beállítva, a vi használatos. Amikor a szerkesztés befejeződött, a szerkesztett parancsok visszhangzik és végrehajtódnak.
A második formában a command újra végrehajtásra kerül, miután a pat minden egyes példányát a rep helyettesíti. A Parancs értelmezése ugyanúgy történik, mint a fenti első. Hasznos álnév ehhez az ``r="fc -s"'', így az "r cc" beírása az utolsó, "cc"-vel kezdődő parancsot futtatja, az "r" beírása pedig újra végrehajtja az utolsó parancs.
Ha az első űrlapot használja, a visszatérési érték 0, kivéve, ha érvénytelen beállítást talál, vagy az első vagy az utolsó előzménysorokat a tartományon kívülre adja. Ha a -e opció meg van adva, akkor a visszatérési érték az utoljára végrehajtott parancs értéke, vagy a parancsok ideiglenes fájljával kapcsolatos hiba esetén a sikertelenség értéke. Ha a második űrlapot használja, a visszatérési állapot az újra végrehajtott parancsé, kivéve, ha a cmd nem ad meg érvényes előzménysort, amely esetben az fc hibát ad vissza.
A jobspec folytatása az előtérben, és legyen az aktuális munka. Ha a jobspec nincs jelen, a rendszer az jelenlegi feladat shell-fogalmát használja. A visszatérési értéke az előtérbe helyezett parancs értéke, vagy sikertelen, ha a jobvezérlés le van tiltva, vagy ha a jobvezérlés engedélyezett, ha a jobspec nem ad meg érvényes jobot vagy jobspec olyan feladatot ad meg, amelyet jobvezérlés nélkül indítottak el.
A getopts parancsot a shell eljárások használják a pozícióparaméterek elemzésére. Az optstring tartalmazza a felismerendő opciókaraktereket; ha egy karaktert kettőspont követ, akkor az opciónak argumentuma várható, amelyet szóközzel kell elválasztani tőle. A kettőspont és a kérdőjel nem használható opció karakterként. Valahányszor meghívásra kerül, a getopts a következő beállítást a name shell-változóba helyezi, inicializálva a name elemet, ha nem létezik, és a a következő argumentum, amelyet az OPTIND változóba kell feldolgozni.
Az OPTIND 1-re inicializálódik minden alkalommal, amikor a shell vagy egy parancsértelmező meghívódik. Ha egy beállítás argumentumot igényel, a getopts ezt az argumentumot a változóba helyezi
OPTARG. A shell nem állítja vissza automatikusan az OPTIND elemet; manuálisan vissza kell állítani a getopts többszöri hívása között ugyanazon a shell-híváson belül, ha új paraméterkészletet kíván használni.
Amikor az opciók végére kerül sor, a getopts nullánál nagyobb visszatérési értékkel lép ki.
Az OPTIND értéke az első nem opciós argumentum indexe, a név pedig ?.
A getopts általában elemzi a pozícióparamétereket, de ha több argumentumot ad meg arg értékként, a getopts ezeket elemzi.
A getopts kétféle módon jelentheti a hibákat. Ha az optstring első karaktere kettőspont, a néma hibajelentés használatos. Normál működés esetén a rendszer diagnosztikai üzeneteket nyomtat, ha érvénytelen opciókat vagy hiányzó paraméterargumenteket észlel. Ha az OPTERR változó 0-ra van állítva, akkor sem jelennek meg hibaüzenetek, ha az optstring első karaktere nem kettőspont.
Ha érvénytelen opciót lát, getopts helyeket ? a névbe, és ha nem hall, hibaüzenetet nyomtat, és kikapcsolja az OPTARG beállítást. Ha a getopts néma, a talált opciókarakter bekerül az OPTARG-ba, és nem nyomtat diagnosztikai üzenetet.
Ha a szükséges argumentum nem található, és a getopts nem néma, akkor egy kérdőjel ( ? ) kerül a name, OPTARG mezőbe. nincs beállítva, és a rendszer egy diagnosztikai üzenetet nyomtat. Ha a getopts néma, akkor kettőspont ( : ) kerül a névbe, az OPTARG pedig az opcióra van állítva karakter található.
A getopts értéke true értékkel tér vissza, ha egy adott vagy nem meghatározott beállítás található. Hamis értéket ad vissza, ha az opciók végére kerül sor, vagy hiba történik.
Minden alkalommal, amikor a hash meghívásra kerül, a name parancs teljes elérési útja meghatározásra kerül a ` PATH könyvtárak közötti kereséssel, és megjegyzi. Minden korábban megjegyzett elérési út el lesz vetve. Ha megadja a -p opciót, a rendszer nem hajt végre keresési útvonalat, és a fájlnév a parancs teljes fájlneveként lesz használva. A -r opció hatására a shell elfelejti az összes emlékezett helyet. A -d opció hatására a shell elfelejti az egyes nevek emlékezett helyét. Ha megadja a -t opciót, a rendszer kinyomtatja a teljes elérési utat, amelyhez minden név tartozik. Ha több name argumentum van megadva a -t billentyűvel, a name a kivonatolt teljes elérési út elé kerül kinyomtatásra. A -l opció hatására a kimenet olyan formátumban jelenik meg, amely újra felhasználható bemenetként. Ha nem adunk meg argumentumot, vagy csak a -l jelet adjuk meg, a program kinyomtatja az emlékezett parancsokról szóló információkat. A visszatérési állapot igaz, hacsak nem található név, vagy érvénytelen beállítást ad meg.
Hasznos információk megjelenítése a beépített parancsokról. Ha a minta meg van adva, a help részletes segítséget nyújt a pattern-nek megfelelő parancsokhoz; egyébként kinyomtatják az összes beépített és shell vezérlőszerkezethez tartozó súgót.
Jelenítse meg az egyes minták rövid leírását
Jelenítse meg az egyes minták leírását manpage-szerű formátumban
Minden mintához csak egy rövid használati áttekintést jelenítsen meg
A visszatérési állapot 0, hacsak egyetlen parancs sem felel meg a mintának.
Ha nincs opció, jelenítse meg a parancselőzmények listáját sorszámokkal. A * jellel jelölt sorok módosultak. Az n argumentum csak az utolsó n sort sorolja fel. Ha a HISTTIMEFORMAT shell-változó be van állítva, és nem nulla, akkor az strftime(3) formátumkarakterláncaként jelenik meg a társított időbélyegzőhöz. minden megjelenített előzménybejegyzéssel. A formázott időbélyeg és az előzménysor közé nem kerül közbeeső üres hely. Ha a fájlnév meg van adva, a rendszer az előzményfájl neveként használja; ha nem, akkor a HISTFILE értéke kerül felhasználásra. Az opciók, ha vannak, a következő jelentéssel bírnak:
- -c
Törölje az előzmények listáját az összes bejegyzés törlésével.
- -d offset
Törölje az előzménybejegyzést az eltolás pozíciónál. Ha az eltolás negatív, akkor a rendszer relatíve eggyel nagyobbként értelmezi, mint az utolsó előzménypozíció, így a negatív indexek az előzmények végétől számítanak vissza, a -1 index pedig az aktuális history -d parancsra utal.
- -d start-end
Törölje az előzmények bejegyzéseit a kezdet és a vége pozíciók között. A start és end pozitív és negatív értékeit a fent leírtak szerint értelmezzük.
- -a
Adja hozzá az ``új'' előzménysorokat az előzményfájlhoz. Ezek az előzménysorok, amelyeket az aktuális bash munkamenet eleje óta írtunk be, de még nem fűzték hozzá az előzményfájlhoz.
- -n
Olvassa be az előzményfájlból még nem olvasott előzménysorokat az aktuális előzménylistába. Ezek az előzményfájlhoz az aktuális bash munkamenet kezdete óta hozzáfűzött sorok
- -r
Olvassa el az előzményfájl tartalmát, és fűzze hozzá az aktuális előzmények listájához.
- -w
Írja be az aktuális előzmények listáját az előzményfájlba, felülírva az előzményfájl tartalmát.
- -p
Hajtsa végre az előzmények helyettesítését a következő arg-okon, és jelenítse meg az eredményt a szabványos kimeneten. Nem tárolja az eredményeket az előzmények listájában. Minden arg-t idézni kell a normál előzménybővítés letiltásához.
- -s
Tárolja az arg-eket az előzmények listájában egyetlen bejegyzésként. Az előzmények listájából az utolsó parancs eltávolításra kerül az arg-ok hozzáadása előtt.
Ha a HISTTIMEFORMAT változó be van állítva, az egyes előzménybejegyzésekhez társított időbélyegző információkat a rendszer az előzményfájlba írja, az előzmények megjegyzés karakterével megjelölve. Az előzményfájl beolvasásakor az előzmény megjegyzés karakterrel kezdődő sorok, amelyeket közvetlenül egy szám követ, a következő előzménybejegyzés időbélyegeiként értelmezik. A visszatérési érték 0, kivéve, ha érvénytelen beállítást találunk, hiba történik az előzményfájl olvasása vagy írása közben, érvénytelen eltolás kerül megadásra a -d argumentumként, vagy a > a -p sikertelen. argumentumaként megadott előzménybővítés
Az első űrlap felsorolja az aktív munkákat. Az opciók jelentése a következő:
- -l
Sorolja fel a folyamatazonosítókat a normál információk mellett.
- -n
Csak azokról a munkákról jelenítsen meg információkat, amelyek állapota megváltozott, mióta a felhasználót legutóbb értesítették az állapotukról.
- -p
Csak a feladat folyamatcsoport-vezetőjének folyamatazonosítóját sorolja fel.
- -r
Csak futó feladatok megjelenítése.
- -s
Csak a leállított feladatok megjelenítése.
Ha a jobspec meg van adva, a kimenet az adott feladatra vonatkozó információkra korlátozódik. A visszatérési állapot 0, kivéve, ha érvénytelen beállítást találunk, vagy érvénytelen jobspec-t adunk meg.
Ha a -x opció megadva van, a jobs lecserél minden jobspec paramétert, amely a command vagy az args parancsban található. a megfelelő folyamatcsoport-azonosítóval, és végrehajtja a parancsot, átadva neki az args-t, visszaadva a kilépési állapotát.
Küldje el a sigspec vagy signum által elnevezett jelet a pid vagy jobspec által elnevezett folyamatoknak. A sigspec egy kis- és nagybetűket nem érzékeny jelnév, például SIGKILL (a SIG előtaggal vagy anélkül), vagy egy jelszám; A signum egy jelszám. Ha a sigspec nincs jelen, akkor a SIGTERM feltételezhető. A -l argumentum felsorolja a jelek neveit. Ha a -l megadásakor argumentumot adunk meg, akkor az argumentumoknak megfelelő jelek nevei megjelennek, és a visszatérési állapot 0. Az exit_status argumentum to A -l egy szám, amely vagy egy jel számát vagy egy jellel lezárt folyamat kilépési állapotát határozza meg. A -L opció egyenértékű a -l kapcsolóval. kill értéke igaz, ha legalább egy jelet sikeresen elküldtünk, vagy false értéket, ha hiba történik vagy érvénytelen opciót találtunk.
Minden arg egy kiértékelendő aritmetikai kifejezés (lásd fent az ARITMETIKAI ÉRTÉKELÉS részt). Ha az utolsó arg értéke 0, a let 1-et ad vissza; 0-t ad vissza egyébként.
Minden argumentumhoz létrejön egy name nevű helyi változó, és hozzárendeljük az értéket. Az opció a deklaráció által elfogadott opciók bármelyike lehet. Ha egy függvényen belül local-t használunk, akkor ez a name változót okozza. , hogy látható hatóköre az adott függvényre és gyermekeire korlátozva legyen. Ha a name értéke -, akkor a rendszerhéjbeállítások készlete helyi lesz ahhoz a függvényhez, amelyben a local meghívásra kerül: a shell beállításai a >A függvényben beépített set beállított érték visszaáll az eredeti értékükre, amikor a függvény visszatér. A visszaállítás úgy történik, mintha egy sor set parancsot hajtottak volna végre a függvény előtt érvényben lévő értékek visszaállítására. Operandusok nélkül a local a helyi változók listáját írja a szabványos kimenetre. Hiba a helyi használata, ha nem egy függvényen belül. A visszatérési állapot 0, kivéve, ha a local funkciót függvényen kívül használjuk, érvénytelen name van megadva, vagy a name csak olvasható változó.
Lépjen ki a bejelentkezési rendszerhéjból.
Sorok olvasása a szabványos bemenetről az indexelt array tömbváltozóba, vagy az fd fájlleíróból, ha a -u opció megadva van. A MAPFILE változó az alapértelmezett tömb. Az opciók, ha megadják, a következő jelentéssel bírnak:
- -d
A delim első karaktere az újsor helyett az egyes beviteli sorok befejezésére szolgál. Ha a delim az üres karakterlánc, a mapfile lezárja a sort, amikor NUL karaktert olvas.
- -n
Legfeljebb count sort másoljon. Ha a count értéke 0, a rendszer minden sort átmásol.
- -O
Kezdje el a tömbhöz a hozzárendelést az origin indexnél. Az alapértelmezett index 0.
- -s
Dobja el az első beolvasott számláló sorokat.
- -t
Távolítson el egy záró határolójelet (alapértelmezett újsor) minden olvasott sorból.
- -u
Olvasson sorokat az fd fájlleíróból a normál bemenet helyett.
- -C
A visszahívás értékelése minden kvantum sor beolvasásakor. A -c kapcsoló megadja a kvantumot.
- -c
Adja meg az egyes visszahívás hívások között olvasott sorok számát.
Ha a -C a -c nélkül van megadva, az alapértelmezett kvantum 5000. A visszahívás kiértékelésekor a rendszer megkapja a a következőre rendelendő tömbelem és az ehhez az elemhez rendelendő sor további argumentumként. A visszahívás a sor beolvasása után kerül kiértékelésre, de még a tömbelem hozzárendelése előtt.
Ha nincs megadva kifejezett eredet, a mapfile törli a tömböt, mielőtt hozzárendelné.
A mapfile sikeresen visszatér, hacsak nem ad meg érvénytelen beállítást vagy opció argumentumot, a tömb érvénytelen vagy nem rendelhető hozzá, vagy ha tömb nem indexelt tömb.
Eltávolítja a bejegyzéseket a könyvtárveremből. Argumentumok nélkül eltávolítja a legfelső könyvtárat a veremből, és egy cd-t ír le az új felső könyvtárba. Az érvek, ha megadják, a következő jelentéssel bírnak:
Elnyomja a normál könyvtárváltást, amikor könyvtárakat távolít el a veremből, így csak a verem lesz manipulálva.
Eltávolítja a nedik bejegyzést a lista bal oldaláról, amelyet a dirs jelzi, és nullával kezdődik. Például: ``popd +0'' eltávolítja az első könyvtárat, ``popd +1'' a másodikat.
Eltávolítja az nedik bejegyzést a lista jobb oldaláról, amelyet a dirs mutat, és nullával kezdődik. Például: ``popd -0'' eltávolítja az utolsó könyvtárat, ``popd -1'' az utolsó előtti könyvtárat.
Ha a popd parancs sikeres, akkor a dirs is végrehajtódik, és a visszatérési állapot 0. A popd hamis értéket ad vissza, ha érvénytelen beállítás van megadva. találkozik, a címtárverem üres, nem létező címtárverem bejegyzés van megadva, vagy a címtármódosítás sikertelen.
Írja a formázott argumentumokat a normál kimenetre a formátum vezérlése alatt. A -v kapcsoló hatására a kimenet a var változóhoz lesz rendelve, nem pedig a szabványos kimenethez.
A formátum egy karakterlánc, amely háromféle objektumot tartalmaz: egyszerű karaktereket, amelyeket egyszerűen a szabványos kimenetre másol, karakteres escape szekvenciákat, amelyeket a rendszer átalakít és másol a szabványos kimenetre. kimeneti és formátumspecifikációk, amelyek mindegyike a következő egymást követő argumentum kinyomtatását eredményezi. A szabványos printf(1) mellett formátum specifikációit, printf a következő kiterjesztéseket értelmezi:
- %b
a printf a megfelelő argumentum visszaperjeles escape szekvenciáit ugyanúgy kibontja, mint az echo -e.
- %q
a printf a megfelelő argumentumot olyan formátumban adja ki, amely shell bemenetként újra felhasználható.
- %(datefmt)T
a printf kiadja a dátum-idő karakterláncot, amely a datefmt használatából ered a strftime formátum karakterláncaként (3). A megfelelő argumentum egy egész szám, amely az epocha óta eltelt másodpercek számát jelzi. Két speciális argumentumérték használható: -1 az aktuális időt, a -2 pedig a shell meghívásának idejét. Ha nincs megadva argumentum, a konverzió úgy viselkedik, mintha -1 lett volna megadva. Ez kivétel a szokásos printf viselkedés alól
A %b, %q és %T direktívák mind a formátumspecifikációban szereplő mezőszélesség- és pontossági argumentumokat használják, és annyi bájtot írnak le a kiterjesztett argumentumból (vagy használnak ilyen széles mezőt), amely általában több karaktert tartalmaz, mint az eredeti. .
A nem karakterlánc-formátum-specifikátorokhoz tartozó argumentumokat a rendszer C konstansként kezeli, kivéve, hogy megengedett a bevezető plusz vagy mínusz jel, és ha a vezető karakter szimpla vagy kettős idézőjel, az érték a következő karakter ASCII-értéke.
A formátumot a rendszer szükség szerint újra felhasználja az összes argumentum felhasználásához. Ha a formátum > több argumentumot igényel, mint amennyit megadunk, a extra formátumspecifikációk úgy viselkednek, mintha nulla értéket vagy nulla karakterláncot adtak volna meg. A visszatérési érték siker esetén nulla, sikertelenség esetén nem nulla.
Hozzáad egy könyvtárat a könyvtárverem tetejéhez, vagy elforgatja a veremet, így a verem új teteje az aktuális munkakönyvtár lesz. Argumentumok nélkül a pushd felcseréli a két felső könyvtárat, és 0-t ad vissza, hacsak a könyvtárverem nem üres. Az érvek, ha megadják, a következő jelentéssel bírnak:
- -n
Elnyomja a normál könyvtárváltást, amikor elforgatja vagy könyvtárakat ad hozzá a veremhez, így csak a verem lesz manipulálva.
- +n
A verem elforgatása úgy, hogy az nedik könyvtár (a dirs által mutatott lista bal oldalától számítva, nullával kezdődően) legyen a tetején .
- -n
A verem elforgatása úgy, hogy az nedik könyvtár (a dirs által mutatott lista jobb oldalától számítva, nullával kezdődően) legyen a tetején .
- dir
Hozzáadja a dir-et a tetején lévő könyvtárveremhez, így ez az új aktuális munkakönyvtár, mintha argumentumként lett volna megadva a cd beépített számára.
Ha a pushd parancs sikeres, akkor egy dirs is végrehajtásra kerül. Ha az első űrlapot használja, a pushd 0-t ad vissza, kivéve, ha a dir cd-je sikertelen. A második űrlapnál a pushd 0 értéket ad vissza, kivéve, ha a könyvtárverem üres, nem létező könyvtárveremelem van megadva, vagy a megadott új aktuális könyvtárra történő módosítás sikertelen.
Nyomtassa ki az aktuális munkakönyvtár abszolút elérési útját. A kinyomtatott elérési út nem tartalmaz szimbolikus hivatkozásokat, ha a -P opció meg van adva, vagy a -ophysical opció engedélyezve van a beépített set parancshoz. Ha a -L opciót használja, a nyomtatott elérési út jelképes hivatkozásokat tartalmazhat. A visszatérési állapot 0, kivéve, ha hiba történik az aktuális könyvtár nevének olvasása közben, vagy érvénytelen opciót adnak meg.
Egy sor beolvasása a szabványos bemenetből vagy az fd fájlleíróból, amely argumentumként van megadva az -u kapcsolóhoz, szavakra osztva a fenti Word részben leírtak szerint. Felosztás, és az első szó az első névhez, a második szó a második névhez lesz hozzárendelve, és így tovább. Ha több szó van, mint név, akkor a fennmaradó szavakat és a közbeeső határolójeleket a rendszer a vezetéknévhez rendeli a névhez. Ha a bemeneti adatfolyamból kevesebb szó olvasható ki, mint a név, a fennmaradó nevek üres értékeket kapnak. Az IFS karakterei a sor szavakra osztására szolgálnak ugyanazokkal a szabályokkal, amelyeket a shell a kibontáshoz használ (lásd fent a Szófelosztásnál). A fordított perjel karakter ( \) a következő karakterolvasásnál és a sor folytatásánál bármilyen speciális jelentés eltávolítására használható. Az opciók, ha vannak, a következő jelentéssel bírnak:
- -a aname
A szavak az aname tömbváltozó 0-tól kezdődő szekvenciális indexeihez vannak rendelve. Az aname nincs beállítva, mielőtt új értékeket rendelne hozzá. A többi name argumentum figyelmen kívül marad.
- -d delim
A delim első karaktere a beviteli sor befejezésére szolgál az újsor helyett. Ha a delim az üres karakterlánc, az olvasás befejezi a sort, amikor egy NUL karaktert olvas.
- -e
Ha a szabványos bemenet terminálról érkezik, a readline (lásd fent READLINE) segítségével kapja meg a sort. A Readline a jelenlegi (vagy alapértelmezett, ha a sorszerkesztés korábban nem volt aktív) szerkesztési beállításait használja, de a Readline alapértelmezett fájlnév-kiegészítését használja.
- -i text
Ha a readline funkciót használja a sor olvasásához, a szöveg a szerkesztés megkezdése előtt a szerkesztési pufferbe kerül.
- -n nchars
Az read visszatér nchars karakterek beolvasása után, nem pedig egy teljes beviteli sorra várva, de tiszteletben tartja a határolót, ha kevesebb, mint nchars karakterek a határoló előtt olvashatók.
- -N nchars
Read visszatér az nchars karakterek pontos beolvasása után, nem pedig a teljes beviteli sorra várva, kivéve, ha EOF találkozik, vagy az olvasás időtúllépése történik. A bevitelben talált határoló karaktereket a rendszer nem kezeli speciálisan, és nem okozza az read visszaküldést, amíg az nchars karaktereket ki nem olvasta. Az eredmény nincs felosztva a karakterekre az IFS-ben; a cél az, hogy a változó pontosan az olvasott karakterekhez legyen hozzárendelve (kivéve a fordított perjelet; lásd alább a -r opciót).
- -p prompt
Jelenítse meg a prompt üzenetet normál hiba esetén, a utáni újsor nélkül, mielőtt megpróbálná elolvasni a bemenetet. A prompt csak akkor jelenik meg, ha a bemenet terminálról érkezik.
- -r
A fordított perjel nem menekülő karakterként működik. A fordított perjel a vonal részének tekintendő. Különösen a fordított perjel-újsor pár nem használható sor folytatásként.
- -s
Néma üzemmód. Ha a bemenet terminálról érkezik, a karakterek nem visszhangoznak.
- -t timeout
Az olvasási időtúllépést és a hiba visszatérését okozza, ha a bemenet egy teljes sorát (vagy meghatározott számú karaktert) nem olvassa be a rendszer időtúllépés másodpercen belül. Az időtúllépés egy tizedes szám lehet, amelynek tört része követi a tizedesvesszőt. Ez a beállítás csak akkor hatásos, ha az olvasás egy terminálból, csőből vagy más speciális fájlból származó bemenetet olvas; normál fájlokból való olvasáskor nincs hatása. Ha az olvasási időtúllépés, az olvasás a részleges beolvasást a megadott name változóba menti. Ha időtúllépés 0, az olvasás azonnal visszatér, anélkül, hogy megpróbálnáni bármilyen adatot. A kilépési állapot 0, ha a bemenet elérhető a megadott fájlleírón, egyébként nem nulla. A kilépési állapot nagyobb, mint 128, ha túllépik az időtúllépést.
- -u fd
Beolvasása az fd fájlleíróból.
Ha nem adunk meg neveket, akkor a beolvasott sort a véghatároló nélkül, de egyébként nem módosítva a rendszer a REPLY változóhoz rendeli. A kilépési állapot nulla, kivéve, ha a rendszer a fájl végét tapasztalja, az olvasási időtúllépés (ebben az esetben az állapot nagyobb, mint 128), változó-hozzárendelési hiba (például csak olvasható változóhoz való hozzárendelés) előfordul, vagy érvénytelen fájlleírót adunk meg a -u. argumentumként
A megadott nevek csak olvasható; ezeknek a neveknek az értékei nem változtathatók meg a későbbi hozzárendelés során. Ha megadja a -f opciót, akkor a neveknek megfelelő függvények meg vannak jelölve. A -a opció az indexelt tömbökre korlátozza a változókat; a -A opció asszociatív tömbökre korlátozza a változókat. Ha mindkét opció rendelkezésre áll, a -A élvez elsőbbséget. Ha nincs megadva name argumentum, vagy ha a -p opció megadva van, a rendszer kinyomtatja az összes csak olvasható nevet tartalmazó listát. A többi beállítással a kimenetet a csak olvasható nevek halmazának egy részhalmazára lehet korlátozni. A -p opció hatására a kimenet olyan formátumban jelenik meg, amely újra felhasználható bemenetként. Ha a változó nevét a =word követi, a változó értéke word lesz. A visszatérés állapota 0, hacsak nem találkozik érvénytelen beállítással, a names egyike nem érvényes shell-változónév, vagy a -f névvel van ellátva > ez nem függvény.
Leállítja a függvény végrehajtását, és visszaadja az n által megadott értéket a hívójának. Ha az n kimarad, a visszatérési állapot a függvénytörzsben utoljára végrehajtott parancs állapota lesz. Ha a return parancsot egy csapdakezelő hajtja végre, az állapot meghatározásához használt utolsó parancs a csapdakezelő előtt végrehajtott utolsó parancs. Ha a return parancsot a DEBUG trap során hajtják végre, az állapot meghatározásához használt utolsó parancs a trap kezelő által a return meghívása előtt végrehajtott utolsó parancs Ha a return egy függvényen kívül használatos, de a parancsfájl . (source) paranccsal történő végrehajtása során a shell leállítja a szkript végrehajtását, és bármelyiket visszaadja. n vagy a szkripten belül végrehajtott utolsó parancs kilépési állapota a szkript kilépési állapotaként. Ha az n meg van adva, a visszatérési érték a legkisebb jelentőségű 8 bit. A visszatérési állapot nem nulla, ha a return paramétert nem numerikus argumentumként adják meg, vagy függvényen kívül használják, és nem a által végrehajtott szkript végrehajtása során. vagy forrás. A RETURN csapdával társított bármely parancs végrehajtásra kerül, mielőtt a függvény vagy parancsfájl után a végrehajtás folytatódna.
Opciók nélkül az egyes shell-változók neve és értéke olyan formátumban jelenik meg, amely újra felhasználható bemenetként az aktuálisan beállított változók beállításához vagy visszaállításához. A csak olvasható változók nem állíthatók vissza. posix módban csak a shell-változók jelennek meg. A kimenet az aktuális területi beállítás szerint rendeződik. Az opciók megadásakor beállítják vagy hatástalanítják a shell attribútumokat. Az opciófeldolgozás után fennmaradó argumentumokat a rendszer a pozícióparaméterek értékeként kezeli, és sorrendben a következőhöz rendeli: $1, $2, ... $n. Az opciók, ha meg vannak adva, a következő jelentéssel bírnak:
- -a
Minden létrehozott vagy módosított változó vagy függvény megkapja az export attribútumot, és meg van jelölve a következő parancsok környezetébe történő exportáláshoz.
- -b
A befejezett háttérfeladatok állapotát azonnal jelentse, ne a következő elsődleges felszólítás előtt. Ez csak akkor hatásos, ha a feladatvezérlés engedélyezve van.
- -e
Azonnal lépjen ki, ha egy folyamat (amely egyetlen egyszerű parancsból állhat), egy lista, vagy egy összetett parancs (lásd fentebb a SHELL GRAMMAR-t) nem nulla állapottal lép ki. A shell nem lép ki, ha a sikertelen parancs a parancslista része, közvetlenül a while vagy ig kulcsszó után, az ift követő teszt része. vagy elif fenntartott szavak, az && vagy || listában végrehajtott parancsok részei, kivéve az utolsó && parancsot követő parancsot. vagy ||, bármely parancs a folyamatban, kivéve az utolsót, vagy ha a parancs visszatérési értékét megfordítja a !. Ha egy részhéjtól eltérő összetett parancs nullától eltérő állapotot ad vissza, mert a parancs sikertelen volt a -e figyelmen kívül hagyása közben, akkor a shell nem lép ki. Az ERR csapdája, ha be van állítva, a parancsértelmező kilépése előtt végrehajtva. Ez a beállítás a shell-környezetre és az egyes alhéj-környezetekre külön-külön vonatkozik (lásd
PARANCSVÉGREHAJTÁSI KÖRNYEZET fent), és az alhéjak kilépését okozhatja, mielőtt végrehajtaná az összes parancsot az alhéjban.
Ha egy összetett parancs vagy shell függvény olyan környezetben fut, ahol a -e parancsot figyelmen kívül hagyják, akkor az összetett parancs vagy függvény törzsében végrehajtott parancsok egyikét sem befolyásolja a -e beállítás, még akkor sem, ha ha -e be van állítva és egy parancs hibaállapotot ad vissza. Ha egy összetett parancs vagy shellfüggvény beállítja a -e függvényt, miközben olyan környezetben fut, ahol a -e-t figyelmen kívül hagyja, akkor ennek a beállításnak nincs hatása addig, amíg az összetett parancs vagy a parancsot tartalmazó parancs a függvényhívás befejeződik.
- -f
Az elérési út kiterjesztésének letiltása.
- -h
Emlékezzen a parancsok helyére, amikor végrehajtásra keresik őket. Ez alapértelmezés szerint engedélyezve van.
- -k
Minden hozzárendelési utasítás formájában szereplő argumentum a parancs környezetébe kerül, nem csak azok, amelyek a parancs nevét megelőzik.
- -m
Monitor mód. A feladatvezérlés engedélyezve van. Ez a lehetőség alapértelmezés szerint be van kapcsolva az ezt támogató rendszerek interaktív shelljeihez (lásd fent a FELADAT ELLENŐRZÉSÉT). Minden folyamat külön folyamatcsoportban fut. Amikor egy háttérfeladat befejeződik, a rendszerhéj kinyomtatja a kilépési állapotát tartalmazó sort.
- -n
Olvassa el a parancsokat, de ne hajtsa végre azokat. Ez arra használható, hogy ellenőrizze a shell script szintaktikai hibákat. Ezt az interaktív héjak figyelmen kívül hagyják.
- -o option-name
Az opciónév a következők egyike lehet:
- allexport
Ugyanaz, mint a -a.
- braceexpand
Ugyanaz, mint a -B.
- emacs
Használjon emacs-stílusú parancssori szerkesztőfelületet. Ez alapértelmezés szerint engedélyezve van, ha a shell interaktív, kivéve, ha a rendszerhéj a --noediting opcióval indul. Ez a read -e. szerkesztőfelületet is érinti
- errexit
Ugyanaz, mint a -e.
- errtrace
Ugyanaz, mint a -E.
- functrace
Ugyanaz, mint a -T.
- hashall
Ugyanaz, mint a -h.
- histexpand
Ugyanaz, mint a -H.
- history
Engedélyezze a parancselőzményeket a fenti ELŐZMÉNYEK részben leírtak szerint. Ez az opció alapértelmezés szerint be van kapcsolva az interaktív shellekben.
- ignoreeof
A hatás olyan, mintha az ``IGNOREEOF=10'' shell-parancsot végrehajtották volna (lásd fent a Shell-változók részt).
- keyword
Ugyanaz, mint a -k.
- monitor
Ugyanaz, mint a -m.
- noclobber
Ugyanaz, mint a -C.
- noexec
Ugyanaz, mint a -n.
- noglob
Ugyanaz, mint a -f.
- nolog
Jelenleg figyelmen kívül hagyva.
- notify
Ugyanaz, mint a -b.
- nounset
Ugyanaz, mint a -u.
- onecmd
Ugyanaz, mint a -t.
- physical
Ugyanaz, mint a -P.
- pipefail
Ha be van állítva, a folyamat visszatérési értéke az utolsó (jobb szélső) parancs értéke, amely nem nulla állapottal lép ki, vagy nulla, ha a folyamatban lévő összes parancs sikeresen kilép. Ez az opció alapértelmezés szerint le van tiltva.
- posix
Módosítsa a bash viselkedését, ha az alapértelmezett művelet eltér a POSIX szabványtól, hogy megfeleljen a szabványnak (posix mód). Lásd: LÁSD MÉG alább egy olyan dokumentumra való hivatkozásért, amely részletezi, hogy a posix mód hogyan befolyásolja a bash viselkedését.
- privileged
Ugyanaz, mint a -p.
- verbose
Ugyanaz, mint a -v.
- vi
Használjon vi-stílusú parancssori szerkesztőfelületet. Ez a read -e. szerkesztőfelületet is érinti
- xtrace
Ugyanaz, mint a -x.
Ha a -o opciónév nélkül van megadva, az aktuális opciók értékei lesznek kinyomtatva. Ha a +o opciónév nélkül van megadva, akkor egy sor set parancs az aktuális beállítási beállítások újbóli létrehozásához a szabványos kimeneten jelenik meg.
- -p
Kapcsolja be a kiváltságos módot. Ebben a módban a $ENV és $BASH_ENV fájlok feldolgozása nem történik meg, a rendszerhéjfüggvények nem öröklődnek a környezettől, és a SHELLOPTS, < ABASHOPTS, CDPATH és GLOBIGNORE változókat figyelmen kívül hagyja, ha megjelennek a környezetben. Ha a shell úgy indul, hogy a tényleges felhasználói (csoport) azonosító nem egyenlő a valódi felhasználói (csoport) azonosítóval, és a -p opció nincs megadva, ezek a műveletek megtörténik, és a tényleges felhasználói azonosító állítsa be a valódi felhasználói azonosítót. Ha a -p opció megadva van az indításkor, a tényleges felhasználói azonosító nem áll vissza. Ennek az opciónak a kikapcsolásával a tényleges felhasználói és csoportazonosítók a valós felhasználói és csoportazonosítókra lesznek beállítva.
- -t
Egy parancs elolvasása és végrehajtása után lépjen ki.
- -u
A "@" és "*" speciális paramétereken kívüli beállítatlan változókat és paramétereket hibaként kezelje a paraméterbővítés során. Ha egy nem beállított változón vagy paraméteren próbálják meg bővíteni, a shell hibaüzenetet nyomtat, és ha nem interaktív, nullától eltérő állapottal lép ki.
- -v
Nyomtassa ki a shell beviteli sorait olvasás közben.
- -x
Miután kibontotta az egyes egyszerű parancsokat, parancsnál, kisbetűs parancsnál, parancs kiválasztásánál vagy aritmetikai parancsnál, jelenítse meg a következő kiterjesztett értékét:< PS4, majd a parancs és a hozzá tartozó kiterjesztett argumentumok vagy a kapcsolódó szólista.
- -B
A héj zárójel-kiterjesztést hajt végre (lásd fent a Brace Expansion részt). Ez alapértelmezés szerint be van kapcsolva.
- -C
Ha be van állítva, a bash nem ír felül egy meglévő fájlt az >, >& és <> átirányítási operátorral . Ez felülírható, ha kimeneti fájlokat hoz létre a >| átirányítási operátor használatával a > helyett.
- -E
Ha be van állítva, az ERR csapdáját öröklik a shell-függvények, a parancs-helyettesítések és az alhéj-környezetben végrehajtott parancsok. Az ERR csapda ilyen esetekben általában nem öröklődik.
- -H
A ! stíluselőzmények helyettesítésének engedélyezése. Ez az opció alapértelmezés szerint be van kapcsolva, ha a shell interaktív.
- -P
Ha be van állítva, a rendszerhéj nem oldja fel a szimbolikus hivatkozásokat olyan parancsok végrehajtásakor, mint a cd, amelyek megváltoztatják az aktuális munkakönyvtárat. Ehelyett a fizikai könyvtárszerkezetet használja. Alapértelmezés szerint a bash a könyvtárak logikai láncát követi, amikor olyan parancsokat hajt végre, amelyek megváltoztatják az aktuális könyvtárat.
- -T
Ha be van állítva, a DEBUG és RETURN csapdáit a shell függvények, a parancshelyettesítések és az alhéj-környezetben végrehajtott parancsok öröklik. Ilyen esetekben a DEBUG és RETURN csapdák általában nem öröklődnek.
- --
Ha ezt az opciót nem követi argumentum, akkor a pozícióparaméterek nincsenek beállítva. Ellenkező esetben a pozícióparaméterek az argokra vannak beállítva, még akkor is, ha némelyikük a - karakterrel kezdődik.
- -
Jelezze az opciók végét, és az összes fennmaradó argt hozzárendelje a pozícióparaméterekhez. A -x és -v opció ki van kapcsolva. Ha nincsenek argok, a pozícióparaméterek változatlanok maradnak.
Az opciók alapértelmezés szerint ki vannak kapcsolva, hacsak másképp nem jelezzük. Ha a + helyett a -t használja, ezek az opciók kikapcsolódnak. A beállítások argumentumaként is megadhatók a shell meghívásához. Az aktuális opciókészlet a következő helyen található: $-. A visszatérési állapot mindig igaz, hacsak nem találkozik érvénytelen opcióval.
Az n+1 ... helyzeti paraméterei átnevezve a következőre: $1 .... A paraméterek, amelyeket a a $# és $#-n+1 számok nincsenek beállítva. n egy nem negatív számnak kell lennie, amely kisebb vagy egyenlő, mint $#. Ha az n értéke 0, a paraméterek nem módosulnak. Ha az n nincs megadva, akkor azt 1-nek kell tekinteni. Ha az n nagyobb, mint $#, a pozícióparaméterek nem változnak. a visszatérési állapot nagyobb, mint nulla, ha az n nagyobb, mint $# vagy kisebb, mint nulla; egyébként 0.
Váltsa át az opcionális shell viselkedését szabályozó beállítások értékeit. A beállítások lehetnek az alábbiakban felsoroltak, vagy ha a -o opciót használjuk, akkor a -o opcióval elérhetők a set builtin parancshoz.< Opciók nélkül, vagy a -p opció esetén megjelenik az összes beállítható opció listája, jelezve, hogy mindegyik be van-e állítva; ha az optnames meg van adva, a kimenet csak ezekre az opciókra korlátozódik. A -p kapcsoló hatására a kimenet olyan formában jelenik meg, amely újra felhasználható bemenetként. A többi opció jelentése a következő:
Minden optname engedélyezése (beállítása).
Minden optname letiltása (beállításának megszüntetése)
Elnyomja a normál kimenetet (csendes mód); a visszatérési állapot azt jelzi, hogy az optname be van-e állítva vagy nincs beállítva. Ha több optname argumentum van megadva a paraméterrel -q, a visszatérési állapot nulla, ha az összes optname engedélyezve van; nem nullat egyébként.
Az optname értékeit a beépített set beépített -o opciójára korlátozza.
Ha a -s vagy a -u optname argumentumok nélkül használatos, shopt csak azokat az opciókat jeleníti meg, amelyek be vannak kapcsolva, ill. Ha nincs másképp jelezve, a shopt opciók alapértelmezés szerint le vannak tiltva (beállítva).
Az opciók listázásakor a visszatérési állapot nulla, ha minden optname engedélyezve van, egyébként nullától eltérő. A beállítások megadásakor vagy visszavonásakor a visszatérési állapot nulla, kivéve, ha az optname nem érvényes shell opció.
A vásárlási lehetőségek listája a következő:
Ha be van állítva, a shell letiltja az asszociatív tömb-alindexek többszöri kiértékelését az aritmetikai kifejezések kiértékelése során, miközben végrehajtja a változó-hozzárendeléseket végrehajtó beépített modulokat, valamint a tömbhivatkozás megszüntetését végző beépített modulokat.
Ha be van állítva, a parancsnév, amely egy könyvtár neve, úgy kerül végrehajtásra, mintha a cd parancs argumentuma lenne. Ezt a beállítást csak az interaktív parancsértelmezők használják.
Ha be van állítva, a beépített cd parancs azon argumentuma, amely nem egy könyvtár, egy olyan változó neve, amelynek értéke az a könyvtár, amelyre módosítani kell.
Ha be van állítva, a rendszer javítja a cd parancsban szereplő könyvtárkomponensek helyesírási hibáit. Az ellenőrzött hibák transzponált karakterek, hiányzó karakterek és egy karakter túl sok. Ha javítást talál, a javított fájlnév kinyomtatásra kerül, és a parancs folytatódik. Ezt az opciót csak az interaktív héjak használják.
Ha be van állítva, a bash ellenőrzi, hogy létezik-e a hash táblában található parancs, mielőtt megpróbálná végrehajtani. Ha a kivonatolt parancs már nem létezik, a rendszer normál útvonalkeresést hajt végre.
Ha be van állítva, a bash listázza a leállított és futó jobok állapotát, mielőtt kilép egy interaktív shellből. Ha valamelyik job fut, ez a kilépést elhalasztja addig, amíg egy második kilépési kísérlet meg nem történik közbeavatkozó parancs nélkül (lásd fent a FELADAT VEZÉRLÉSÉT). A shell mindig elhalasztja a kilépést, ha bármely feladat leáll.
Ha be van állítva, a bash minden külső (nem beépített) parancs után ellenőrzi az ablak méretét, és szükség esetén frissíti a LINES és COLUMNS értékeket. . Ez az opció alapértelmezés szerint engedélyezve van.
Ha be van állítva, a bash megpróbálja elmenteni a többsoros parancs összes sorát ugyanabba az előzménybejegyzésbe. Ez lehetővé teszi a többsoros parancsok egyszerű újraszerkesztését. Ez a lehetőség alapértelmezés szerint engedélyezve van, de csak akkor van hatása, ha a parancselőzmények engedélyezve vannak, amint azt fentebb az ELŐZMÉNYEK részben leírtuk.
A shell kompatibilitási módjának ezek a vezérlőelemei (lásd alább a SHELL KOMPATIBILITÁSI MÓD részt).
Ha be van állítva, a bash a fájlnevekben és a könyvtárnevekben idézi az összes shell metakarakterét a befejezés során. Ha nincs beállítva, a bash eltávolítja a metakaraktereket, például a dollárjelet a befejezett fájlnevekben idézett karakterkészletből, amikor ezek a metakarakterek megjelennek a kitöltendő szavak shell-változói hivatkozásaiban. Ez azt jelenti, hogy a könyvtárakká bővülő változónevekben lévő dollárjeleket nem idézzük; azonban a fájlnevekben megjelenő dollárjeleket sem idézzük. Ez csak akkor aktív, ha a bash fordított perjelet használ a befejezett fájlnevek idézésére. Ez a változó alapértelmezés szerint be van állítva, ami az alapértelmezett bash viselkedés a 4.2-ig terjedő verziókban.
Ha be van állítva, a bash lecseréli a könyvtárneveket a szóbővítés eredményeire a fájlnév-kiegészítés során. Ez megváltoztatja a readline szerkesztési puffer tartalmát. Ha nincs beállítva, a bash megpróbálja megőrizni, amit a felhasználó beírt.
Ha be van állítva, a bash megkísérli a helyesírási javítást a könyvtárneveken a szókiegészítés során, ha az eredetileg megadott könyvtárnév nem létezik.
Ha be van állítva, a bash tartalmazza a `.' karakterrel kezdődő fájlneveket. útvonalnévbővítés eredményeiben. A ``.'' és ``..'' fájlneveknek mindig kifejezetten egyeznie kell, még akkor is, ha a dotglob be van állítva.
Ha be van állítva, a nem interaktív shell nem lép ki, ha nem tudja végrehajtani az exec beépített parancs argumentumaként megadott fájlt. Az interaktív parancsértelmező nem lép ki, ha az exec sikertelen.
Ha be van állítva, az álnevek kibővítésre kerülnek a fenti ALIASES részben leírtak szerint. Ez az opció alapértelmezés szerint engedélyezve van az interaktív héjaknál.
Ha be van állítva a shell meghívásakor vagy egy shell indítófájlban, akkor gondoskodjon arról, hogy a hibakereső profilt a shell indulása előtt hajtsa végre, megegyezik a --debugger beállítással. Ha az hívás után van beállítva, a hibakeresők általi használatra szánt viselkedés engedélyezve:
A beépített deklaráció -F kapcsolója megjeleníti az argumentumként megadott függvénynévhez tartozó forrás fájlnevet és sorszámot.
Ha a DEBUG trap által futtatott parancs nullától eltérő értéket ad vissza, a következő parancs kimarad, és nem kerül végrehajtásra.
Ha a DEBUG trap által futtatott parancs 2-es értéket ad vissza, és a shell egy szubrutinban fut (egy shell-függvényben vagy egy shell-szkriptben, amelyet a . vagy a forrásbeépítettek hajtanak végre), a shell szimulálja a return hívást
A BASH_ARGC és a BASH_ARGV a fenti leírásukban leírtak szerint frissül.
A függvénykövetés engedélyezve van: a parancshelyettesítés, a shell-függvények és a ( command ) parancsokkal meghívott alhéjak öröklik a DEBUG és RETURN csapdákat.<
A hibakövetés engedélyezve van: a parancshelyettesítés, a shell-függvények és a ( command ) paranccsal meghívott alhéjak öröklik az ERR csapdát. >
Ha be van állítva, a fenti, Pathname Expansion részben leírt kiterjesztett mintaillesztési funkciók engedélyezve vannak.
Ha be van állítva, a $'string' és $"string" idézőjel végrehajtásra kerül a $ {paraméter} kiterjesztéseken, idézőjelbe zárva. Ez az opció alapértelmezés szerint engedélyezve van.
Ha be van állítva, azok a minták, amelyek nem egyeznek meg a fájlnevekkel az elérési út kiterjesztése során, kiterjesztési hibát okoznak.
Ha be van állítva, a FIGNORE shell változó által megadott utótagok a szavak figyelmen kívül hagyását eredményezik a szókiegészítés során, még akkor is, ha a figyelmen kívül hagyott szavak az egyetlen lehetséges kiegészítés. A FIGNORE leírását a fenti SHELL VÁLTOZÓK részben találja. Ez az opció alapértelmezés szerint engedélyezve van.
Ha be van állítva, a mintaillesztési zárójeles kifejezésekben használt tartománykifejezések (lásd fent a Mintaillesztés részt) úgy viselkednek, mintha a hagyományos C területi beállításban használnák az összehasonlításokat. Ez azt jelenti, hogy a rendszer nem veszi figyelembe az aktuális területi beállítás leválogatási sorrendjét, így a b nem válogatja össze az A és B, valamint a nagybetűs és a kisbetűs ASCII-karakterek egybesorolódnak.
Ha be van állítva, az útvonalnévbővítési kontextusban használt ** minta minden fájlnak és nulla vagy több könyvtárnak és alkönyvtárnak megfelel. Ha a mintát / követi, csak a könyvtárak és alkönyvtárak egyeznek.
Ha be van állítva, a shell hibaüzenetek a szabványos GNU hibaüzenet formátumban kerülnek kiírásra.
Ha be van állítva, az előzmények listája hozzáfűződik a HISTFILE változó értéke által elnevezett fájlhoz, amikor kilép a shellből, nem pedig felülírja a fájlt.
Ha be van állítva, és a readline használatban van, a felhasználó lehetőséget kap a sikertelen előzménycsere újraszerkesztésére.
Ha be van állítva, és a readline használatban van, az előzmények helyettesítésének eredményei nem kerülnek azonnal át a shell elemzőbe. Ehelyett az eredményül kapott sort a rendszer betölti a readline szerkesztési pufferbe, lehetővé téve a további módosításokat.
Ha be van állítva, és a readline használatban van, a bash megpróbálja végrehajtani a gazdagépnév-kiegészítést, amikor a @ karaktert tartalmazó szó befejeződik (lásd: >Kitöltés a fenti READLINE alatt). Ez alapértelmezés szerint engedélyezve van.
Ha be van állítva, a bash elküldi a SIGHUP-ot az összes feladatnak, amikor egy interaktív bejelentkezési shell kilép.
Ha be van állítva, a parancshelyettesítés az errexit beállítás értékét örökli, ahelyett, hogy az alhéj környezetben törölné. Ez az opció akkor engedélyezett, ha a posix mód be van kapcsolva.
Ha be van állítva, engedélyezze a # karakterrel kezdődő szót, hogy az adott szót és a sorban lévő összes többi karaktert figyelmen kívül hagyja egy interaktív shellben (lásd fent a MEGJEGYZÉSEK részt). Ez az opció alapértelmezés szerint engedélyezve van.
Ha be van állítva, és a jobvezérlés nem aktív, akkor a shell egy olyan folyamat utolsó parancsát futtatja, amely nem fut le a háttérben az aktuális shell-környezetben.
Ha be van állítva, és a cmdhist opció engedélyezve van, a többsoros parancsokat a rendszer beágyazott újsorokkal menti az előzményekbe ahelyett, hogy pontosvesszőt használna, ahol lehetséges.
Ha be van állítva, a helyi változók egy korábbi hatókörben létező azonos nevű változó értékét és attribútumait öröklik, mielőtt új értékeket rendelnének hozzá. A nameref attribútum nem öröklődik.
Ha be van állítva, a unset a helyi változókon a korábbi függvénytartományokban meghívása megjelöli őket, így a későbbi keresések hatástalanul találják őket, amíg a függvény vissza nem tér. Ez megegyezik a helyi változók hatástalanításának viselkedésével az aktuális függvényhatókörben.
A shell akkor állítja be ezt a beállítást, ha bejelentkezési shellként indul (lásd fent a INVOCATION részt). Az érték nem módosítható.
Ha be van állítva, és egy fájlhoz, amelyhez bash ellenőrzi a leveleket, már hozzáfértek a legutóbbi ellenőrzés óta, akkor a ``A mailfájlban lévő levél megtörtént. olvasható'' jelenik meg.
Ha be van állítva, és a readline használatban van, a bash nem kísérel meg keresni a PATH útvonalon lehetséges befejezések után, amikor a befejezést egy üres sorban próbálják meg.
Ha be van állítva, a bash a kis- és nagybetűk megkülönböztetése nélkül egyezteti a fájlneveket az elérési útnév-bővítés során (lásd fent az Útvonalnév-bővítés részt).
Ha be van állítva, a bash a kis- és nagybetűktől nem érzékeny módon egyezteti a mintákat, amikor egyezést hajt végre case vagy [[ feltételes parancsok végrehajtásakor, mintahelyettesítő szóbővítések végrehajtásakor vagy a lehetséges befejezések szűrésekor programozható befejezés részeként.
Ha be van állítva, a bash lehetővé teszi, hogy olyan minták, amelyek egyetlen fájlnak sem egyeznek meg (lásd fent az Elérési út kiterjesztése részt), null karakterláncra bővüljenek, nem pedig önmagukra.
Ha be van állítva, a programozható befejezési lehetőségek (lásd a Programozható befejezés részt fent) engedélyezve vannak. Ez az opció alapértelmezés szerint engedélyezve van.
Ha be van állítva, és a programozható befejezés engedélyezve van, a bash olyan parancsnevet kezel, amely nem tartalmaz befejezéseket, és megpróbálja az álnév kiterjesztését. Ha álnévvel rendelkezik, a bash megkísérli a programozható befejezést a kibontott álnévből származó parancsszó használatával.
Ha be van állítva, a prompt karakterláncok paraméterbővítésen, parancshelyettesítésen, aritmetikai bővítésen és idézőjel eltávolításon mennek keresztül a fenti PROMPTING részben leírtak szerint. Ez az opció alapértelmezés szerint engedélyezve van.
A shell akkor állítja be ezt a beállítást, ha korlátozott módban indul (lásd alább a RESTRICTED SHELL részt). Az érték nem módosítható. Ez nem áll vissza az indítási fájlok végrehajtásakor, így az indító fájlok felderíthetik, hogy egy shell korlátozott-e vagy sem.
Ha be van állítva, a beépített shift hibaüzenetet nyomtat, ha az eltolások száma meghaladja a pozícióparaméterek számát.
Ha be van állítva, a beépített forrás (.) a PATH értékét használja az argumentumként megadott fájlt tartalmazó könyvtár megkereséséhez. Ez az opció alapértelmezés szerint engedélyezve van.
Ha be van állítva, a echo beépített alapértelmezés szerint kibontja a backslash-escape sorozatokat.
Felfüggessze a parancsértelmező végrehajtását, amíg SIGCONT jelet nem kap. A bejelentkezési shell nem függeszthető fel; a -f kapcsolóval ezt felülírhatjuk és kikényszeríthetjük a felfüggesztést. A visszatérési állapot 0, kivéve, ha a shell egy bejelentkezési shell, és a -f nincs megadva, vagy ha a jobvezérlés nincs engedélyezve.
A kifejezés feltételes kifejezés kiértékelésétől függően 0 (igaz) vagy 1 (hamis) állapotot ad vissza. Minden operátornak és operandusnak külön argumentumnak kell lennie.
FELTÉTELES KIFEJEZÉSEK. A teszt nem fogad el semmilyen opciót, és nem fogad el és nem hagy figyelmen kívül egy argumentumot, amely az opciók végét jelzi.
A kifejezések a következő operátorok használatával kombinálhatók, csökkenő sorrendben. Az értékelés az érvek számától függ; lásd alább. Az operátori prioritás akkor használatos, ha öt vagy több argumentum van.
- ! expr
Igaz, ha a kifejezés értéke hamis.
- ( expr )
A kifejezés értékét adja vissza. Ez az operátorok normál elsőbbségének felülbírálására használható.
- expr1 -a expr2
Igaz, ha a kifejezés1 és a kifejezés2 is igaz.
- expr1 -o expr2
Igaz, ha a kifejezés1 vagy a kifejezés2 igaz.
tesztelje és [ értékelje ki a feltételes kifejezéseket az argumentumok számán alapuló szabálykészlet használatával.
- 0 arguments
A kifejezés hamis.
- 1 argument
A kifejezés akkor és csak akkor igaz, ha az argumentum nem null.
- 2 arguments
Ha az első argumentum !, akkor a kifejezés csak akkor igaz, ha és akkor, ha a második argumentum nulla. Ha az első argumentum a FELTÉTELES KIFEJEZÉSEK alatt felsorolt unáris feltételes operátorok egyike, akkor a kifejezés igaz, ha az unáris teszt igaz. Ha az első argumentum nem érvényes unáris feltételes operátor, a kifejezés hamis.
- 3 arguments
Az alábbi feltételek a felsorolt sorrendben érvényesek. Ha a második argumentum a FELTÉTELES KIFEJEZÉSEK alatt felsorolt bináris feltételes operátorok egyike, akkor a kifejezés eredménye az első és harmadik argumentumot operandusként használó bináris teszt eredménye. Az -a és -o operátorok bináris operátoroknak minősülnek, ha három argumentum van. Ha az első argumentum !, akkor az érték a kétargumentumú teszt tagadása a második és harmadik argumentum használatával. Ha az első argumentum pontosan ( és a harmadik argumentum pontosan ), az eredmény a második argumentum egyargumentumos tesztje. Ellenkező esetben a kifejezés hamis.
- 4 arguments
Ha az első argumentum a !, akkor az eredmény a fennmaradó argumentumokból álló három argumentumból álló kifejezés tagadása. Ellenkező esetben a kifejezés elemzése és kiértékelése prioritás szerint történik a fent felsorolt szabályok szerint.
- 5 or more arguments
A kifejezés elemzése és kiértékelése prioritás szerint történik a fent felsorolt szabályok szerint.
Ha a teszt vagy a [ []-vel együtt használják, a < és > operátorok lexikográfiai sorrendben rendezik az ASCII sorrendet.
Nyomtassa ki a felhalmozott felhasználói és rendszeridőket a héjhoz és a héjból futtatott folyamatokhoz. A visszatérési állapot 0.
Az arg parancsot akkor kell olvasni és végrehajtani, amikor a shell sigspec jel(eke)t kap. Ha az arg hiányzik (és egyetlen sigspec van) vagy -, akkor minden megadott jel visszaáll a megfelelőre. eredeti elrendezés (az az érték, amely a héjba való belépéskor volt). Ha az arg a null karakterlánc, az egyes sigspec által megadott jeleket figyelmen kívül hagyja a shell és az általa meghívott parancsok. Ha az arg nincs jelen, és a -p meg van adva, akkor az egyes sigspec-ekhez társított trap parancsok megjelennek. Ha nincs megadva argumentum, vagy csak a -p van megadva, a trap kinyomtatja az egyes jelekhez tartozó parancsok listáját. A -l opció hatására a shell kinyomtatja a jelnevek listáját és a hozzájuk tartozó számokat. Minden sigspec vagy a <signal.h>-ban meghatározott jelnév, vagy egy jelszám. A jelnevek nem különböznek a kis- és nagybetűktől, és a A >SIG előtag nem kötelező.
Ha a sigspec értéke EXIT (0), akkor az arg parancs végrehajtásra kerül a rendszerhéjból való kilépéskor. Ha egy sigspec DEBUG, akkor az arg parancs minden egyszerű parancs előtt végrehajtásra kerül, >for parancs, case parancs, select parancs, minden aritmetika for parancsot, és mielőtt az első parancs végrehajtásra kerülne egy shell függvényben (lásd fent a SHELL GRAMMAR részt). Tekintse meg az extdebug opció leírását a beépített boltban a DEBUG csapdára gyakorolt hatásának részleteiért. Ha a sigspec RETURN, az arg parancs minden alkalommal végrehajtódik, amikor egy shell-függvény vagy egy szkript a -val végrehajtódik. vagy a forrás beépített modulja befejezi a végrehajtást.
Ha a sigspec ERR, akkor az arg parancs végrehajtásra kerül, amikor egy folyamat (amely egyetlen egyszerű parancsból állhat), egy lista vagy egy egy összetett parancs nem nulla kilépési állapotot ad vissza, a következő feltételekkel. Az ERR trap nem hajtódik végre, ha a sikertelen parancs a parancslista része, közvetlenül a while vagy ig kulcsszó után, a teszt része if utasítás, az && vagy || listában végrehajtott parancs része, kivéve az utolsó && vagy || , bármely parancs a folyamatban, kivéve az utolsót, vagy ha a parancs visszatérési értékét a ! használatával invertálja. Ezek ugyanazok a feltételek, amelyeknek megfelel az errexit (-e) opció.
A héjba való belépéskor figyelmen kívül hagyott jelek nem csapdázhatók vagy nem állíthatók vissza. A nem figyelmen kívül hagyott csapdázott jelek visszaállnak eredeti értékükre egy alhéj- vagy alhéj-környezetben, amikor létrehoznak egyet. A visszatérési állapot hamis, ha bármely sigspec érvénytelen; ellenkező esetben a trap értéke igaz.
Opciók nélkül adja meg, hogy az egyes nevek hogyan értelmezhetők, ha parancsnévként használnák őket. Ha a -t opciót használja, a type egy karakterláncot nyomtat, amely az alias, keyword, egyike >function, builtin vagy file, ha a name egy álnév, shell fenntartott szó, függvény, beépített vagy lemezfájl, illetőleg. Ha a név nem található, akkor a rendszer nem nyomtat semmit, és a rendszer false kilépési állapotot ad vissza. Ha a -p opciót használja, a type vagy annak a lemezfájlnak a nevét adja vissza, amely akkor futna le, ha a name parancsnévként lenne megadva. , vagy semmit, ha a "type -t name" nem adna vissza fájlt. A -P opció PATH keresést kényszerít minden névre, még akkor is, ha ``type -t name'' nem adja vissza a fájlt. Ha egy parancs kivonatolt, a -p és a -P kinyomtatja a kivonatolt értéket, amely nem feltétlenül az a fájl, amely először jelenik meg a PATH-ban. Ha a -a opciót használja, a type kinyomtatja az összes olyan helyet, amely név nevű végrehajtható fájlt tartalmaz. Ez magában foglalja az álneveket és függvényeket, akkor és csak akkor, ha a -p opciót szintén nem használja. A kivonatolt parancsok táblázatát a rendszer nem tekinti meg a -a használatakor. A -f opció letiltja a shell függvény keresését, akárcsak a beépített parancsnál. A type true értéket ad vissza, ha az összes argumentum megtalálható, hamis értéket, ha van ilyen. nem találhatók.
Ellenőrzést biztosít a shell és az általa elindított folyamatok rendelkezésére álló erőforrások felett, az ilyen vezérlést lehetővé tevő rendszereken. A -H és -S opciók megadják, hogy a kemény vagy lágy korlát be van állítva az adott erőforráshoz. A kemény limitet nem növelheti meg nem root felhasználó, miután beállította; lágy határérték a kemény határértékig növelhető. Ha sem -H, sem -S nincs megadva, akkor a lágy és kemény határértékek is be vannak állítva. A limit értéke lehet egy szám az erőforráshoz megadott egységben, vagy a hard, soft vagy speciális értékek egyike. korlátlanra, amelyek az aktuális kemény limitet, az aktuális lágy korlátot és a no limitet jelentik. Ha a limit ki van hagyva, akkor az erőforrás lágy korlátjának aktuális értéke kerül kinyomtatásra, hacsak nincs megadva a -H opció. Ha egynél többerőforrás van megadva, a korlát neve és adott esetben mértékegysége az érték elé kerül nyomtatásra. A többi opciót a következőképpen értelmezzük:
- -a
Minden áramkorlátot jelentenek; nincsenek korlátok
- -b
A foglalatpuffer maximális mérete
- -c
A létrehozott alapfájlok maximális mérete
- -d
Egy folyamat adatszegmensének maximális mérete
- -e
A maximális ütemezési prioritás ("szép")
- -f
A shell és gyermekei által írt fájlok maximális mérete
- -i
A függőben lévő jelek maximális száma
- -k
A kiosztható kqueu-ok maximális száma
- -l
A memóriába zárható maximális méret
- -m
A maximális beállított rezidensméret (sok rendszer nem tartja be ezt a korlátot)
- -n
A megnyitott fájlleírók maximális száma (a legtöbb rendszer nem teszi lehetővé ennek az értéknek a beállítását)
- -p
A cső mérete 512 bájtos blokkokban (ez lehet, hogy nincs beállítva)
- -q
A POSIX üzenetsorokban található bájtok maximális száma
- -r
A maximális valós idejű ütemezési prioritás
- -s
A maximális kötegméret
- -t
A maximális processzoridő másodpercben
- -u
Az egyetlen felhasználó számára elérhető folyamatok maximális száma
- -v
A shell és egyes rendszereken a gyermekei számára elérhető virtuális memória maximális mennyisége
- -x
A fájlzárolások maximális száma
- -P
A pszeudoterminálok maximális száma
- -R
A valós idejű folyamat letiltás előtti maximális időtartama mikroszekundumban
- -T
A szálak maximális száma
Ha a limit meg van adva, és a -a opció nincs használva, a limit a megadott erőforrás új értéke. Ha nincs megadva opció, akkor a -f tételt feltételezi. Az értékek 1024 bájtos lépésekben vannak megadva, kivéve a -t-et, amely másodpercben értendő; -R, amely mikroszekundumban van; -p, amely 512 bájtos blokkok egységeiben van megadva; -P, -T, -b, -k, -n, és -u, amelyek skálázatlan értékek; és Posix módban a -c és -f, amelyek 512 bájtos lépésekben vannak. A visszatérési állapot 0, kivéve, ha érvénytelen opciót vagy argumentumot adnak meg, vagy ha hiba történik az új korlát beállítása közben.
A felhasználói fájl-létrehozó maszk módra van állítva. Ha a mode egy számjeggyel kezdődik, a rendszer oktális számként értelmezi; egyébként a chmod(1) által elfogadotthoz hasonló szimbolikus módmaszkként értelmeződik. Ha a módot kihagyja, a maszk aktuális értéke kerül kinyomtatásra. A -S opció hatására a maszk szimbolikus formában kerül nyomtatásra; az alapértelmezett kimenet egy oktális szám. Ha a -p opció meg van adva, és a mode ki van hagyva, a kimenet olyan formában lesz, amely újra felhasználható bemenetként. A visszatérési állapot 0, ha a módot sikeresen megváltoztatták, vagy ha nem adtak meg mode argumentumot, egyébként pedig hamis.
Távolítsa el az egyes neveket a meghatározott álnevek listájáról. Ha a -a meg van adva, az összes álnév-definíció törlődik. A visszatérési érték igaz, kivéve, ha a megadott név nem meghatározott álnév.
Minden egyes névhez távolítsa el a megfelelő változót vagy függvényt. Ha a -v opció adott, minden név egy shell-változóra hivatkozik, és ez a változó el lesz távolítva. A csak olvasható változók beállítása nem lehetséges. Ha a -f meg van adva, akkor minden név egy shell-függvényre hivatkozik, és a függvény definíciója el lesz távolítva. Ha a -n opció meg van adva, és a name egy változó a nameref attribútummal, akkor a name lesz beállítva, nem pedig az it változóra hivatkozik. -n nincs hatása, ha az -f kapcsoló megadva.
Ha nincs megadva opció, minden név egy változóra utal; hanincs ilyen nevű változó, akkor az ilyen nevű függvény, ha van ilyen, nincs beállítva. Minden beállítatlan változó vagy függvény eltávolításra kerül a következő parancsoknak átadott környezetből. Ha a következők bármelyike: BASH_ALIASES, BASH_ARGV0, BASH_CMDS, BASH_COMMAND, BASH_SUBSHELL, >BASHPID, COMP_WORDBREAKS, DIRSTACK, EPOCHREALTIME, EPOCHSECONDS, FUNCNAME >, GROUPS, HISTCMD, LINENO, RANDOM, SECONDS vagy A >SRANDOM nincs beállítva, elveszítik speciális tulajdonságaikat, még akkor is, ha utólag visszaállítják őket.
A kilépési állapot igaz, kivéve, ha a név írásvédett.
Várjon minden megadott gyermekfolyamatot, és adja vissza a befejezési állapotát. Mindegyik azonosító lehet folyamatazonosító vagy feladatspecifikáció; ha egy jobspecifikáció meg van adva, akkor a rendszer a job folyamatában lévő összes folyamatra vár. Ha az id nincs megadva, a várakozik az összes futó háttérfeladatra és az utoljára végrehajtott folyamathelyettesítésre, ha a folyamatazonosító megegyezik a $!,< és a visszatérési állapot nulla. Ha a -n opció megadva, vár egyetlen feladatra az id-ek listájából, vagy ha nem Aids rendelkezésre áll, minden feladat befejezéséhez, és visszaadja a kilépési állapotát. Ha a megadott argumentumok egyike sem a shell gyermeke, vagy ha nincs megadva argumentum, és a parancsértelmezőnek nincsenek váratlan gyermekei, a kilépési állapot 127. Ha a -p kapcsoló megadva, a folyamat vagy feladat annak a job azonosítója, amelyre a kilépési állapotot visszaküldi, az opció argumentum által megnevezett varname változóhoz van rendelve. A változó kezdetben hatástalan lesz, mielőtt bármilyen feladat. Ez csak akkor hasznos, ha a -n opció meg van adva. A -f opció megadása, ha a feladatvezérlés engedélyezve van, várni kényszeríti a Az id megszüntetéséhez, mielőtt visszaadná az állapotát, ahelyett, hogy az állapot megváltozásakor térne vissza. Ha az id nem létező folyamatot vagy feladatot ad meg, a visszatérési állapot 127. Ellenkező esetben a visszatérési állapot az utolsó várt folyamat vagy feladat kilépési állapota.
A Bash-4.0 bevezette a „shell-kompatibilitási szint” fogalmát, amely opciók halmazaként van megadva a beépített compat31, compat32, compat40 shopban. , compat41 és így tovább). Jelenleg csak egy kompatibilitási szint létezik – mindegyik opció kölcsönösen kizárja egymást. A kompatibilitási szint célja, hogy lehetővé tegye a felhasználók számára, hogy olyan viselkedést válasszanak a korábbi verziók közül, amelyek nem kompatibilisek az újabb verziókkal, miközben átállítják a szkripteket a jelenlegi szolgáltatások és viselkedés használatához. Ideiglenes megoldásnak szánják.
Ez a szakasz nem tesz említést egy adott verzióhoz szabványos viselkedésről (pl. a compat32 beállítása azt jelenti, hogy a reguláris kifejezés megfelelő operátor rhs-jeinek idézése speciális reguláris kifejezés karaktereket idéz a szóban, ami az alapértelmezett viselkedés a bash-ben 3.2 és újabb).
Ha egy felhasználó engedélyezi például a compat32-t, az befolyásolhatja más kompatibilitási szintek viselkedését egészen az aktuális kompatibilitási szintig. Az ötlet az, hogy minden kompatibilitási szint szabályozza a bash adott verziójában megváltozott viselkedést, de előfordulhat, hogy ez a viselkedés a korábbi verziókban is jelen volt. Például a bash-4.1 paranccsal történt terület-alapú összehasonlítás használatára vonatkozó változás a bash-4.1-ben érkezett, a korábbi verziók pedig ASCII-alapú összehasonlításokat használtak, így a compat32 engedélyezése lehetővé teszi az ASCII-alapú összehasonlításokat. is. Előfordulhat, hogy ez a részletesség nem minden felhasználáshoz elegendő, ezért a felhasználóknak körültekintően kell alkalmazniuk a kompatibilitási szinteket. Olvassa el az adott funkció dokumentációját, hogy megtudja, mi az aktuális viselkedés.
A Bash-4.3 új shell-változót vezetett be:
BASH_COMPAT. Az ehhez a változóhoz rendelt érték (egy decimális verziószám, például 4.2, vagy a compatNN opciónak megfelelő egész szám, például 42) határozza meg a kompatibilitási szint.
A bash-4.4-től kezdve a Bash megkezdte a régebbi kompatibilitási szintek lejáratását. Végül a lehetőségek megszűnnek a BASH_COMPAT javára.
A Bash-5.0 a végleges verzió, amelyhez az előző verzióhoz lesz egy egyedi shopt opció. A felhasználóknak a BASH_COMPAT verziót kell használniuk a bash-5.0 és újabb verziókon.
Az alábbi táblázat az egyes kompatibilitási szintbeállítások által szabályozott viselkedési változásokat írja le. A compatNN címke rövidítésként használható a kompatibilitási szint NN beállításához a a következő mechanizmusokat. A bash-5.0 előtti verziók esetén a kompatibilitási szint a megfelelő kompatibilisNN shopt opcióval állítható be. A bash-4.3 és újabb verziók esetén a BASH_COMPAT változót részesítjük előnyben, és ez szükséges a bash-5.1 és újabb verziókhoz.
a [[ parancs reguláris kifejezés illesztő operátorának (=~) rhs-jének idézése nem okoz különleges hatást
egy parancslista, például "a ; b ; c" megszakítása a következő parancs végrehajtását okozza a listában (a bash-4.0 és újabb verziókban a shell úgy működik, mintha megkapta volna a megszakítást, így egy listában lévő parancs megszakítása megszakítja a teljes lista végrehajtását)
a [[ parancs < és > operátorai nem veszik figyelembe az aktuális területi beállítást a karakterláncok összehasonlításakor; ASCII rendezést használnak. A bash-4.1 előtti Bash verziók ASCII leválogatást és strcmpet (3) használnak; A bash-4.1 és későbbiekben az aktuális területi beállítás leválogatási sorrendjét és a strcoll(3) parancsot használja.
posix módban az időt opciók követhetik, és továbbra is fenntartott szóként ismerhető fel (ez a 267. POSIX értelmezés)
posix módban az elemző megköveteli, hogy páros számú egyszeres idézőjel szerepeljen egy dupla idézőjeles paraméterkiterjesztés word részében, és speciálisan kezeli őket, hogy az idézőjelekben lévő karaktereket idézőjelnek tekintse (ez a POSIX 221-es értelmezése)
a dupla idézőjeles minta helyettesítésénél a helyettesítő karakterlánc nem esik át idézőjel eltávolításon, mint a bash-4.2 utáni verziókban
Posix módban az idézőjelek különlegesnek számítanak, ha egy kettős idézőjeles paraméterbővítés szó részét bővítik, és felhasználhatók záró kapcsos zárójel vagy más speciális karakter idézésére (ezt része a 221. POSIX értelmezésnek); a későbbi verziókban az idézőjelek nem különlegesek a dupla idézőjeles szóbővítéseken belül
a shell nem nyomtat figyelmeztető üzenetet, ha egy idézőjeles összetett hozzárendelést próbálnak meg deklarálási argumentumként használni (declare -a foo='(1 2)'). A későbbi verziók arra figyelmeztetnek, hogy ez a használat elavult
A szóbővítési hibák nem végzetes hibáknak minősülnek, amelyek az aktuális parancs meghiúsulását okozzák, még Posix módban is (az alapértelmezett viselkedés az, hogy végzetes hibákká teszik őket, amelyek miatt a shell kilép)
shell-függvény végrehajtásakor a hurok állapota (while/amíg/stb.) nincs visszaállítva, így a break vagy a folytatás ebben a függvényben megszakad vagy folytatja a ciklusokat a hívási környezetben. A Bash-4.4 és későbbiekben állítsa vissza a hurokállapotot ennek megakadályozása érdekében
a shell beállítja a BASH_ARGV és a BASH_ARGC által használt értékeket, így azok kibővíthetik a shell pozícióparamétereit még akkor is, ha a kiterjesztett hibakeresési mód nincs engedélyezve
az alhéj a szülőkörnyezetből örökli a ciklusokat, így a break vagy a continue hatására az alhéj kilép.
Az attribútumokat beállító beépített elemeket megelőző változó-hozzárendelések továbbra is hatással vannak az azonos nevű változókra a hívó környezetben még akkor is, ha a shell nem Posix módban van
A Bash-5.1 megváltoztatta a $RANDOM létrehozásának módját, hogy valamivel több véletlenszerűséget hozzon létre. Ha a shell-kompatibilitási szint 50-re vagy alacsonyabbra van állítva, akkor visszaáll a bash-5.0 és a korábbi verziók metódusához, így a véletlenszám-generátor oltása aRANDOM érték hozzárendelésével ugyanazt a sorozatot eredményezi. mint a bash-5.0/p>-ben
Ha a parancs hash táblája üres, a bash-5.1 előtti bash verziók tájékoztató üzenetet nyomtattak erre vonatkozóan, még akkor is, ha olyan kimenetet állítanak elő, amely újra felhasználható bemenetként. A Bash-5.1 elnyomja ezt az üzenetet, ha a -l opciót megadják.
Ha a bash rbash néven indul, vagy a -r opciót adják meg az híváskor, a shell korlátozottá válik. A korlátozott shell a szabványos shellnél jobban szabályozott környezet beállítására szolgál. Úgy viselkedik, mint a bash, azzal az eltéréssel, hogy a következők nem engedélyezettek, vagy nem hajtják végre:
könyvtárak módosítása cd segítségével
a SHELL, PATH, HISTFILE, ENV vagy BASH_ENV értékek beállítása vagy visszavonása
a / elemet tartalmazó parancsnevek megadása
a / karaktert tartalmazó fájlnév megadása a beépített . parancs argumentumaként
perjelet tartalmazó fájlnév megadása a beépített history parancs argumentumaként
perjelet tartalmazó fájlnév megadása a -p kapcsoló argumentumaként a beépített hash parancshoz
függvénydefiníciók importálása a shell környezetből indításkor
a SHELLOPTS értékének elemzése a shell környezetből indításkor
a kimenet átirányítása a >, >|, <>, >&, &> és >> átirányítási operátorok használatával
az exec beépített paranccsal cserélje le a shellt egy másik paranccsal
beépített parancsok hozzáadása vagy törlése a -f és a -d kapcsolókkal az enable beépített parancshoz
az enable builtin paranccsal engedélyezze a letiltott shell beépített modulokat
adja meg a -p opciót a beépített command parancshoz
a korlátozott mód kikapcsolása a +r vagy a +o korlátozott beállításával.
Ezek a korlátozások az indítási fájlok beolvasása után lépnek életbe.
Az rbash kikapcsol minden korlátozást a parancsfájl végrehajtásához létrehozott shellben.
http://pubs.opengroup.org/onlinepubs/9699919799/
A bash futtatható fájl
A rendszerszintű inicializációs fájl, amely a bejelentkezési shellekhez fut
A bejelentkezési parancsértelmezők számára végrehajtott személyes inicializálási fájl
Az egyedi per-interaktív shell indítófájl
Az egyéni bejelentkezési shell-tisztító fájl, amely akkor fut le, amikor egy bejelentkezési shell kilép
Egyedi readline inicializálási fájl
Brian Fox, Free Software Foundation
bfox@gnu.org
Chet Ramey, Case Western Reserve University
chet.ramey@case.edu
Ha hibát talál a bash-ban, jelentse azt. Először azonban meg kell győződnie arról, hogy ez valóban hiba, és hogy megjelenik-e a bash legújabb verziójában. A legújabb verzió mindig elérhető az ftp://ftp.gnu.org/pub/gnu/bash/ webhelyről.
Miután megállapította, hogy valóban létezik egy hiba, a bashbug paranccsal küldje el a hibajelentést. Ha van megoldása, azt is bátran küldje el! Javaslatokat és „filozófiai” hibajelentéseket el lehet küldeni a bug-bash@gnu.org címre, vagy fel lehet tenni a Usenet hírcsoportba, a gnu.bash.bugba.
MINDEN hibajelentésnek tartalmaznia kell:
A bashbug automatikusan beszúrja az első három elemet a hibajelentés benyújtásához biztosított sablonba.
A kézikönyv oldalával kapcsolatos megjegyzéseket és hibajelentéseket a chet.ramey@case.edu címre kell küldeni.
Túl nagy és túl lassú.
Van néhány apró különbség a bash és az sh hagyományos verziói között, főleg a POSIX specifikáció miatt.
Az álnevek bizonyos felhasználási területeken zavaróak.
A shell beépített parancsai és funkciói nem leállíthatók/újraindíthatóak.
Összetett parancsok és parancssorozatok `a ; b ; A c' jeleket nem kecsesen kezelik, amikor a folyamat felfüggesztését kísérlik meg. Amikor egy folyamat leáll, a shell azonnal végrehajtja a sorozat következő parancsát. Elegendő a parancssort zárójelek közé tenni, hogy egy részhéjba kényszerítsük, amely egységként leállítható.
A tömbváltozókat (még) nem lehet exportálni.
Egyszerre csak egy aktív társfolyamat lehet.