Bash - Linuksa Komando - Unikso Komando

NAME

bash - GNU Bourne-Again SHell

SYNOPSIS

bash [opcioj] [dosiero]

PRISKRIBO

Bash estas komprenebla lingvo-komprenebla interpretilo, kiu ekzekutas ordonojn legitajn de la norma enigo aŭ de dosiero. Bash ankaŭ korpigas utilajn karakterizaĵojn de la Korn kaj C konkoj ( ksh kaj csh ).

Bash intencas esti laŭforma efektivigo de la IEEE POSIX Shell kaj Tools specification (IEEE Working Group 1003.2).

Obloj

Aldone al la elektoj de unuopa karaktero, dokumentita en la priskribo de la aro konstruita komando, bash interpretas la jenajn eblojn kiam ĝi alpreĝas:

-c kordo

Se la -c- opcio estas ĉeestanta, tiam komandoj estas legitaj el ŝnuro . Se estas argumentoj post la ĉeno , ili estas atribuitaj al la poziciaj parametroj, komencante kun $ 0 .

-i

Se la -i opcio estas ĉeestanta, la ŝelo estas interaga .

-l

Agordu , kvazaŭ ĝi estus alpreĝita kiel ensaluto-ŝelo (vidu INVOCATION below).

-r

Se la -r- opcio estas ĉeestanta, la ŝelo restriktas (vidu RESTRICTED SHELL sube).

-s

Se la -s- opcio estas ĉeestanta, aŭ se neniuj argumentoj restas post opcio-pretigo, tiam komandoj estas legitaj de la norma enigo. Ĉi tiu opcio permesas la poziciajn parametrojn esti starigitaj alpreĝante interaga ŝelo.

-D

Listo de ĉiuj duoblaj cititaj ŝnuroj antaŭaj de $ estas presita sur la norma eligo. Ĉi tiuj estas la kordoj, kiuj estas submetitaj al lingva tradukado kiam la nuna loko ne estas CPOSIX . Ĉi tio implicas la -n- opcion; Neniu ordono estos ekzekutita.

[- +] O [ shopt_option ]

shopt_option estas unu el la ŝelo-elektoj akceptitaj de la butiko konstruita (vidu SHELL BUILTIN COMMANDS sube). Se shopt_option ĉeestas, -O aranĝas la valoron de tiu opcio; + O malplenigas ĝin. Se shopt_option ne estas provizita, la nomoj kaj valoroj de la ŝelo-elektoj akceptitaj de butiko estas presitaj sur la norma eligo. Se la alvoko estas + O , la eligo montras en formato, kiu povas esti reutilita kiel enigo.

-

Al - signaloj la fino de ebloj kaj malŝaltas plian eblon prilaborado. Ajna argumentoj post tio - estas traktataj kiel dosiernomoj kaj argumentoj. Argumento de - estas ekvivalenta al - .

Bash ankaŭ interpretas multajn mult-karakterajn eblojn. Ĉi tiuj ebloj devas aperi en la komandlinio antaŭ ol la elektoj de unuopa karaktero estu agnoskitaj.

--dump-po-strings

Ekvivalenta al -D , sed la eligo estas en la formato de dosiero GNU gettext po (portebla objekto).

--dump-strings

Ekvivalenta al -D .

- helpo

Montru uzatan mesaĝon sur norma eligo kaj eliri sukcese.

--in-dosiero- dosiero

--rcfile- dosiero

Ekzekutu komandojn de dosiero anstataŭ la norma persona komenca dosiero ~ / .bashrc se la ŝelo estas interaga (vidu INVOCATION below).

--Ensaluti

Ekvivalenta al -l .

- nekonata

Ne uzu la legendan bibliotekon GNU por legi komandliniojn kiam la ŝelo estas interaga.

--nofrofilo

Ne legu la sistemon de komenca dosiero / ktp / profilo aŭ iu ajn el la personaj komenca dosieroj ~ / .bash_profile , ~ / .bash_login , aŭ ~ / .profile . Defaŭlte, bash legas ĉi tiujn dosierojn kiam ĝi alpreĝas kiel ensaluto-ŝelo (vidu INVOCATION below).

--norc

Ne legu kaj ekzekuti la personan komencalan dosieron ~ / .bashrc se la ŝelo estas interaga. Ĉi tiu opcio estas implicite se la ŝelo estas alvokita kiel sh .

--posix

Ŝanĝi la konduton de bash kie la defaŭlta operacio diferencas de la normo POSIX 1003.2 por kongrui kun la normo ( pozix-modo ).

- Restriktita

La ŝelo estas limigita (vidu RESTRICTED SHELL sube).

--rpm-postulas

Produktu la liston de dosieroj, kiujn oni bezonas por la ŝelo-skripto por kuri. Ĉi tio implicas '-n' kaj estas submetita al la samaj limigoj kiel kompilaĵo de eraroj kontrolanta kontrolanta; Backticks, [] provoj kaj evaloj ne estas analizitaj, tial iuj dependecoj eble mankas. --verbose Ekvivalenta al -v .

--versio

Montri version-informojn por ĉi tiu petskribo de bash sur la norma eligo kaj eliri sukcese.

ARGUMENTOJ

Se argumentoj restas post opcio-prilaborado, kaj nek la -c nek la -s- opcio estis provizitaj, la unua argumento estas supozata kiel la nomo de dosiero enhavanta ŝandajn komandojn. Se bash estas alpreĝita tiel, $ 0 estas difinita al la nomo de la dosiero, kaj la poziciaj parametroj estas difinitaj al la ceteraj argumentoj. Bash legas kaj ekzekutas ordonojn de ĉi tiu dosiero, tiam eliras. La statusa eliro de Bash estas la eliro-statuso de la lasta komando ekzekutita en la skripto. Se neniuj komandoj estas ekzekutitaj, la eliro estas 0. Komenco provas malfermi la dosieron en la nuna dosierujo kaj, se neniu dosiero estas trovita, tiam la ŝelo serĉas la dosierujojn en PATH por la skripto.

INKURO

Ensalutilo estas unu, kies unua karaktero de argumento nulo estas aŭ, aŭ unu komencis kun la -login- opcio.

Interaga ŝelo estas unu eksterordinara kaj ne-opcio, kaj sen la -c- opcio, kies norma enigo kaj eligo estas konektitaj al fina stacioj (kiel determinis la isatty (3)), aŭ unu komencis kun la -i- opcio. PS1 estas aro kaj $ - inkluzivas i se bash estas interaga, permesante ŝelon-skripton aŭ startan dosieron por provi ĉi tiun staton.

La sekvaj alineoj priskribas kiel bash ekzekutas ĝiajn startajn dosierojn. Se iu el la dosieroj ekzistas sed ne povas esti legata, raportas eraro. Tildoj ekspansiiĝas en dosieraj nomoj kiel priskribitaj sube sub Tilde Expansion en la sekcio EXPANSION .

Kiam bash estas alvokita kiel interaga ensalutilo, aŭ kiel ne-interaga ŝelo kun la -login- opcio, ĝi unue legas kaj ekzekutas ordonojn de la dosiero / ktp / profilo , se tiu dosiero ekzistas. Post legi tiun dosieron, ĝi serĉas ~ / .bash_profile , ~ / .bash_login , kaj ~ / .profile , en tiu ordo, kaj legas kaj ekzekutas ordonojn de la unua kiu ekzistas kaj estas legebla. La opcio --noprofilo povas esti uzata kiam la ŝelo komencas malhelpi ĉi tiun konduton.

Kiam ensalutilo eliras, bash legas kaj ekzekutas ordonojn de la dosiero ~ / .bash_logout , se ĝi ekzistas.

Kiam interaga ŝelo, kiu ne estas ensaluto, komenciĝas, bazas kaj ekzekutas ordonojn de ~ / .bashrc , se tiu dosiero ekzistas. Ĉi tio povas esti malhelpita per la --norc- opcio. La opcio --rcfile- dosiero devigos bash legi kaj ekzekuti komandojn de dosiero anstataŭ ~ / .bashrc .

Kiam bash estas ne interagata, por kuri ŝelon-skripton, ekzemple, ĝi serĉas la variablon BASH_ENV en la medio, etendas sian valoron se ĝi aperas tie kaj uzas la vastigitan valoron kiel la nomon de dosiero por legi kaj ekzekuti . Bash kondutas kvazaŭ la sekva komando estis ekzekutita:

se [-n "$ BASH_ENV"]; tiam. "$ BASH_ENV"; fi

sed la valoro de la variablo PATH ne estas uzata por serĉi la dosiernomon.

Se bash estas alvokita kun la nomo sh , ĝi provas imiti la komencan konduton de historiaj versioj kiel eble plej proksime, laŭforme al la normo POSIX. Kiam alvokita kiel intera ensalutilo, aŭ ne-interaga ŝelo kun la -login- opcio, unue provas legi kaj ekzekuti komandojn de / etc / profilo kaj ~ / .profile , en tiu ordo. La opcio --noprofilo povas esti uzata por malhelpi ĉi tiun konduton. Kiam alvokita kiel interaga ŝelo kun la nomo sh , bash serĉas la variablon ENV , vastigas sian valoron se ĝi difinas, kaj uzas la vastigitan valoron kiel la nomon de dosiero por legi kaj ekzekuti. Ĉar ŝelo alvokita kiel sh ne provas legi kaj ekzekuti ordonojn de iu ajn alia lanĉaj dosieroj, la --rcfile- opcio havas nenian efikon. Ne-interaga ŝelo alvokita kun la nomo sh ne provas legi iujn aliajn startajn dosierojn. Kiam alpreĝita kiel sh , bash eniras la pozixan reĝimon post kiam la startaj dosieroj estas legitaj.

Kiam bash komenciĝas en pozixa reĝimo, kiel kun la opcio --posix- komandlinio, ĝi sekvas la normon POSIX por lanĉaj dosieroj. En ĉi tiu maniero, interagaj konkoj ekspansiiĝas la ENV- variablon kaj komandoj estas legataj kaj ekzekutitaj de la dosiero kies nomo estas la vastigita valoro. Neniu alia start-dosieroj estas legataj.

Bash provas determini kiam ĝi estas kurita de la malproksima ŝelo daemon, kutime rshd . Se bash determinas, ke rshd estas kurita, ĝi legas kaj ekzekutas ordonojn de ~ / .bashrc , se tiu dosiero ekzistas kaj estas legebla. Ĝi ne faros ĉi tion se alpreĝita kiel sh . La opcio --norc povas esti uzata por malhelpi ĉi tiun konduton, kaj la --rcfile- opcio povas esti uzata por devigi alian dosieron esti legata, sed rshd ĝenerale ne alvokas la ŝelon kun tiuj opcioj aŭ permesas ilin esti specifitaj.

Se la ŝelo komenciĝas kun la efika uzanto (grupo) id ne egalas al la vera uzanto (grupo) id, kaj la -p opcio ne estas provizita, neniu startupaj dosieroj estas legataj, ŝeloj ne estas hereditaj de la medio, la SHELLOPTS variablo, se ĝi aperas en la medio, estas ignorita, kaj la efika uzanto-identigo estas difinita al la vera uzanto-id. Se la -p- opcio estas alvokata al la alvoko, la starta konduto estas la sama, sed la efika uzanto-id ne restarigas.

DIFINOJ

La jenaj difinoj estas uzataj laŭlonge de la resto de ĉi tiu dokumento.

malplenan

Spaco aŭ langeto.

vorto

Sekvenco de karakteroj konsideritaj kiel unuopaĵo de la ŝelo. Ankaŭ konata kiel token .

nomo

Vorto konsistanta nur de alfanuméraj karakteroj kaj substrekoj, kaj komencante per alfabeta karaktero aŭ substreko. Ankaŭ nomata identigilo .

metaŭraj

Karaktero, kiu senĉifrita, disigas vortojn. Unu el la sekvaj:

| &; () <> spaca langeto

kontrolo operatoro

Signo kiu plenumas kontrolon. Ĝi estas unu el la jenaj simboloj:

|| & &&; ;; () |

Vortoj RESERVED

Rezervitaj vortoj estas vortoj, kiuj havas specialan signifon al la ŝelo. La jenaj vortoj estas agnoskitaj kiel rezervitaj, kiam ili estas neototitaj kaj ĉu la unua vorto de simpla komando (vidu SHELL GRAMMAR sube) aŭ la trian vorton de kazopor komando:

! kazo farita elif alia esac por funkcio se en unuaranga tiam ĝis dum {} tempo [[]

SHELL GRAMARO

Simplaj Komandoj

Simpla komando estas sekvenco de laŭvolaj variaj asignoj sekvitaj de malplenaj vortoj kaj redirektoj, kaj finigitaj per kontrolo-operatoro . La unua vorto specifas la komandon por esti ekzekutita, kaj estas pasita kiel argumento nulo. La ceteraj vortoj pasas kiel argumentoj al la alvokita komando.

La redukta valoro de simpla komando estas ĝia eliro, aŭ 128 + n se la komando estas nuligita per signalo n .

Tuboj

Du- dukto estas sekvenco de unu aŭ pli da ordonoj apartigitaj de la karaktero . La formato por dukto estas:

[ tempo [ -p ]] [! ] komando [ | komando2 ...]

La norma eligo de komando estas konektita per tubaro al la norma enigo de komando2 . Ĉi tiu konekto estas farita antaŭ iaj ajn redirektoj specifitaj de la komando (vidu REDIRECTION sube).

Se la rezervita vorto ! antaŭas dukton, la eliro-statuso de tiu dukto estas la logika NE de la elirea stato de la lasta komando. Alie, la statuso de la dukto estas la eliro-statuso de la lasta komando. La ŝelo atendas ĉiujn ordonojn en la dukto por nuligi antaŭ ol valoro.

Se la tempo rezervita vorto antaŭas dukton, la pasinta kaj ankaŭ uzata kaj sistemo-tempo konsumita de ĝia ekzekuto estas raportitaj kiam la tubo finiĝas. La opcio -p ŝanĝas la eligan formaton al tiu, kiu estas specifita de POSIX. La TIMEFORMAT- variablon povas esti agordita al formato-kordo, kiu specifas, kiel la tempo de informo devas esti montrata; vidu la priskribon de TIMEFORMAT sub Shell Variables sube.

Ĉiu komando en dukto estas ekzekutita kiel aparta procezo (te, en subshello).

Listoj

Lerta estas sekvenco de unu aŭ pli da linioj apartigitaj de unu el la operatoroj ; , & , && , aŭ || , kaj laŭvole finita per unu el ; , & , aŭ .

El tiuj listaj telefonistoj, && kaj || havas egalan precedencon, sekvitan ; kaj &, kiuj havas egalan precedencon.

Sekvenco de unu aŭ pli da linioj povas aperi en listo anstataŭ punktokrono por limigi komandojn.

Se komando funkciigas komandon kaj , la konko ekzekutas la komandon en la fono en subaŝelo. La ŝelo ne atendas ke la komando finu, kaj la statuso de reveno estas 0. Komandoj disigitaj per a ; estas ekzekutitaj sekvencie; la ŝelo esperas, ke ĉiu komando ĉesu. La statuso de rondveturo estas la statuso de eliro de la lasta komando ekzekutita.

La kontrolo-operatoroj && kaj || signifi AND listojn kaj OR listojn, respektive. AND AND listo havas la formon

komando1 && komando2

Command2 estas ekzekutita se, kaj nur se, komando1 redonas statuson de eliro de nulo.

Aŭ listo havas la formon

komando1 || komando2

Command2 estas ekzekutita se kaj nur se komando1 redonas ne-nula elirecan statuson. La statuso de rondveturo de AND and OR listoj estas la eliro-statuso de la lasta komando ekzekutita en la listo.

Kompona Komandoj

Kompona komando estas unu el la sekvaj:

( listo )

listo estas ekzekutita en subshello. Variaj taskoj kaj konstruaj komandoj, kiuj efikas en la medio de la ŝelo, ne restos en efiko post kiam la komando kompletigas. La statuso de rondveturo estas la statuso de eliro de listo .

{ listo ; }

listo estas simple ekzekutita en la aktuala ŝelo-medio. listo devas esti nuligita per nova linio aŭ punkto. Ĉi tio estas konata kiel grupa komando . La statuso de rondveturo estas la statuso de eliro de listo . Rimarku, ke kontraste kun la metachaktoroj ( kaj ) , { kaj } estas rezervitaj vortoj kaj devas okazi, kie rezervita vorto estas permesita esti agnoskita. Pro tio ke ili ne kaŭzas vorton, ili devas esti apartigitaj de listo per blanka spaco.

(( esprimo ))

La esprimo estas taksita laŭ la reguloj priskribitaj sube sub ARITMETIKA EVALUADO . Se la valoro de la esprimo estas ne-nulo, la statuso de reveno estas 0; alie la redonstato estas 1. Ĉi tio estas ĝuste ekvivalenta por lasi " esprimon ".

[[ esprimo ]]

Revenu statuson de 0 aŭ 1 laŭ la taksado de la esprimita esprimo . Esprimoj estas formitaj de la primaroj priskribitaj sube sub KONDITIONAL EXPRESSIONS . Vorto dividado kaj pomnova ekspansio ne estas faritaj laŭ la vortoj inter la [[ kaj ]] ; tilde-ekspansio, parametro kaj ŝanĝiĝema ekspansio, aritmetika ekspansio, komando anstataŭo, procezo anstataŭigo kaj citaĵo forigo estas plenumitaj.

Kiam la == kaj ! = Telefonistoj estas uzataj, la kordo dekstre de la telefonisto estas konsiderata ŝablono kaj egale laŭ la reguloj priskribitaj sube sub Pattern Matching . La rondvalo estas 0 se la ĉeno kongruas aŭ ne kongruas kun la ŝablono, respektive kaj 1 alie. Ajna parto de la ŝablono povas esti citita por devigi ĝin esti egalita kiel ĉeno.

Esprimoj povas esti kombinitaj per la sekvaj operatoroj, listigitaj en malpliiĝanta ordo de prioritato:

( esprimo )

Revenas la valoron de esprimo . Ĉi tio povas esti uzata por nuligi la normalajn precedencojn de telefonistoj.

! esprimo

Vere, se esprimo estas falsa.

esprimo1 && esprimo2

Vere, se ambaŭ esprimo1 kaj esprimo2 estas vera.

esprimo1 || esprimo2 Vera se aŭ esprimo1esprimo2 estas vera.

La && kaj || telefonistoj ne taksas esprimon2 se la valoro de esprimo1 sufiĉas por determini la rondan valoron de la tuta kondiĉa esprimo.

por nomo [ en vorto ]; fari liston ; farita

La listo de jenaj vortoj estas vastigita, generante liston de eroj. La ŝanĝiĝema nomo estas difinita al ĉiu elemento de ĉi tiu listo, kaj listo estas ekzekutita ĉiufoje. Se la vorto estas preterlasita, la komando ekzekutas liston unufoje por ĉiu pozicia parametro, kiu estas aro (vidu PARAMETERS sube). La statuso de rondveturo estas la statuso de eliro de la lasta komando, kiu ekzekutas. Se la ekspansio de la sekvaj elementoj rezultigas malplenan liston, neniu ordono estas ekzekutita, kaj la statuso de reveno estas 0.

por (( expr1 ; expr2 ; expr3 )); fari liston ; farita

Unue, la aritmetika esprimo expr1 estas taksata laŭ la reguloj priskribitaj sube sub ARITMETIKA EVALUADO . La aritmetika esprimo expr2 estas tiam taksita ree ĝis ĝi taksas nulon. Ĉiufoje la expr2 taksas valoron ne-nulo, listo estas ekzekutita kaj la aritmetika esprimo expr3 estas taksita. Se iu esprimo estas preterlasita, ĝi kondutas kvazaŭ ĝi taksas 1. La redonvaloro estas la eliro-statuso de la lasta komando en listo ekzekutita aŭ malvera se iu el la esprimoj estas nevalida.

elektu nomon [ en vorto ]; fari liston ; farita

La listo de jenaj vortoj estas vastigita, generante liston de eroj. La aro de ekspansiiĝaj vortoj estas presita sur la norma eraro, ĉiu antaŭita de nombro. Se la vorto estas preterlasita, la poziciaj parametroj estas presitaj (vidu PARAMETERS sube). La PS3- promesilo tiam montriĝas kaj linio legita de la norma enigo. Se la linio konsistas el numero responda al unu el la montritaj vortoj, tiam la valoro de nomo estas difinita al tiu vorto. Se la linio estas malplena, la vortoj kaj rekompenco estas denove montritaj. Se EOF estas legata, la komando kompletigas. Ajna alia valoro legas, ke nomo estu fiksita al nula. La linio legata savas en la variablo REPLY . La listo estas ekzekutita post ĉiu elekto ĝis la rompo komando estas ekzekutita. La eliro-statuso de unuaranga estas la eliro-statuso de la lasta komando ekzekutita en listo , aŭ nulo se neniu komandoj estis ekzekutitaj.

Kaza vorto en [[(] ŝablono [ | ŝablono ]

Kaza komando unue ekspansiiĝas vorton , kaj provas egali ĝin kontraŭ ĉiu ŝablono laŭvice, uzante la samajn regulojn de kongruaj koncernaj koncernaj pligrandigoj . Kiam matĉo estas trovita, la responda listo estas ekzekutita. Post la unua matĉo, neniuj postaj matĉoj estas provitaj. La eliro-statuso estas nulo, se neniu ŝablono kongruas. Alie, ĝi estas la eliro-statuso de la lasta komando ekzekutita en listo .

se listo ; tiam listo; [ elif listo ; tiam listo ; ] ... [ alia listo ; ] f

La listo estas ekzekutita. Se ĝia eliro estas nulo, la tiama listo estas ekzekutita. Alie, ĉiu elif listo estas ekzekutita laŭvice, kaj se ĝia eliro estas nulo, la responda listo estas ekzekutita kaj la komando kompletigas. Alie, la alia listo estas ekzekutita, se ĉeestanta. La eliro-statuso estas la eliro-statuso de la lasta komando ekzekutita, aŭ nulo se neniu kondiĉo estas vera.

dum listo ; fari liston ; farita

ĝis listo ; fari liston ; farita

La komando dumĉiam ekzekutas la lertaĵon dum la lasta komando en listo redonas eliron de nulo. La komando estas identa al la komando, krom ke la testo estas negata; la listo estas ekzekutita dum la lasta komando en listo redonas ne-nula elirejon. La eliro-statuso de la tempo kaj ĝis komandoj estas la eliro-statuso de la lasta listo-listo ekzekutita, aŭ nulo se neniu estis ekzekutita.

[ funkcio ] nomo () { listo ; }

Ĉi tio difinas funkcion nomitan nomon . La korpo de la funkcio estas la listo de komandoj inter {kaj}. Ĉi tiu listo estas ekzekutita kiam ajn nomo estas specifita kiel la nomo de simpla komando. La eliro-statuso de funkcio estas la eliro-statuso de la lasta komando ekzekutita en la korpo. (Vidu FUNCTIONS sube.)

Komentoj

En ne-interaga ŝelo, aŭ interaga ŝelo, en kiu ebligas la interaga komerca opcio al la butiko konstruita (vidu SHELL BUILTIN COMMANDS sube), vorto komencanta kun # faras ke tiu vorto kaj ĉiuj ceteraj karakteroj en tiu linio estu ignoritaj. Interaga ŝelo sen la eblo de interagaj komentoj ebligita ne permesas komentojn. La interaga komerca opcio estas implicite en interagaj konkoj.

FOTO

Citado uzas por forigi la specialan signifon de iuj signoj aŭ vortoj al la ŝelo. Citi povas esti uzata por malŝalti specialan traktadon por specialaj signoj, por eviti ke rezervitaj vortoj estu agnoskitaj kiel tia, kaj por eviti la parametron-ekspansion.

Ĉiu el la metacoj enlistigitaj supre sub DEFINITOJ havas specialan signifon al la ŝelo kaj devas esti citita se ĝi reprezentas sin mem.

Kiam la komandaj historiaj ekspansiaj instalaĵoj estas uzataj, la historio-ekspansia karaktero, kutime ! , devas esti citita por eviti historian ekspansion.

Ekzistas tri citas mekanismoj: la ellasilo , unuopa citaĵo kaj duoblaj citaĵoj.

Ne-citita backslash ( \ ) estas la ellasilo . Ĝi konservas la laŭvortan valoron de la sekva karaktero, kiu sekvas, krom . Se \ paro aperas, kaj la backslash ne mem estas citita, la \ estas traktita kiel linio-daŭrigo (tio estas, ĝi estas forigita de la eniga fluo kaj efike ignorita).

Enkalkulataj signoj en ununuraj citaĵoj konservas la laŭvortan valoron de ĉiu karaktero ene de la citaĵoj. Ununura citaĵo ne povas okazi inter unuopa citaĵo, eĉ kiam antaŭita de malantaŭa rezulto.

Enkalkulanta signojn en duoblaj citaĵoj konservas la laŭvortan valoron de ĉiuj karakteroj ene de la citaĵoj, escepte de $ , ` , kaj \ . La karakteroj $ kaj ` retenas sian specialan signifon ene de duoblaj citaĵoj. La backslash konservas sian specialan signifon nur kiam sekvas unu el la sekvaj signoj: $ , ` , ' , \ , or . Duobla citaĵo povas esti citita ene de duoblaj citaĵoj antaŭante ĝin per malantaŭa.

La specialaj parametroj * kaj @ havas specialan signifon kiam en duoblaj citaĵoj (vidu PARAMETERS sube).

Vortoj de la formo $ ' kordo ' estas traktataj speciale. La vorto ekspansiiĝas al ŝnuro , kun malakceptitaj eskapaj karakteroj anstataŭitaj laŭ la normo ANSI C. Malantaŭa ellasilo sekvencoj, se ĉeestas, estas decoditaj kiel sekvas:

\ a

garde (sonorilo)

\ b

malantaŭa spaco

\ e

eskapilo

\ f

Formi nutraĵon

\ n

nova linio

\ r

kaleŝa reveno

\ t

horizontala langeto

\ v

vertikala pestaña

\\

backslash

\ '

unuopa citaĵo

\ nnn

la ok-batala karaktero kies valoro estas la octala valoro nnn (unu al tri ciferoj)

\ x HH

la karaktero de ok-bitoj kies valoro estas la heksadeka valoro HH (unu aŭ du heksaj ciferoj)

\ c x

karaktero de kontrolo

La ekspansiiĝita rezulto estas unuopaĵo, kvazaŭ la dolaro-signo ne ĉeestis.

Duobla citita ŝnuro antaŭita de dolaro-signo ( $ ) kaŭzos la ĉenon tradukitan laŭ la aktuala loko. Se la nuna loko estas CPOSIX , la dolaro signo estas ignorita. Se la ĉeno estas tradukita kaj anstataŭigita, la anstataŭaĵo estas duobla citita.

Parametroj

Parametro estas ento, kiu stokas valorojn. Ĝi povas esti nomo , nombro, aŭ unu el la specialaj signoj listigitaj sube sub Specialaj Parametroj . Por la celoj de la ŝelo, variablo estas parametro indikita per nomo . Variablo havas valoron kaj nulon aŭ pli da atributoj . Atributoj estas atribuitaj per la deklara konstruita komando (vidu deklari sube en SHELL BUILTIN COMMANDS).

Parametro estas aro se ĝi atribuis valoron. La nula kordo estas valida valoro. Fojo ŝanĝiĝema, ĝi povas esti malakceptita nur per uzado de la malpura konstruita komando (vidu SHELL BUILTIN COMMANDS sube).

Variablo povas esti atribuita per deklaro de la formo

nomo = [ valoro ]

Se valoro ne estas donita, la variablo estas atribuita la nula kordo. Ĉiuj valoroj suferas tilde-ekspansion, parametron kaj diversan ekspansion, komandan anstataŭon, aritmetikan ekspansion kaj forigon de citaĵo (vidu Ekspunion sube). Se la variablo havas ĝian entjerajn atributojn, tiam valoro submetas al aritmetika ekspansio eĉ se la ekspansio $ ((...)) ne estas uzata (vidu Aritmetika Ekspansio sube). Vortpremado ne estas farita, krom "$ @" kiel klarigas sube sub Specialaj Parametroj . Povnomo-ekspansio ne estas farita. Asignaj deklaroj povas ankaŭ aperi kiel argumentoj por la deklaroj, komponaĵoj , eksportoj , legele kaj lokaj konstruitaj komandoj.

Poziciaj parametroj

Pozicia parametro estas parametro signifita per unu aŭ pli da ciferoj, krom la ununura cifero 0. Poziciaj parametroj estas atribuitaj de la argumentoj de la ŝelo kiam ĝi alvokiĝas kaj povas esti reasignitaj per la aro konstruita komando. Posiciaj parametroj ne povas esti atribuitaj al asignaj deklaroj. La poziciaj parametroj estas provizore anstataŭigitaj kiam ŝela funkcio estas ekzekutita (vidu FUNOJ sube).

Kiam pozicia parametro konsistas el pli ol unu cifero estas vastigita, ĝi devas esti ĉirkaŭigita en krampoj (vidu EXPANSION sube).

Specialaj parametroj

La ŝelo traktas plurajn parametrojn speciale. Ĉi tiuj parametroj nur povas esti referencitaj; Farita al ili ne estas permesita.

*

Ekspansiiĝas al la poziciaj parametroj, komencante de unu. Kiam la ekspansio okazas ene de duoblaj citaĵoj, ĝi ekspansiiĝas al unu vorto kun la valoro de ĉiu parametro disigita de la unua karaktero de la speciala variablo IFS . Tio estas, " $ * " estas ekvivalenta al " $ 1 c $ 2 c ... ", kie c estas la unua karaktero de la valoro de la variablo IFS . Se IFS malŝaltas, la parametroj estas apartigitaj per spacoj. Se IFS estas nula, la parametroj estas kunigitaj sen interparolaj apartigiloj.

@ @

Ekspansiiĝas al la poziciaj parametroj, komencante de unu. Kiam la ekspansio okazas ene de duoblaj citaĵoj, ĉiu parametro ekspansiiĝas al aparta vorto. Tio estas, " $ @ " estas ekvivalenta al " $ 1 " " $ 2 " ... Kiam ne ekzistas parametroj de pozicio, " $ @ " kaj $ @ ekspansiiĝi ​​al nenio (te, ili estas forigitaj).

N

Ekspansiiĝas al la nombro de poziciaj parametroj en dekuma.

?

Ekspansiiĝas al la statuso de la plej ĵus ekzekutita antaŭtera tubo.

-

Ekspansiiĝas al la aktualaj elektoj flagoj kiel specifitaj sur alvoko, per la aro konstruita komando, aŭ tiuj aranĝitaj per la ŝelo mem (kiel ekzemple la -i- opcio).

$

Etendas al la procezo ID de la ŝelo. En () subshello, ĝi ekspansiiĝas al la proceza ID de la nuna konko, ne la subshello.

!

Ekspansiiĝas al la procezo ID de la plej ĵus ekzekutita fono (asincrona) komando.

0

Ekspansiiĝas al la nomo de la ŝelo aŭ ŝelo skripto. Ĉi tio estas fiksita ĉe ŝelo-komencaĵo. Se bash estas alvokita kun dosiero de komandoj, $ 0 estas difinita al la nomo de tiu dosiero. Se bash komenciĝas per la -c- opcio, tiam $ 0 estas al la unua argumento post la kordo ekzekutita, se iu ĉeestas. Alie, ĝi estas difinita al la dosiernomo uzita por alpreĝi bash , kiel donita per argumento nulo.

_

Ĉe ŝelo-starto, agordi al la absoluta dosiernomo de la ŝelo aŭ ŝelo-skripto ekzekutata kiel pasita en la listo de argumentoj. Poste, ĝi ekspansiiĝas al la lasta argumento al la antaŭa komando, post ekspansio. Ankaŭ agordi la plenan dosiernomon de ĉiu komando ekzekutita kaj metita en la medio eksportita al tiu komando. Kiam vi kontrolas retpoŝton, ĉi tiu parametro tenas la nomon de retpoŝta dosiero nun kontrolita.

Ŝelo Variabloj

La jenaj variabloj agordas per la ŝelo:

BASH

Ekspansiiĝas al la plena dosiernomo uzata por alpreĝi ĉi tiun ekzemplon de bash .

BASH_VERSINFO

Varianto de lerta tabelo kies membroj tenas informajn informojn por ĉi tiu kazo de bash . La valoroj atribuitaj al la tabeloj estas kiel sekvas:

BASH_VERSINFO [ 0]

La plej grava versio (la liberigo ).

BASH_VERSINFO [ 1]

La plej malgranda numero (la versio ).

BASH_VERSINFO [ 2]

La diakilo.

BASH_VERSINFO [ 3]

La konstrua versio.

BASH_VERSINFO [ 4]

La statuso de liberigo (ekz. Beta1 ).

BASH_VERSINFO [ 5]

La valoro de MACHTYPE .

BASH_VERSION

Ekspansias al ĉeno priskribanta la version de ĉi tiu petskribo de bash .

COMP_CWORD

COMP_LINE

La nuna komandlinio. Ĉi tiu variablo estas havebla nur en ŝlosilaj funkcioj kaj eksterordinaraj komandoj alvokitaj de la programeblaj finaĵoj-instalaĵoj (vidu Kompletigebla Kompletigo sube).

COMP_POINT

COMP_WORDS

Tabelo variablo (vidu Arrays sube) konsistantan el la individuaj vortoj en la nuna komandlinio. Ĉi tiu variablo estas havebla nur en ŝlosilaj funkcioj alvokitaj de la programeblaj finaĵoj (vidu Kompleta Komplemento sube).

DIRSTACK

Tabelo variablo (vidu Arrays sube) enhavanta la nunan enhavon de la dosierujo. La dosierujoj aperas en la stako laŭ la ordo, kiun ili montras per la diroj konstruitaj. Asigni al membroj de ĉi tiu tabelo variablo povas esti uzata por modifi dosierujojn jam en la stako, sed la pushd kaj popd-konstruaĵoj devas esti uzataj por aldoni kaj forigi dosierujojn. Asigno al ĉi tiu variablo ne ŝanĝos la nunan dosierujon. Se DIRSTACK malŝaltas , ĝi perdas siajn specialajn proprietojn, eĉ se ĝi poste restarigos ĝin.

EUID

Ekspansiiĝas al la efika uzanto-ID de la nuna uzanto, komencigita ĉe ŝelo starto. Ĉi tiu variablo estas lege.

FUNCNAME

La nomo de iu aktuale ekzekutanta ŝelo funkcio. Ĉi tiu variablo nur ekzistas kiam ŝela funkcio ekzekutas. Asignoj al FUNCNAME ne havas efikon kaj revenas eraron-statuson. Se FUNCNAME malŝaltas , ĝi perdas siajn specialajn proprietojn, eĉ se ĝi poste restarigos ĝin.

GROUPS

Tipa variablo enhavanta la liston de grupoj, el kiuj la nuna uzanto estas membro. Asignoj al GROUPS ne havas efikon kaj redonas eraron-statuson. Se GROUPS estas malfiksita, ĝi perdas siajn specialajn proprietojn, eĉ se ĝi poste restarigos ĝin.

HISTCMD

La historia nombro, aŭ indekso en la historio-listo, de la nuna komando. Se HISTCMD malŝaltas , ĝi perdas siajn specialajn proprietojn, eĉ se ĝi poste restarigos ĝin.

HOSTNAME

Aŭtomate agordi la nomon de la aktuala gastiganto.

HOSTTYPE

Aŭtomate agordi ĉenon, kiu priskribas unike la tipon de maŝino, sur kiu bazo ekzekutas. La defaŭlta estas dependa de la sistemo.

LINENO

Ĉiufoje kiam ĉi tiu parametro estas referencita, la konko anstataŭigas dekuman numeron reprezentantan la nunan sekvencan numeron (komencante kun 1) ene de skripto aŭ funkcio. Kiam ne en skripto aŭ funkcio, la valoro anstataŭigita ne garantias esti signifa. Se LINENO malŝaltas , ĝi perdas siajn specialajn proprietojn, eĉ se ĝi poste restarigos ĝin.

MACHTYPE

Aŭtomate agordi ĉenon, kiu plene priskribas la sistemon-tipon, en kiu la bazo ekzekutas, en la norma formato GNU- cpu-kompanio-sistemo . La defaŭlta estas dependa de la sistemo.

OLDPWD

La antaŭa labora dosierujo, laŭmetita de la komando cd .

OPTARGO

La valoro de la lasta opcio argumentita de la komputilo konstruita de getopts (vidu SHELL BUILTIN COMMANDS sube).

OPTIND

La indekso de la sekva argumento esti procesita de la komputilo konstruita de getopts (vidu SHELL BUILTIN COMMANDS sube).

OSTYPE

Aŭtomate agordi ĉenon, kiu priskribas la mastruman sistemon, sur kiu bazo ekzekutas. La defaŭlta estas dependa de la sistemo.

PIPESTATO

Varia variablo (vidu Arrays sube) enhavantan liston de eliraj statusvaloroj de la procezoj en la plej lastatempe ekzekutita antaŭtera tubo (kiu povas enhavi nur unu ordonon).

PPID

La procezo ID de la patro de la ŝelo. Ĉi tiu variablo estas lege.

PWD

La nuna laboranta dosierujo kiel fiksita per la komando de cd .

RANDOM

Ĉiufoje kiam ĉi tiu parametro estas referencita, generita hazarda entjero inter 0 kaj 32767 estas generita. La sekvenco de hazardaj nombroj povas esti inicialigita per asignado de valoro al RANDOM . Se RANDOM malŝaltas, ĝi perdas siajn specialajn proprietojn, eĉ se ĝi poste restarigos ĝin.

Respondu

Fiksita al la linio de enigo legita de la legita konstruita komando kiam neniuj argumentoj estas provizitaj.

SECUNDOJ

Ĉiufoje kiam ĉi tiu parametro estas referencita, la nombro da sekundoj ekde la alvoko de ŝelo estas redonita. Se valoro estas atribuita al SECONDS , la valoro redonita al postaj referencoj estas la nombro de sekundoj ekde la farita plus la valoro atribuita. Se SECONDS malŝaltas, ĝi perdas siajn specialajn proprietojn, eĉ se ĝi poste restarigos ĝin.

SHELLOPTS

Kolon-apartigita listo de ebligitaj ŝeloj-opcioj. Ĉiu vorto en la listo estas valida argumento por -o- opcio al la aro- konstruita komando (vidu SHELL BUILTIN COMMANDS sube). La ebloj aperintaj en SHELLOPTS estas tiuj, kiujn oni informis per aro -o . Se ĉi tiu variablo estas en la medio, kiam bazo komenciĝas, ĉiu opcio en la listo estos ebligita antaŭ ol legi iujn startajn dosierojn. Ĉi tiu variablo estas nur-legita.

SHLVL

Pliigita de unu ĉiufoje kiam petskribo de bash komenciĝas.

UID

Ekspansiiĝas al la uzanto-ID de la nuna uzanto, komencigita ĉe ŝelo starto. Ĉi tiu variablo estas lege.

La jenaj variabloj estas uzataj de la ŝelo. En iuj kazoj, bash asignas defaŭltan valoron al variablo; ĉi tiuj kazoj estas notitaj pli sube.

BASH_ENV

Se ĉi tiu parametro estas agordita kiam bash ekzekutas ŝelon-skripton, ĝia valoro estas interpretata kiel dosiernomo kun komandoj por inicialigi la ŝelon, kiel en ~ / .bashrc . La valoro de BASH_ENV estas submetita al parametro-ekspansio, anstataŭigo de komandoj kaj aritmetika ekspansio antaŭ ol esti interpretata kiel dosiernomo. PATH ne estas uzata por serĉi la rezultantan dosiernomon.

CDPATH

La serĉa vojo por la komando de cd . Ĉi tio estas listo de dosierujoj de kolonoj, en kiuj la ŝelo serĉas celoklavojn specifitajn per la komando cd . Specimeno valoro estas ".: ~: / Usr".

KOLUMOJ

Uzita de la elektita konstruita komando por determini la finaĵon larĝe al la presado de elektaj listoj. Aŭtomate starigita sur ricevo de SIGWINCH.

Kompreneble

Varia variablo de kiu bash legas la eblajn finaĵojn generitajn per ŝelo-funkcio alpreĝita de la programebla finaĵo-instalaĵo (vidu Kompleta Programo sube).

FCEDIT

La defaŭlta redaktilo por la fc builtin-komando.

FIGNORE

Nekonata listo de sufiksoj de kolonoj por ignori, kiam vi plenumas dosiernomon (vidu READLINE sube). Dosiera nomo kies sufikso kongruas kun unu el la eniroj en FIGNORE estas ekskludita el la listo de egalitaj dosiernomoj. Specimeno valoro estas ".o: ~".

GLOBIGNORE

Kolora-apartigita listo de ŝablonoj difinantaj la aron de dosiernomoj por esti ignorita per pomnova ekspansio. Se dosiernomo kunaŭrita de pomnova ekspansio-ŝablono ankaŭ kongruas kun unu el la ŝablonoj en GLOBIGNORE , ĝi estas forigita el la listo de matĉoj.

HISTCONTROLO

Se ĝi agordas valoron de malŝaltita spaco , linioj kiuj komencas kun spaca karaktero ne estas enmetitaj en la historion. Se ĝi agordas valoron de ignoritaj , linioj kiuj kongruas kun la lasta historio ne estas enmetitaj. Valoro de ignoreboth kombinas la du eblojn. Se ĝi malŝaltas, aŭ se ĝi agordas al iu alia valoro ol tiuj supre, ĉiuj linioj legitaj de la analizilo konserviĝas sur la listo de historio, submetita al la valoro de HISTIGNORE . Ĉi tiu funkcio de tiu variablo estas anstataŭigita de HISTIGNORE . La duaj kaj postaj linioj de komuna kombinaĵo ne estas provitaj, kaj estas aldonitaj al la historio sendepende de la valoro de HISTCONTROL .

HISTROLO

La nomo de la dosiero, en kiu konservas historion de la komando (vidu HISTORIO sube). La defaŭlta valoro estas ~ / .bash_history . Se ĝi malŝaltas, la komando-historio ne konserviĝas kiam interaga ŝelo eliras.

HISTFILESIZO

La maksimuma nombro da linioj enhavitaj en la historio-dosiero. Kiam ĉi tiu variablo estas atribuita valoro, la historio-dosiero estas detranĉita, se necese, por enhavi ne pli ol tiun nombron da linioj. La defaŭlta valoro estas 500. La historio-dosiero ankaŭ estas detranĉita al ĉi tiu grandeco post skribado de ĝi kiam interaga ŝelo eliras.

HISTIGNORE

Kolum-disigita listo de ŝablonoj uzata por decidi, kies komandlinioj devas esti konservitaj en la listo de historio. Ĉiu ŝablono estas ankrumita ĉe la komenco de la linio kaj devas egali la kompletan linion (ne implicita ` * 'estas aldonita). Ĉiu ŝablono estas provita kontraŭ la linio post kiam la ĉekoj specifitaj de HISTCONTROL estas aplikitaj. Krom la normalaj ŝeloj, kiuj kongruas kun karakteroj, ' & ' kongruas kun la antaŭa historio. ' & ' povas eskapi uzante malantaŭen; la backslash estas forigita antaŭ provo de matĉo. La duaj kaj postaj linioj de komuna kombinaĵo ne estas provitaj, kaj estas aldonitaj al la historio sendepende de la valoro de HISTIGNORE .

HISTOJ

La nombro da komandoj por memori en la historio de la komandoj (vidu HISTORIO sube). La defaŭlta valoro estas 500.

HOME

La hejma dosierujo de la nuna uzanto; la defaŭlta argumento por la kD- konstruita komando. La valoro de ĉi tiu variablo ankaŭ estas uzata al la plenumi tilde-ekspansion.

HOSTFILE

Enhavas la nomon de dosiero en la sama formato kiel / ktp / hosts, kiujn oni devas legi kiam la ŝelo bezonas kompletigi gastignomon. La listo de eblaj gastigaj finaĵoj povas esti ŝanĝita dum la ŝelo funkcias; la venonta tempo plenumita gastiganto estas provita post kiam la valoro ŝanĝiĝas, bash aldonas la enhavon de la nova dosiero al la ekzistanta listo. Se HOSTFILE estas agordita, sed ne havas valoron, bash provoj legi / ktp / hosts por akiri la liston de eblaj gastignomaj finaĵoj. Kiam HOSTFILE malŝaltas , la gastigna listo estas liberigita.

IFS

La Interna Kampa Apartigilo, kiu estas uzata por vorto dividanta post ekspansio kaj dividi liniojn en vortojn kun la legita konstruita komando. La defaŭlta valoro estas `` ''.

IGNOREEOF

Kontrolas la agon de interaga ŝelo sur ricevo de EOF- karaktero kiel la sola enigo. Se ĝi agordas, la valoro estas la nombro de sinsekvaj EOF- karakteroj, kiuj devas esti tajpitaj kiel la unuaj signoj en eniga linio antaŭ ol eliroj. Se la variablo ekzistas sed ne havas nombran valoron, aŭ ne havas valoron, la defaŭlta valoro estas 10. Se ĝi ne ekzistas, EOF signifas la finon de enigo al la ŝelo.

INPUTRC

La dosiernomo por la readline startup-dosiero, superreganta la defaŭltaĵon de ~ / .inputrc (vidu READLINE sube).

LANG

Uzita por determini la lokan kategorion por iu ajn kategorio ne specife elektita kun variablo komencanta per LC_ .

LC_ALL

Ĉi tiu variablo anstataŭigas la valoron de LANG kaj iu alia LC_- variablo kiu specifas lokan kategorion.

LC_COLLATE

Ĉi tiu variablo determinas la konvenciajn ordo uzata al la ordigado de la rezultoj de la nominala ekspansio, kaj determinas la konduton de variantaj esprimoj, ekvivalentklasoj kaj kalkulante sekvencojn ene de la nominala ekspansio kaj ŝablono.

LC_CTYPE

Ĉi tiu variablo determinas la legon de karakteroj kaj la konduto de karakteroj de klasoj ene de pligrandigo kaj ŝablono.

LC_MESSAGES

Ĉi tiu variablo determinas la lokon uzatan por traduki duoblajn cititajn ŝnurojn antaŭ $ .

LC_NUMERIC

Ĉi tiu variablo determinas la lokan kategorion uzita por nombra formado.

LILOJ

Uzita de la elektita konstruita komando por determini la kolumnon longe por presi listojn. Aŭtomate starigita sur ricevo de SIGWINCH.

MAIL

Se ĉi tiu parametro estas enmetita al dosiernomo kaj la variablon MAILPATH ne estas agordita, ĝi informas al la uzanto de la alveno de poŝto en la specifa dosiero.

MAILCHECK

Specifas kiom ofte (en sekundoj) bazoj por poŝto. La defaŭlta estas 60 sekundoj. Kiam estas tempo por kontroli retpoŝton, la ŝelo faras tion antaŭ ol montri la priman prompton. Se ĉi tiu variablo malŝaltas aŭ aranĝas valoron, kiu ne estas pli granda ol aŭ egala al nulo, la ŝelo malŝaltas retpoŝtaĵojn.

MAILPATH

Nomigita listo de dosieroj de kolonoj por esti poŝtita per poŝto. La mesaĝo presi kiam poŝto alvenas en aparta dosiero povas esti specifita apartigante la dosiernomon de la mesaĝo per `? '. Kiam uzata en la teksto de la mesaĝo, $ _ vastiĝas al la nomo de la nuna poŝtelefono. Ekzemplo:

MAILPATH = '/ var / mail / bfox? "Vi havas retpoŝton": ~ / retpoŝto? "$ _ Havas poŝton!"'

Bash provizas defaŭltan valoron por ĉi tiu variablo, sed la situo de la retpoŝtaj dosieroj, kiujn ĝi uzas, estas dependa de la sistemo (ekz. / Var / mail / $ USER ).

OPTERR

Se vi agordas la valoron 1, vi montras erarajn mesaĝojn generitajn de la komputilo konstruita getopts (vidu SHELL BUILTIN COMMANDS sube). OPTERR estas komence al 1 ĉiufoje kiam la ŝelo estas alvokita aŭ ŝela skripto ekzekutas.

PATH

La serĉa vojo por komandoj. Ĝi estas listo de dosierujoj de kolonoj, en kiuj la ŝelo serĉas komandojn (vidu Komandan Ekspektivecon sube). La defaŭlta vojo estas dependa de la sistemo, kaj estas agordita de la administranto, kiu instalas bash . Komuna valoro estas `` / usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORREKTO

Se ĉi tiu variablo estas en la medio, kiam la bazo komenciĝas, la ŝelo eniras la pozixan reĝimon antaŭ ol legi la startajn dosierojn, kvazaŭ la --posix- alvoko ebligis . Se ĝi funkcias, kiam la ŝelo funkcias, bazo ebligas la modifikon , kvazaŭ la komando aro -o-posikso estis ekzekutita.

PROMPT_COMMAND

Se ĝi agordas, la valoro estas ekzekutita kiel komando antaŭ elsendado de ĉiu primara pruvo.

PS1

La valoro de ĉi tiu parametro estas ekspansiiĝita (vidu PROMPTING malsupre) kaj uzata kiel ĉefa pronta kordo. La defaŭlta valoro estas `` \ s- \ v \ $ ''.

PS2

La valoro de ĉi tiu parametro estas ekspansiiĝita kiel kun PS1 kaj uzata kiel la malĉefa pronta kordo. La defaŭlto estas `` > ''.

PS3

La valoro de ĉi tiu parametro estas uzata kiel la rekompenco por la elektita komando (vidu SHELL GRAMMAR supre).

PS4

La valoro de ĉi tiu parametro estas ekspansiiĝita kiel kun PS1 kaj la valoro estas presita antaŭ ol ĉiu komando ekstere montras dum ekzekuto. La unua karaktero de PS4 estas replikita multfoje, kiel necesa, por indiki plurajn nivelojn de indirección. La defaŭlto estas `` + ''.

TIMEFORMAT

La valoro de ĉi tiu parametro estas uzata kiel formato-ĉeno, kiu specifas, kiel la tempo de informo por tuboj prefiksita kun la tempo rezervita vorto devas esti montrata. La % karaktero prezentas eskapukaĵon, kiu estas vastigita al tempo valoro aŭ al alia informo. La sekvencaj sekvencoj kaj iliaj signifoj estas kiel sekvas; la krampoj indikas laŭvolajn partojn.

%%

Laŭvorta % .

% [ p ] [l] R

La pasinta tempo en sekundoj.

% [ p ] [l] U

La nombro de CPUaj sekundoj elspezitaj en uzanta reĝimo.

% [ p ] [l] S

La nombro de CPUaj sekundoj elspezitaj en sistemo-reĝimo.

% P

La CPU-procento, kalkulita kiel (% U +% S) /% R.

La laŭvola p estas cifero, kiu precizigas la precizecon , la nombro de frakciaj ciferoj post dekuma punkto. Valoro de 0 kaŭzas neniun dekuman punkton aŭ frakcion esti eligo. Plejparte tri lokoj post la decimala punkto povas esti specifitaj; valoroj de p pli grandaj ol 3 estas ŝanĝitaj al 3. Se p ne estas specifita, la valoro 3 estas uzata.

La laŭvola l specifas pli longan formaton, inkluzive de minutoj, de la formo MM m SS . FF s. La valoro de p determinas ĉu la frakcio estas aŭ ne inkluzivita.

Se ĉi tiu variablo ne estas agordita, bash agas kvazaŭ ĝi havis la valoron $ '\ nreal \ t% 3lR \ nuser \ t% 3lU \ nsys% 3lS' . Se la valoro estas nula, neniu temporigado estas montrata. Malferma nova linio aldoniĝas kiam la formato-ŝnuro estas montrata.

TUT

Se ĝi agordas valoro pli ol nulo, TMOUT estas traktita kiel la defaŭltan tempon por la legita konstruaĵo . La elektita komando finas se enigo ne alvenos post TMOUT sekundoj kiam enigo venas de fina stacio. En interaga ŝelo, la valoro estas interpretita kiel la nombro da sekundoj por atendi enigo post kiam ĝi elsendas la primran prompton. Bash finiĝas post atendado de tiu nombro da sekundoj se enigo ne alvenos.

auto_resumo

Ĉi tiu variablo kontrolas kiel la ŝelo interagas kun la uzanto kaj laborpostrolo. Se ĉi tiu variablo estas agordita, simplaj simplaj komandoj sen redirektoj estas traktataj kiel kandidatoj por rekomencado de ekzistanta haltita laboro. Ne ekzistas ambigüedad; se estas pli ol unu tasko komencanta per la kordo tajpita, la laboro plej ĵus alirita estas elektita. La nomo de haltita laboro, en ĉi tiu kunteksto, estas la komandlinio uzita por komenci ĝin. Se ĝi agordas la valoron precize , la ĉeno provizita devas egali precize la nomon de haltita laboro; se fiksita al substringo , la ĉeno provizita devas kunigi substrancon de la nomo de haltita laboro. La subtera valoro provizas funkciojn analogajn al la %? laboristo-identigilo (vidu JOB-CONTROLon sube). Se ĝi agordas al iu alia valoro, la provizita ĉeno devas esti prefikso de ĉesita laboro; Ĉi tio provizas funcionalidad analoga al la % job identigilo.

historioj

La du aŭ tri karakteroj, kiuj kontrolas historian ekspansion kaj tokenigon (vidu HISTORIA EXPANSION sube). La unua karaktero estas la historio-ekspansia karaktero, la karaktero, kiu signas la komencon de historia ekspansio, kutime " ! '. La dua karaktero estas la rapida anstataŭiga karaktero, kiu estas uzata kiel manlibro por re-kurado de la antaŭa komando enirita, anstataŭigante unu ĉenon por alia en la komando. La defaŭlta estas ' ^ '. La laŭvola tria karaktero estas la karaktero, kiu indikas, ke la resto de la linio estas komento kiam oni trovas la unuan karakteron de vorto, kutime ' # '. La historia komenta karaktero kaŭzas historian anstataŭon por esti preterlasita por la ceteraj vortoj sur la linio. Ĝi ne nepre kaŭzas la ŝelon-analizilon trakti la reston de la linio kiel komento.

Arrays

Bash provizas unu-dimensian tabelo-variablojn. Ajna variablo povas esti uzata kiel tabelo; la deklaro konstruita eksplicos deklari tabelon. Ne estas maksimuma limo laŭ la amplekso de tabelo, nek ia postulo, ke membroj estu indeksitaj aŭ atribuitaj apude. Arrays estas indeksitaj uzantaj entjeroj kaj estas nulo-bazitaj.

Tabelo estas kreita aŭtomate, se iu ajn variablo estas atribuata al uzado de la sintaksa nomo [ subscript ] = value . La subskribo estas traktita kiel aritmetika esprimo, kiu devas taksi al nombro pli granda ol aŭ egala al nulo. Por eksplicite deklari tabelon, uzu deklari -nomon (vidu SHELL BUILTIN COMMANDS sube). deklari -a nomo [ subskribo ] ankaŭ estas akceptita; la subskribo estas ignorita. Atributoj povas esti specifitaj por tabelo-variablon per la deklaroj kaj lege konstruitaj. Ĉiu atributo aplikas al ĉiuj membroj de tabelo.

Arrays estas atribuitaj al uzitaj komponaĵoj de la formo nomo = ( valoro 1 ... valoro n ) , kie ĉiu valoro estas de la formo [ subscript ] = string . Nur ŝnuro estas bezonata. Se la laŭvolaj krampoj kaj subskribo estas provizitaj, tiu indekso estas atribuita al; alie la indekso de la elemento atribuita estas la lasta indekso asignita per la deklaro plus unu. Indeksado komenciĝas je nulo. Ĉi tiu sintakso ankaŭ estas akceptita per la deklaro konstruita. Individuaj tabeloj povas esti atribuitaj al la nomo [ subscript ] = valora sintakso enmetita supre.

La detruita konstruaĵo estas uzata por detrui arrays. malŝalti nomon [ subskribo ] detruas la tabulon elementon ĉe indekso subskribo . malŝalti nomon , kie nomo estas tabelo, aŭ malŝalti nomon [ subscript ], kie subskribo estas *@ , forigas la tutan tabelon.

La deklaroj , lokaj kaj leĝe konstruitaj ĉiuj akceptas -a opcion por specifi tabelon. La legita konstruaĵo akceptas -a eblon atribui liston de vortoj legitaj de la norma enigo al tabelo. La aro kaj deklaras konstruitajn montras tabelkvalojn laŭ maniero, kiu ebligas ilin esti reutilitaj kiel taskoj.

Ekspozicio

Ekspansio estas farita sur la komandlinio post kiam ĝi estis disigita en vortoj. Ekzistas sep specoj de ekspansio faritaj: bracela ekspansio , tilde-ekspansio , parametro kaj ŝanĝiĝema ekspansio , anstataŭigo de komandoj , aritmetika ekspansio , vorto dividado kaj pordnova ekspansio .

La ordo de ekspansioj estas: brace-ekspansio, tilde-ekspansio, parametro, variablo kaj aritmetika ekspansio kaj komando-anstataŭo (farita maldekstre al dekstra maniero), vorto dividado kaj pordnova ekspansio.

Sur sistemoj, kiuj povas subteni ĝin, ekzistas kroma ekspansio havebla: procezo anstataŭigo .

Brace Ekspansio

Brace-ekspansio estas mekanismo per kiu arbitraj kordoj povas esti generitaj. Ĉi tiu mekanismo similas al la ekspansio de la nomnomo , sed la dosiernomoj generitaj ne bezonas ekzisti. Ŝablonoj por esti braceletaj ekspansiiĝaj prenas la formon de laŭvola antaŭparolo , sekvita per serio da komo-disigitaj kordoj inter paro de krampoj, sekvita de laŭvola afiŝo . La antaŭparolo preferas al ĉiu ĉeno enhavita ene de la krampoj, kaj la afiŝo estas aldonita al ĉiu rezultanta ĉeno, etendante maldekstre dekstren.

Braceaj ekspansioj povas esti nestitaj. La rezultoj de ĉiu pligrandigita ĉeno ne estas ordo; maldekstre al dekstra ordo estas konservita. Ekzemple, { d, c, b } kaj vastiĝas en `ade ace abe '.

Bracea ekspansio estas farita antaŭ ajna alia ekspansio, kaj iuj karakteroj specialaj al aliaj ekspansioj estas konservitaj en la rezulto. Ĝi estas strikte laŭteksta. Bash ne aplikas sintaksan legon al la kunteksto de la ekspansio aŭ la teksto inter la krampoj.

Ĉi tiu konstruo estas kutime uzata kiel taŭga manlibro kiam la komuna prefikso de la ŝnuroj generita estas pli longa ol en la supra ekzemplo:

mkdir / usr / local / src / bash / {old, new, dist, bugs}

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

Brace-ekspansio prezentas malgravan nekongruon kun historiaj versioj de sh . Ŝi ne traktas malfermajn aŭ fermajn krampojn speciale kiam ili aperas kiel parto de vorto, kaj konservas ilin en la eligo. Bash forigas krampojn de vortoj kiel konsekvenco de bracela ekspansio. Ekzemple, vorto eniris al sh kiel dosiero {1,2} aperas identike en la eligo. La sama vorto elsendas kiel dosiero1 file2 post ekspansio de bash . Se deziras strikta kongruo kun sh , komencu bash per la + B- opcio aŭ malŝalti bracelan ekspansion kun la + B- opcio al la aro- komando (vidu SHELL BUILTIN COMMANDS sube).

Tilde Ekspansio

Se vorto komenciĝas per unototita tilde-karaktero (' ~ '), ĉiuj karakteroj antaŭ la unua senĉifranga ŝelo (aŭ ĉiuj karakteroj, se ne estas neototita slash) estas konsiderata tilde-prefikso . Se neniu el la karakteroj en la tilde-prefikso estas citita, la signoj en la tilde-prefikso sekvanta la tilde estas traktataj kiel ebla ensalutnomo . Se ĉi tiu ensalutnomo estas la nula kordo, la tilde estas anstataŭigita per la valoro de la konkreta parametro HOME . Se HOME estas malŝaltita, anstataŭe anstataŭe anstataŭas la hejman dosierujon de la uzanto plenumanta la ŝelon. Alie, la tilde-prefikso estas anstataŭigita per la hejma dosierujo asociita kun la specifa ensalutnomo.

Se la tilde-prefikso estas `~ + ', la valoro de la ŝlosila variablo PWD anstataŭigas la tilde-prefix. Se la tilde-prefikso estas `~ - ', la valoro de la ŝlosila variablo OLDPWD , se ĝi estas aro, estas anstataŭigita. Se la signoj sekvantaj la tilde en la tilde-prefikso konsistas el nombro N , laŭvole prefiksitaj per `+ 'aŭ' - ', la tilde-prefikso estas anstataŭigita per la responda elemento de la dosierujo, kiel ĝi estus montrata per la diroj konstruita alvokita kun la tilde-prefikso kiel argumento. Se la signoj sekvantaj la tilde en la tilde-prefikso konsistas el nombro sen gvidanto `+ 'aŭ` -', `+ 'estas supozita.

Se la ensalutnomo estas nevalida, aŭ la tilde-ekspansio malsukcesas, la vorto estas senŝanĝa.

Ĉiu ŝanĝiĝema asigno estas kontrolita por tilde-prefiksoj senkotigitaj tuj sekvanta al := . En ĉi tiuj kazoj, tilde-ekspansio ankaŭ fariĝas. Sekve, oni povas uzi dosierojn kun tildes en taskoj al PATH , MAILPATH , kaj CDPATH , kaj la ŝelo asignas la vastigitan valoron.

Parametra Ekspansio

La karaktero ' $ ' enkondukas parametron-ekspansion, anstataŭan komandon aŭ aritmetikan ekspansion. La nomo de la parametro aŭ simbolo por esti ekspansiiĝita povas esti kadrita en krampoj, kiuj estas laŭvolaj sed utilas por protekti la variablon por esti ekspansiiĝita de karakteroj tuj sekvantaj ĝin, kio povus esti interpretita kiel parto de la nomo.

Kiam krampoj estas uzataj, la kongrua finaĵo estas la unua ' } ' ne eskapita de malantaŭa aŭ inter kotizita ĉeno, kaj ne ene de enigita aritmetika ekspansio, ordono anstataŭigo aŭ paramter-ekspansio.

La valoro de parametro estas anstataŭigita. La krampoj postulas kiam parametro estas pozicia parametro kun pli ol unu cifero, aŭ kiam parametro estas sekvata de karaktero, kiu ne estas interpretata kiel parto de ĝia nomo.

En ĉiu el la kazoj sube, la vorto estas submetita al tilde-ekspansio, parametro-ekspansio, komando anstataŭo kaj aritmetika ekspansio. Kiam vi ne plenumas la substranĉiĝon, la provoj de bash por parametro estas malfiksaj aŭ nulaj; preterlasante, ke la kolono rezultigas provon nur por parametro, kiu malŝaltas.

Uzi Defaŭlta Valoro . Se parametro estas malfiksita aŭ nula, la ekspansio de vorto estas anstataŭigita. Alie, la valoro de parametro estas anstataŭigita.

Asigni Defaŭlta Valoroj . Se parametro estas malŝaltita aŭ nula, la ekspansio de vorto estas atribuita al parametro . La valoro de parametro estas tiam anstataŭigita. Posiciaj parametroj kaj specialaj parametroj ne povas esti atribuitaj al ĉi tiu maniero.

Montri eraron se Ne aŭ Neŝalti . Se parametro estas nula aŭ malŝaltita, la ekspansio de vorto (aŭ mesaĝo al tiu efekto, se la vorto ne ĉeestas) estas skribita al la norma eraro kaj la ŝelo, se ĝi ne estas interaga, eliras. Alie, la valoro de parametro estas anstataŭigita.

Uzu Alternan Valoron . Se parametro estas nula aŭ malŝaltita, nenio estas anstataŭigita, alie la ekspansio de vorto estas anstataŭigita.

Ekspansiiĝas al la nomoj de variabloj kies nomoj komenciĝas kun prefikso , apartigitaj per la unua karaktero de la speciala variablo IFS .

La longo en karakteroj de la valoro de parametro estas anstataŭigita. Se parametro estas *@ , la valoro anstataŭigita estas la nombro de poziciaj parametroj. Se parametro estas aro de nomo subskribita per *@ , la valoro anstataŭigita estas la nombro da elementoj en la tabelo.

La vorto ekspansiiĝas por produkti ŝablonon, kiel en piknomo-ekspansio. Se la ŝablono kongruas kun la komenco de la valoro de parametro , tiam la rezulto de la ekspansio estas la vastigita valoro de parametro kun la plej mallonga kongrua ŝablono (la `` # '') aŭ la plej longa kongrua ŝablono (la `` ## ' 'kazo) forigita. Se parametro estas @* , la mastra forigo de operacio aplikiĝas al ĉiu pozicia parametro laŭvice, kaj la ekspansio estas la rezulto listo. Se parametro estas aro de variabloj subskribita kun @* , la mastra forigo de operacio aplikiĝas al ĉiu membro de la tabelo siavice, kaj la ekspansio estas la rezulto listo.

La vorto ekspansiiĝas por produkti ŝablonon, kiel en piknomo-ekspansio. Se la ŝablono kongruas kun malproksima parto de la vastigita valoro de parametro , tiam la rezulto de la ekspansio estas la vastigita valoro de parametro kun la plej mallonga kongrua ŝablono (la `` % '') aŭ la plej longa kongrua ŝablono (la `` % % '') forigita. Se parametro estas @* , la mastra forigo de operacio aplikiĝas al ĉiu pozicia parametro laŭvice, kaj la ekspansio estas la rezulto listo. Se parametro estas aro de variabloj subskribita kun @* , la mastra forigo de operacio aplikiĝas al ĉiu membro de la tabelo siavice, kaj la ekspansio estas la rezulto listo.

La ŝablono estas ekspansiiĝita por produkti ŝablonon same kiel en pomnova ekspansio. Parametro estas vastigita kaj la plej longa matĉo de ŝablono kontraŭ ĝia valoro anstataŭiĝas per kordo . En la unua formo, nur la unua matĉo estas anstataŭigita. La dua formo kaŭzas ĉiujn matĉojn de ŝablono esti anstataŭigitaj per kordoj . Se ŝablono komenciĝas per # , ĝi devas egali al la komenco de la vastigita valoro de parametro . Se ŝablono komenciĝas per % , ĝi devas egali ĉe la fino de la vastigita valoro de parametro . Se ŝnuro estas nula, koordinatoj de ŝablono estas forigitaj kaj la / sekva ŝablono povas esti preterlasita. Se parametro estas @* , la anstataŭa operacio aplikiĝas al ĉiu pozicia parametro laŭvice, kaj la ekspansio estas la rezulto listo. Se parametro estas aro de variabloj subskribita kun @* , la anstataŭa operacio aplikiĝas al ĉiu membro de la tabelo siavice, kaj la ekspansio estas la rezulto listo.

Komandoŝanĝo

Komando anstataŭigas la eliron de komando anstataŭi la komandan nomon. Estas du formoj:

$ ( komando )

` ordonu '

Bash plenumas la ekspansion per ekzekuto de komando kaj anstataŭigas la komandan anstataŭon kun la norma eligo de la komando, kun iu ajn nova linio forigita. Inklinitaj novaj linioj ne estas forigitaj, sed ili povas esti forigitaj dum vorto dividado. La anstataŭa komando $ (kat- dosiero ) povas esti anstataŭigita per la ekvivalenta sed pli rapida $ (< dosiero ).

Kiam la antikva stilo de anstataŭaĵo estas uzata, backslash konservas ĝian laŭvortan signifon krom kiam sekvis $ , ` , aŭ \ . La unua backquote ne antaŭita de backslash finigas la komandan anstataŭon. Kiam vi uzas la $ ( komandi ) formo, ĉiuj karakteroj inter la paréntesis konsistigas la komandon; Neniu estas traktita speciale.

Komandaj anstataŭaĵoj povas esti nestitaj. Nesti uzinte la rezervitan formon, eskapi la internajn backkotojn per backslashes.

Se la anstataŭo aperas ene de duoblaj citaĵoj, vorto dividado kaj padnivela ekspansio ne estas faritaj sur la rezultoj.

Aritmetika Ekspansio

Aritmetika ekspansio permesas la taksadon de aritmetika esprimo kaj la anstataŭigo de la rezulto. La formato por aritmetika ekspansio estas:

$ (( esprimo ))

La esprimo estas traktita kvazaŭ ĝi estus ene de duoblaj citaĵoj, sed duobla citaĵo ene de la paréntesis ne traktas precipe. Ĉiuj tokoj en la esprimo suferas parametrojn, ekspansion de kordoj, anstataŭigo de komandoj kaj forigo de citaĵoj. Aritmetikaj anstataŭaĵoj povas esti nestitaj.

La taksado estas plenumita laŭ la reguloj listigitaj sube sub ARITMETIKA EVALUADO . Se esprimo estas nevalida, bash presas mesaĝon indikantan fiaskon kaj neniu anstataŭigo okazas.

Procezo Anstataŭigo

Proceza anstataŭo estas subtenata sur sistemoj kiuj subtenas nomitajn tubojn ( FIFO ) aŭ la / dev / fd- metodon por nomi malfermajn dosierojn. Ĝi prenas la formon de <( listo )> ( listo ) . La lerta de procezoj funkcias kun ĝia enigo aŭ eligo konektita al FIFO aŭ iu dosiero en / dev / fd . La nomo de ĉi tiu dosiero pasas kiel argumento al la nuna komando kiel rezulto de la ekspansio. Se la listo ( listo ) estas uzata, skribante al la dosiero donos enigon por listo . Se la formularo <( listo ) estas uzata, la dosiero pasis kiel argumento devus esti legata por akiri la eligo de listo .

Kiam disponebla, proceza anstataŭo estas farita samtempe kun parametro kaj varia ekspansio, komando anstataŭo kaj aritmetika ekspansio.

Vorto dividanta

La ŝelo eltondas la rezultojn de parametro-ekspansio, komanda anstataŭo kaj aritmetika ekspansio, kiu ne okazis en duoblaj citaĵoj por vorto dividado .

La ŝelo traktas ĉiun karakteron de IFS kiel delimitoro, kaj disvastigas la rezultojn de la aliaj ekspansioj en vortojn sur ĉi tiuj signoj. Se IFS malŝaltas, aŭ ĝia valoro estas ĝuste , la defaŭlta, tiam ajna sekvenco de IFS- karakteroj utilas por limigi vortojn. Se IFS havas valoron krom la defaŭlta, tiam sekvencoj de spaco kaj pestaña karakteroj de spaco estas ignoritaj ĉe la komenco kaj fino de la vorto, kondiĉe ke la spaco de spaco estas en la valoro de IFS ( IFS- spaco-karaktero). Ajna karaktero en IFS, kiu ne estas IFS- spaco, kune kun iuj apudaj IFS-spacaj spacoj, limigas kampo. Sekvenco de IFS-spacaj spacoj ankaŭ estas traktita kiel delimitilo. Se la valoro de IFS estas nula, neniu vorto dividiĝas.

Eksplikaj nulaj argumentoj ( """ ) estas retenitaj. Nekonataj implicitaj nulaj argumentoj, rezultantaj el la ekspansio de parametroj, kiuj ne havas valorojn, estas forigitaj. Se parametro sen valoro estas vastigita ene de duoblaj citaĵoj, nula argumento rezultas kaj konserviĝas.

Rimarku, ke se neniu ekspansio okazas, neniu divido estas farita.

Ekspansio de nomnomo

Post vorto dividado, krom se la opcio -f estas fiksita, bash- skanoj ĉiu vorto por la karakteroj * ,? , kaj [ . Se unu el ĉi tiuj karakteroj aperas, tiam la vorto estas konsiderata kiel modelo , kaj anstataŭigita per alfabeta ordo, listo de dosieraj nomoj, kiuj kongruas kun la mastro. Se neniuj dosiernivelaj dosiernomoj estas trovitaj, kaj la opcio opcion nullglob estas malŝaltita, la vorto restas senŝanĝa. Se la nula opcio estas agordita, kaj neniuj matĉoj estas trovitaj, la vorto estas forigita. Se la opcio nocaseglob estas ebligita, la matĉo estas farita sen konsideri la kazon de alfabetaj karakteroj. Kiam ŝablono estas uzata por la nominala ekspansio, la karaktero `'.' ' Al la komenco de nomo aŭ tuj post slash devas esti egale esprimita , krom se la ŝelo-opcio dotglob estas difinita. Kiam vi kongruas la nomon, la ŝlosila karaktero devas ĉiam esti egale parigita. En aliaj kazoj, la ''. '' ' Karaktero ne estas traktita precipe. Vidu la priskribon de butiko sube sub SHELL BUILTIN COMMANDS por priskribo de la nocaseglob , nullglob kaj dotglob shell-ebloj.

La GLOBIGNORE- ŝela variablo povas esti uzata por restrikti la aron de dosiernomoj, kiuj kongruas kun ŝablono . Se GLOBIGNORE estas aro, ĉiu kongrua dosiernomo kiu ankaŭ kongruas kun unu el la ŝablonoj en GLOBIGNORE estas forigita el la listo de matĉoj. La dosieroj nomiĝas ``. '' Kaj `` .. '' ĉiam estas ignoritaj, eĉ kiam GLOBIGNORE estas aro. Tamen, agordi GLOBIGNORE havas la efikon ebligi la dotglob- ŝelon-opcion, do ĉiuj aliaj dosiernomoj komenciĝantaj per ``. '' Egalos . Por akiri la malnovan konduton ignori dosiernomon komencante per ``. '' , Faru ``. * '' Unu el la ŝablonoj en GLOBIGNORE . La dotglob- opcio estas malebligata kiam GLOBIGNORE malŝaltas .

Ŝablonkapablo

Ajna karaktero, kiu aperas en ŝablono, krom la specialaj ŝablonaj karakteroj priskribitaj sube, kongruas. La NUL-karaktero eble ne okazas en ŝablono. La specialaj ŝablonaj signoj devas esti cititaj se ili devas esti egalitaj laŭvorte.

La specialaj ŝablonaj karakteroj havas la jenajn signifojn:

*

Matĉas ĉenon, inkluzive de nula kordo.

?

Matĉoj de unuopa karaktero.

[...]

Matĉoj de iu el la sekigitaj signoj. Paro da karakteroj apartigitaj per krapo signifas gamon-esprimon ; iu ajn karaktero, kiu varias inter tiuj du karakteroj, inkluzivanta, uzante la sekvencon de kalkulado kaj karaktero de la aktuala loko, estas egalita. Se la unua karaktero sekvanta la [ estas a ! aŭ ĉu iu karaktero ne ligita estas egalita. La ordo de ordigado de karakteroj en gamaj esprimoj estas difinita per la nuna loko kaj la valoro de la LC_COLLATE- ŝela variablo, se ĝi agordas. A - povas esti egalita per inkluzivanta ĝin kiel la unua aŭ lasta karaktero en la aro. A ] povas esti egaligita per inkluzivanta ĝin kiel la unua karaktero en la aro.

Ene de [ kaj ] , karakteroj de klasoj povas esti specifitaj per la sintakso [: klaso :] , kie klaso estas unu el la sekvaj klasoj difinitaj en la normo POSIX.2:

alnum alpha ascii blank cntrl-nombro-grafikaĵo pli malalta print-punkta spaco supra vorto xdigit
Karaktero de klaso kunigas ajnan karakteron apartenantan al tiu klaso. La vorto karaktero klaso matĉoj literoj, ciferoj kaj la karaktero _.

Ene de [ kaj ] , ekvivalentklaso povas esti specifita per la sintakso [= c =] , kiu kongruas kun ĉiuj karakteroj kun la sama kompila pezo (kiel difinis la aktuala loko) kiel la karaktero c .

Ene de [ kaj ] , la sintakso [. simbolo .] kongruas kun la simboliga simbolo .

Se la opcio de ŝlosilaĵo de ŝlosilo estas ebligita per la butiko konstruita, pluraj etenditaj ŝablonaj operacioj estas agnoskitaj. En la sekva priskribo, mastro-listo estas listo de unu aŭ pli da ŝablonoj apartigitaj per a . Komponaj ŝablonoj povas esti formitaj uzante unu aŭ pli el la jenaj submetaĵoj:

( ŝablono-listo )

Matĉoj nulo aŭ unu spritaĵo de la donitaj ŝablonoj

* ( ŝablono-listo )

Matĉoj nulo aŭ pli da rimarkoj de la donitaj ŝablonoj

+ ( ŝablono-listo )

Matĉas unu aŭ pli da rimarkoj de la donitaj ŝablonoj

@ ( ŝablono-listo )

Matĉoj ĝuste unu el la donitaj ŝablonoj

( ŝablono-listo )

Matĉas ion krom unu el la donitaj ŝablonoj

Citaĵo Forigo

Post la antaŭaj ekspansioj, ĉiuj elŝutitaj eventoj de la karakteroj \ , ' , kaj ' kiuj ne rezultis el unu el la supraj ekspansioj estas forigitaj.

REDIREKTO

Antaŭ ol ekzekuto estas farita, ĝia enigo kaj eligo povas esti redirektita per speciala notacio interpretita de la ŝelo. Redirekto ankaŭ povas esti uzata por malfermi kaj fermi dosierojn por la nuntempa konkreta medio. La sekvaj redirektaj operacioj povas antaŭeniri aŭ aperi ie ajn en simpla komando aŭ eble sekvi komandon . Redirektoj estas procesitaj laŭ la ordo, kiun ili aperas, de maldekstre dekstre.

En la sekvaj priskriboj, se la dosiero priskriba numero estas preterlasita, kaj la unua karaktero de la redirektoro estas < , la redirekto raportas al la norma enigo (dosiero-priskribilo 0). Se la unua karaktero de la redirekta operacilo estas > , la redirekto raportas al la norma eligo (dosiero-priskribilo 1).

La vorto sekvanta la redirektan operacion en la sekvaj priskriboj, krom se alie notas, estas submetita al bracela ekspansio, tilde-ekspansio, parametro-ekspansio, anstataŭigo de komandoj, aritmetika ekspansio, citaĵo-forigo, plasnomo-ekspansio kaj vorto dividado. Se ĝi ekspansiiĝas al pli ol unu vorto, bash raportas eraron.

Notu, ke la ordo de redirektoj estas grava. Ekzemple, la komando

ls > dirlist 2 > & 1

direktas ambaŭ norman elsendon kaj norman eraron al la dosiero teroristo , dum la komando

ls 2 > & 1 > dirlist

direktas nur la norman eliron al dosiero de la dosiero, ĉar la norma eraro duobligis kiel norma eligo antaŭ ol la norma eligo estis alidirektita al la terkulturisto .

Bash manipulas plurajn dosiernomojn speciale kiam ili estas uzataj en redirektoj, kiel priskribitaj en la sekva tabulo:

/ dev / fd / fd

Se fd estas valida entjero, dosiero-priskribilo fd duobligas.

/ dev / stdin

Dosiero-priskribilo 0 estas duobligita.

/ dev / stdout

Dosiero-priskribilo 1 estas duobligita.

/ dev / stderr

File descriptor 2 estas duobligita.

/ dev / tcp / gastiganto / haveno

Se la gastiganto estas valida gastnomo aŭ interreta adreso, kaj haveno estas nombro de havenaj nombroj aŭ servaj nomoj, provoj de malfermo de TCP-konekto al la responda socket.

/ dev / udp / gastiganto / haveno

Se la gastiganto estas valida gastignomo aŭ interreta adreso, kaj haveno estas nombro de havenaj nombroj aŭ servaj nomoj, provoj por malfermi UDP-konekton al la responda socket.

Malsukceso malfermi aŭ krei dosieron kaŭzas la redirekton malsukcesi.

Alidirektila enigo

Redirektado de enigo kaŭzas la dosieron, kies nomo rezultas de la ekspansio de vorto malfermita por legi sur dosier-priskribilo aŭ la norma enigo (dosiero-priskribilo 0) se n ne estas specifita.

La ĝenerala formato por alidirektila enigo estas:

[ n ] < vorto

Alidirekta Eligo

Redirektado de eligo kaŭzas la dosieron, kies nomo rezultas de la ekspansio de vorto malfermita por skribi sur dosier-priskribilo aŭ la norma eligo (dosiero-priskribilo 1) se n ne estas specifita. Se la dosiero ne ekzistas, ĝi kreiĝas; se ĝi ekzistas, ĝi detranĉiĝas al nulo.

La ĝenerala formato por alidirektila eligo estas:

[ n ] > vorto

Se la redirekta operacilo estas > , kaj la noclobber- opcio al la aro konstruita estis ebligita, la redirekto malsukcesos se la dosiero, kies nomo rezultas de la ekspansio de vorto ekzistas, kaj estas regula dosiero. Se la redirekta operacilo estas > | , aŭ la redirekta operacilo estas > kaj la noclobber- opcio al la aro- konstruita komando ne estas ebligita, la redirekto estas provita eĉ se la dosiero nomata per vorto ekzistas.

Agordi Alidirektigitan Produkton

Redirektado de eligo de ĉi tiu modo kaŭzas la dosieron, kies nomo rezultas de la ekspansio de vorto malfermita por aperi en dosiero-priskribilo aŭ la norma eligo (dosiero-priskribilo 1) se n ne estas specifita. Se la dosiero ne ekzistas, ĝi kreiĝas.

La ĝenerala formato por aperi eligo estas:

[ n ] >> vorto

Alidirektanta Norma Eligo kaj Norma Eraro

Bash permesas ambaŭ el la norma eligo (dosiero-priskribilo 1) kaj la norma erara eligo (dosiero-priskribilo 2) esti alidirektita al la dosiero kies nomo estas la ekspansio de vorto kun ĉi tiu konstruo.

Estas du formatoj por alidirektanta norma eligo kaj norma eraro:

&> vorto

kaj

> & vorto

De la du formoj, la unua estas preferata. Ĉi tio estas semantike ekvivalenta al

> vorto 2 > & 1

Ĉi tie Dokumentoj

Ĉi tiu tipo de redirekto instruas la ŝelon por legi enigon de la nuna fonto ĝis vidiĝas linio, kiu enhavas nur vorton (sen malplenaj blankaj lokoj). Ĉiuj linioj legitaj ĝis tiu punkto tiam estas uzataj kiel norma enigo por komando.

La formato de ĉi-dokumentoj estas:

<< [ - ] vorto ĉi tie-dokumento delimitilo

Neniu parametro-ekspansio, komuna anstataŭo, aritmetika ekspansio, aŭ padnova ekspansio estas farita laŭ vorto . Se iuj vortoj estas cititaj, la delimitilo estas la rezulto de citaĵo forigo per vorto , kaj la linioj en la ĉi-dokumento ne estas vastigitaj. Se la vorto estas unototita, ĉiuj linioj de la ĉi-dokumento estas submetitaj al parametro-ekspansio, komand-anstataŭo kaj aritmetika ekspansio. En la lasta kazo, la sekvenco de karaktero \ estas ignorita, kaj \ devas esti uzata por citi la karakterojn \ , $ , kaj ` .

Se la redirekta operacilo estas << - , tiam ĉiuj ĉefaj pestaĵaj karakteroj estas forĵetitaj de enigaj linioj kaj la linio enhavanta delimitilon . Ĉi tio permesas ĉi tie-dokumentojn ene de konkretaj skriptoj esti indentitaj en natura maniero.

Jen kordoj

Varianto de ĉi tie dokumentoj, la formato estas:

<<< vorto

La vorto estas vastigita kaj provizita al la komando sur ĝia norma enigo.

Duplikantaj dosieraj priskribiloj

La operatoro de redirektado

[ n ] <& vorto

estas uzata por duobligi enmetajn dosierajn priskribojn. Se la vorto ekspansiiĝas al unu aŭ pli da ciferoj, la dosiero-priskribilo indikita per n estas farita kiel kopio de tiu dosiero-priskribilo. Se la ciferoj en la vorto ne specifas dosieron-priskribilon malfermitan por enigo, okazas eraro de redirektado. Se vorto taksas - la dosiero-priskribilo estas fermita. Se n ne estas specifita, la norma enigo (dosiero priskribilo 0) estas uzata.

La telefonisto

[ n ] > & vorto

estas uzata simile por duobligi elsendajn dosierajn priskribojn. Se n ne estas specifita, la norma eligo (dosiero priskribilo 1) estas uzata. Se la ciferoj en la vorto ne specifas dosieron-priskribilon malfermitan por eligo, okazas eraro de redirektado. Kiel speciala kazo, se n estas preterlasita, kaj vorto ne ekspansiiĝas al unu aŭ pli da ciferoj, la norma eligo kaj norma eraro estas alidirektitaj kiel priskribite antaŭe.

Movantaj File Descriptors

La operatoro de redirektado

[ n ] <& nombro -

movas la dosieron priskriban dosieron al dosiero priskribilo n , aŭ la norma enigo (dosiero priskribilo 0) se n ne estas specifita. cifero estas fermita post esti duobligita al n .

Simile, la redirektoro

[ n ] > & cifero -

movas la dosieron priskriban dosieron al dosiero-priskribilo, aŭ la norma eligo (dosiero-priskribilo 1) se n ne estas specifita.

Malfermante dosierajn priskribojn pri legado kaj skribado

La operatoro de redirektado

[ n ] <> vorto

kaŭzas la dosieron kies nomo estas la ekspansio de vorto malfermita por ambaŭ legado kaj skribado sur dosiero-priskribilo n aŭ sur dosiero-priskribilo 0 se n ne estas specifita. Se la dosiero ne ekzistas, ĝi estas kreita.

ALIASES

Aliasoj permesas ĉenon esti anstataŭigita por vorto kiam ĝi estas uzata kiel la unua vorto de simpla komando. La ŝelo konservas liston de aliasoj, kiuj povas esti agorditaj kaj malŝaltitaj kun la alias kaj unalias- konstruitaj komandoj (vidu SHELL BUILTIN COMMANDS sube). La unua vorto de ĉiu komando, se unototed, estas kontrolita por vidi ĉu ĝi havas alias. Se do, tiu vorto estas anstataŭigita per la teksto de la alias. La aliasa nomo kaj la anstataŭa teksto povas enhavi ajnan validan ŝelon-enigon, inkluzive de la metacoj enlistigitaj supre, kun la escepto, ke la aliasomo eble ne enhavas. La unua vorto de la anstataŭa teksto estas provita por aliasoj, sed vorto, kiu estas identa al aliasa ekspansio, ne ekspansiiĝas duafoje. Ĉi tio signifas ke unu povas alias ls al ls -F , ekzemple, kaj bash ne provas rekursie ekspansiiĝi ​​la anstataŭan tekston. Se la lasta karaktero de la aliasvaloro estas malplena , tiam la sekva komando-vorto sekvanta la alias ankaŭ estas kontrolita por aliasa ekspansio.

Aliasoj estas kreitaj kaj listigitaj per la aliasa komando, kaj forigitaj kun la komando de unalias .

Ne ekzistas mekanismo por uzi argumentojn en la anstataŭa teksto. Se necesas argumentoj, ŝlosila funkcio devus esti uzata (vidu FUNKOJ sube).

Aliasoj ne ekspansiiĝas, kiam la ŝelo ne estas interaga, krom se la opcio de ekspansio_aliases estas arobla per butiko (vidu la priskribon de butiko sub SHELL BUILTIN COMMANDS sube).

La reguloj pri difino kaj uzo de aliasoj estas iom malklaraj. Bash ĉiam legas almenaŭ unu kompletan linion de enigo antaŭ ol ekzekuti iun ajn el la komandoj sur tiu linio. Aliasoj ekspansiiĝas kiam oni legas komandon, ne kiam ĝi estas ekzekutita. Sekve, alia difino, kiu aperas sur la sama linio kiel alia komando, ne efektiviĝas ĝis la sekva linio de enigo estas legata. La ordonoj sekvantaj la aliasan difinon sur tiu linio ne estas tuŝitaj de la nova aliaso. Ĉi tiu konduto ankaŭ estas problemo, kiam funkcioj ekzekutas. Aliasoj estas vastigitaj kiam funkcio difino estas legata, ne kiam la funkcio estas ekzekutita, ĉar funkcio difino mem estas komuna komando. Kiel konsekvenco, aliasoj difinitaj en funkcio ne estas haveblaj ĝis post tiu funkcio ekzekutas. Por esti sekura, ĉiam metu aliasajn difinojn sur apartan linion, kaj ne uzu alias en komanditaj komandoj.

Por preskaŭ ĉiu celo, aliasoj estas anstataŭigitaj de ŝeloj.

FUNKOJ

Ŝela funkcio, difinita kiel priskribita supre sub SHELL GRAMMAR , stokas serion de komandoj por posta ekzekuto. Kiam la nomo de ŝelo funkcio estas uzata kiel simpla komando, la listo de komandoj asociitaj al tiu funkcia nomo estas ekzekutita. Funkcioj estas ekzekutitaj en la kunteksto de la nuna ŝelo; neniu nova procezo estas kreita por interpreti ilin (kontrasti ĉi tion per la ekzekuto de ŝelo-skripto). Kiam funkcio estas ekzekutita, la argumentoj al la funkcio iĝas la poziciaj parametroj dum ĝia ekzekuto. La speciala parametro # estas ĝisdatigita por reflekti la ŝanĝon. Pozicia parametro 0 estas senŝanĝa. La variablo de FUNCNAME estas aligita al la nomo de la funkcio dum la funkcio ekzekutas. Ĉiuj aliaj aspektoj de la kerno de ekzekuto estas identaj inter funkcio kaj ĝia alvoko kun la escepto, ke la DEBUG- kaptilo (vidu la priskribon de la kaptilo konstruita sub SHELL BUILTIN COMMANDS sube) ne estas heredita krom se la funkcio ricevis la spuron- atributon ( vidu la priskribon de la deklaro konstruita sube).

Variaj lokaj al la funkcio povas esti deklaritaj kun la loka konstruita komando. Ordine, variabloj kaj iliaj valoroj estas dividitaj inter la funkcio kaj ĝia alvoko.

Se la konstruita komando reveno estas ekzekutita en funkcio, la funkcio kompletigas kaj ekzekuto rekomencas kun la sekva komando post la funkcia alvoko. Kiam funkcio kompletigas, la valoroj de la poziciaj parametroj kaj la speciala parametro # estas restarigitaj al la valoroj, kiujn ili havis antaŭ la ekzekuto de la funkcio.

Funkciaj nomoj kaj difinoj povas esti listigitaj per la -f- opcio por deklarikomponaĵoj konstruitajn komandojn. La -F- opcio por deklarikomponaĵo listigos nur la funkciojn. Funkcioj povas esti eksportitaj por ke subshelloj aŭtomate difinis ilin per la -f- opcio al la eksporta konstruaĵo .

Funkcioj povas esti rekursie. Neniu limo estas postulita sur la nombro de rekursiaj alvokoj.

ARITERA EVALUADO

La ŝelo permesas taksi la aritmetikajn esprimojn, laŭ certaj cirkonstancoj (vidu la ordonon konstruita kaj Aritmetika Ekspansio ). Takso estas farita en fiksaj larĝaj entjeroj sen kontrolo por superfluo, kvankam divido per 0 estas kaptita kaj sigelita kiel eraro. La telefonistoj kaj ilia prioritato kaj asocieco estas samaj ol en la lingvo C. La jenaj listoj de operatoroj kolektas en niveloj de egalaj prioritataj operatoroj. La niveloj estas listigitaj en ordo de malpliiĝanta antaŭado.

id ++ id -

variablo post-pliigo kaj post-dekremento

++ id - id

variablo antaŭ-pliigo kaj antaŭ-dekremento

- +

unuara malpli kaj pli

! ~

logika kaj beda negado

**

eksponento

* /%

multipliko, divido, restaĵo

+ -

aldonita, subtraho

<< >>

maldekstraj kaj maldekstraj bojaj movoj

<=> = <>

komparo

==! =

egaleco kaj neegaleco

&

bilata Kaj

^

BITTE ekskluziva OR

|

bito OR

&&

logika Kaj

||

logika OR

expr ? expr : ekskr

Provizora taksado

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

farita

expr1 , expr2

komo

Ŝancilaj variabloj estas permesitaj kiel operoj; parametra ekspansio estas farita antaŭ ol la esprimo taksas. Ene de esprimo, ŝlosilaj variabloj ankaŭ povas esti referencitaj per nomo sen uzi la parametron-ekspansian sintakson. La valoro de variablo estas taksita kiel aritmetika esprimo kiam ĝi estas referencita. Ŝela variablo ne bezonas ĝian entjerajn atributojn turnitajn por esti uzata en esprimo.

Konstantoj kun gvidanto 0 estas interpretitaj kiel okaj nombroj. Ĉefo 0x aŭ 0X signifas heksadeksimon. Alie, nombroj prenas la formon [ bazo n ], kie bazo estas decimala nombro inter 2 kaj 64 reprezentanta la aritmetikan bazon, kaj n estas nombro en tiu bazo. Se bazo # preterlasas, tiam bazo 10 estas uzata. La ciferoj pli grandaj ol 9 estas prezentitaj per la minusklaj literoj, la plej grandaj literoj, @, kaj _, en tiu ordo. Se bazo estas malpli ol aŭ egala al 36, minuskloj kaj plej grandaj literoj povas esti interŝanĝeblaj por reprezenti nombrojn inter 10 kaj 35.

Funkciistoj taksas laŭ prioritato. Sub-esprimoj en krampoj estas taksitaj unue kaj povas forĵeti la antaŭajn regulojn.

KONDITIVAJ EXPRESSOJ

Kondiĉaj esprimoj estas uzataj de la [ kombinaĵo komando kaj la testo kaj [ konstruita komandoj por provi dosierajn atributojn kaj plenumi ĉenojn kaj aritmetikajn komparojn. Esprimoj estas formitaj de la sekvaj unuaj aŭ binaraj primaroj. Se iu ajn dosiero- argumento al unu el la primaroj estas de la formo / dev / fd / n , tiam dosier-priskribilo n estas kontrolita. Se la dosiero- argumento al unu el la primaroj estas unu el / dev / stdin , / dev / stdout , aŭ / dev / stderr , dosiero priskribilo 0, 1 aŭ 2 respektive estas kontrolita.

-a dosiero

Vere, se ekzistas dosiero .

-b- dosiero

Vere se dosiero ekzistas kaj estas bloko speciala dosiero.

-c- dosiero

Vere se dosiero ekzistas kaj estas speciala dosiero.

-d- dosiero

Vere se dosiero ekzistas kaj estas dosierujo.

-e dosiero

Vere, se ekzistas dosiero .

-f- dosiero

Vere se dosiero ekzistas kaj estas regula dosiero.

-g- dosiero

Vere, se ekzistas dosiero kaj estas aro-grupo-id.

-h- dosiero

Vere se dosiero ekzistas kaj estas simbola ligo.

-k- dosiero

Vere, se ekzistas dosiero kaj ĝia 'sticky' 'estas aro.

-p- dosiero

Vere se dosiero ekzistas kaj estas nomata tubaro (FIFO).

-r- dosiero

Vere, se dosiero ekzistas kaj estas legebla.

-s- dosiero

Vera se dosiero ekzistas kaj havas grandecon pli granda ol nulo.

-t fd

Vere, se la dosiero-priskribilo fd malfermiĝas kaj aludas al fina stacio.

-u dosiero

Vere se dosiero ekzistas kaj ĝia aro-uzanto-ido estas aro.

-w- dosiero

Vere se dosiero ekzistas kaj estas skribebla.

-x- dosiero

Vere se dosiero ekzistas kaj estas ejecutable.

-O- dosiero

Vera se dosiero ekzistas kaj estas posedata de la efika uzanto-id.

-G- dosiero

Vera se dosiero ekzistas kaj estas posedata de la efika grupa id.

-L- dosiero

Vere se dosiero ekzistas kaj estas simbola ligo.

-Sa dosiero

Vere, se dosiero ekzistas kaj estas socket.

-N- dosiero

Vere se dosiero ekzistas kaj estis modifita ekde ĝi estis laste legita.

dosiero1 - nt dosiero2

Vera se file1 estas pli nova (laŭ modifita dato) ol file2 , aŭ se file1 ekzistas kaj file2 ne.

dosiero1 - ot dosiero2

Vere se file1 estas pli malnova ol file2 , aŭ se file2 ekzistas kaj file1 ne.

dosiero1- dosiero2

Vera se file1 kaj file2 raportas al la sama aparato kaj inodejaj nombroj.

-aŭnomo

Vere, se la opcio opcion opcio estas ebligita. Vidu la liston de ebloj sub la priskribo de -o- opcio al la aro konstruita sube.

-z- kordo

Vera se la longo de la kordo estas nulo.

-n kordo

kordo

Vera se la longo de la kordo estas ne-nulo.

string1 == string2

Vere, se la ŝnuroj estas egalaj. = povas esti uzata anstataŭ == por strikta POSIX-plenumado.

string1 ! = string2

Vere, se la kordoj ne estas egalaj.

string1 < string2

Vera se string1 varoj antaŭ string2 leksografie en la aktuala loko.

string1 > string2

Vere se string1 ordigas post string2 leksografie en la nuna loko.

arg1 OP arg2

OP estas unu el -eq , -ne , -lt , -le , -gt , aŭ -ge . Ĉi tiuj aritmetikaj binaraj operatoroj revenas veraj se arg1 estas egala al, ne egala al, malpli ol, malpli ol aŭ egala al, pli granda ol, aŭ pli granda ol aŭ egala al arg2 , respektive. Arg1 kaj arg2 povas esti pozitivaj aŭ negativaj entjeroj.

SIMPLEA KOMPO-EksPANSANO

Kiam simpla komando estas ekzekutita, la ŝelo prezentas la sekvajn ekspansiojn, taskojn kaj redirektojn, de maldekstre al dekstra.

1. La vortoj, kiujn la analizilo markis kiel ŝanĝiĝaj asignoj (tiuj, kiuj antaŭas la komandan nomon) kaj redirektoj savas por posta prilaborado.

2.La vortoj, kiuj ne estas variaj taskoj aŭ redirektoj, estas vastigitaj. Se iuj vortoj restas post ekspansio, la unua vorto estas nomata la komando kaj la ceteraj vortoj estas la argumentoj.

3.Redirektoj estas plenumitaj kiel priskribitaj supre sub REDIREKTO .

4. La teksto post la = en ĉiu ŝanĝiĝema asigno travivas tilde-ekspansion, parametron-ekspansion, anstataŭigon de komandoj, aritmetika ekspansio kaj citaĵo forigo antaŭ ol esti atribuita al la variablo.

Se neniu komando nomas rezultojn, la variaj asignoj efikas la nunan ŝelon-medion. Alie, la variabloj estas aldonitaj al la medio de la ekzekutita komando kaj ne tuŝas la nunan ŝelon-medion. Se iu ajn el la faritaj provoj atribui valoron al legxe ŝanĝiĝema, eraro okazas, kaj la komando eliras kun ne-nula statuso.

Se neniu komando nomas rezultojn, redirektoj estas faritaj, sed ne tuŝas la nunan ŝelon-medion. Redirekta eraro kaŭzas la ordonon eliri kun ne-nula statuso.

Se estas nomo de komando forlasita post ekspansio, ekzekuto progresas kiel priskribita sube. Alie, la komando eliras. Se unu el la ekspansioj enhavis anstataŭon de komandoj, la eliro-statuso de la komando estas la eliro-statuso de la lasta komando-anstataŭo. Se ne estis anstataŭigoj de komando, la komando eliras kun statuso de nulo.

Komanda Ekskluziveco

Post komando dividita en vortoj, se ĝi rezultas simplan komandon kaj laŭvola listo de argumentoj, la sekvaj agoj estas prenitaj.

Se la komando-nomo ne enhavas slatojn, la ŝelo provas lokalizi ĝin. Se ekzistas ŝela funkcio de tiu nomo, tiu funkcio estas alvokita kiel priskribita supre en FUNKOJ . Se la nomo ne kongruas kun funkcio, la ŝelo serĉas ĝin en la listo de ŝeloj konstruitaj. Se unu matĉo estas trovita, tiu konstruita estas alvokita.

Se la nomo ne estas ŝelo funkcio nek konstruaĵo, kaj enhavas neniujn batalojn, vi serĉas ĉiun elementon de la PATH por dosierujo enhavanta ejektivan dosieron de tiu nomo. Bash uzas tablon de haroj por memori la plenajn padnomojn de ejektivaj dosieroj (vidu hash sub SHELL BUILTIN COMMANDS sube). Plena serĉo de la dosierujoj en PATH estas farita nur se la komando ne troveblas en la hash-tablo. Se la serĉo malsukcesas, la ŝelo presas eraran mesaĝon kaj redonas eliron de 127.

Se la serĉo sukcesas, aŭ se la komanda nomo enhavas unu aŭ pli da kalumnioj, la ŝelo ekzekutas la nomitan programon en aparta ekzekuto. Argumento 0 estas difinita al la nomo donita, kaj la ceteraj argumentoj al la komando fiksas al la argumentoj donitaj, se iu ajn.

Se ĉi tiu ekzekuto malsukcesas, ĉar la dosiero ne estas en formebla formato, kaj la dosiero ne estas dosierujo, oni supozas ke ĝi estas ŝelo-skripto , dosiero enhavanta ŝandajn komandojn. Subaŝelo devas ekzekuti ĝin. Ĉi tiu subshello rekomenciĝas, tiel ke la efiko estas kvazaŭ nova ŝelo estis alvokita por manipuli la skripton, escepte ke la lokoj de komandoj memoritaj de la gepatro (vidu hash sube sub SHELL BUILTIN COMMANDS ) estas retenataj de la infano.

Se la programo estas dosiero komencanta kun #! , la resto de la unua linio specifas interpretiston por la programo. La ŝelo ekzekutas la specifitan interpretilon pri mastrumaj sistemoj, kiuj ne manipulas ĉi tiun formeblan formaton. La argumentoj al la interpretisto konsistas el sola laŭvola argumento sekvanta la interpretinomon sur la unua linio de la programo, sekvata per la nomo de la programo, sekvita de la komandaj argumentoj, se iu ajn.

Komuna Ekspektiveco AMBIENTO

La ŝelo havas ekzekutan medion , kiu konsistas el la sekvaj:

* malfermaj dosieroj hereditaj de la ŝelo ĉe alvoko, kiel modifita per redirektoj provizitaj al la ekzek konstruita

* la nuna laboranta dosierujo kiel fiksita per cd , pushd , aŭ popd , aŭ heredita de la ŝelo ĉe alvoko

* la dosiero de kreado de dosieroj kiel aro de umask aŭ heredita de la patro de la ŝelo

* aktualaj kaptiloj starigitaj per kaptilo

* konzernaj parametroj, kiuj estas difinitaj per ŝanĝiĝema asigno aŭ kun aro aŭ heredita de la patro de la ŝelo en la medio

* ŝeloj funkcioj difinitaj dum ekzekuto aŭ hereditaj de la patro de la ŝelo en la medio

* Ebloj ebligitaj ĉe alvoko (ĉu implicite aŭ kun komandliniaj argumentoj) aŭ per aro

* Ebloj ebligitaj de butiko

* aliasoj de ŝelo difinitaj kun alias

* diversaj procezoj-ID, inkluzive de tiuj de fono-laboroj, la valoro de $$ , kaj la valoro de $ PPID

Kiam simpla komando alia ol konstruita aŭ ŝelo funkcio devas esti ekzekutita, ĝi estas alpreĝita en aparta ekzekuto-medio kiu konsistas el la sekvaj. Krom se alie notita, la valoroj estas hereditaj de la ŝelo.

* la malfermaj dosieroj de la ŝelo, plus ajnaj modifoj kaj aldonoj specifitaj per redirektoj al la komando

* la nuna laboranta dosierujo

* la dosiero kreo de dosiero

* ŝlosilaj variabloj markitaj por eksportado, kune kun variabloj eksportitaj por la komando, pasitaj en la medio

* kaptiloj kaptitaj de la ŝelo restarigas la valorojn hereditajn de la patro de la ŝelo, kaj kaptiloj ignoritaj de la ŝelo estas ignoritaj

Komando alpreĝita en ĉi tiu aparta medio ne povas tuŝi la ekzercon de la ŝelo.

Komando-anstataŭigo kaj asincrona komandoj estas alpreĝitaj en subshell-medio, kiu estas duobligita de la ŝelo-medio, krom ke kaptiloj kaptitaj de la ŝelo restariĝas al la valoroj, kiujn la ŝelo heredis de sia gepatra alvoko. Builtin-komandoj, kiuj estas alvokitaj kiel parto de dukto, estas ankaŭ ekzekutitaj en subshell-medio. Ŝanĝoj faritaj al la subshell-medio ne povas tuŝi la ekzekutan medion de la ŝelo.

Se ordono estas sekvita per & kaj laborpostrolo ne estas aktiva, la defaŭlta norma enigo por la komando estas la malplena dosiero / dev / null . Alie, la alpreĝita komando heredas la dosierajn priskribojn de la nomata ŝelo kiel modifita per redirektoj.