Skip to main content

Linux - Comando Unix: bash

Anonim

L'ordre Linux Bash és unsh-un intèrpret de llenguatge de comanda compatible que executa comandaments llegits des de l'entrada estàndard o des d'un fitxer.Bash també incorpora característiques útils de les capes Korn i C (ksh icsh).

Opcions de bash

A més de les opcions de shell d'un sol caràcter documentades a la descripció del fitxerconjunt comandament incorporat,bash interpreta les següents opcions quan s'invoca:

  • -c cadena: Si el-c L'opció està present, a continuació, es llegeixen comandes cadena . Si hi ha arguments després del cadena , s'assignen als paràmetres de posició, començant per$0.
  • -i: Si el-i l'opció està present, el shell és interactiu .
  • -l: Feubash Actua com si s'hagués invocat com a intèrpret d'ordres d'inici de sessió.
  • -r: Si el-r l'opció està present, el shell es converteix restringit
  • -s: Si el-s l'opció està present, o si no hi ha arguments restants després del processament d'opcions, es llegeixen les ordres de l'entrada estàndard. Aquesta opció permet establir els paràmetres de posició quan invoca un intèrpret d'ordres interactiu.
  • -D: Una llista de totes les cadenes de dues lletres precedides per$ s'imprimeix a la sortida estàndard. Aquestes són les cadenes que estan subjectes a la traducció de l'idioma quan la localització actual no ésC oPOSIX. Això implica la -n opció; no s'executaran comandaments.
  • - + O shopt_option : shopt_option és una de les opcions d 'intèrpret acceptada pelbotiga incorporat. Si shopt_option està present,-O estableix el valor d'aquesta opció, i+ O no s'estableix. Si shopt_option no es proporciona, els noms i valors de les opcions de la shell acceptades perbotiga S'imprimeixen a la sortida estàndard. Si l'opció d'invocació és + O, la sortida es mostra en un format que es pot reutilitzar com a entrada.
  • --: A-- indica el final de les opcions i deshabilita el processament d'opcions addicionals. Qualsevol argument després de la-- es tracten com noms de fitxer i arguments. Un argument de- és equivalent a--.

Bash També interpreta una sèrie d'opcions de múltiples caràcters. Aquestes opcions han d'aparèixer a la línia d'ordres abans de reconèixer les opcions d'un sol caràcter:

  • --dump-po-strings: Equivalent a-D, però la sortida es troba en el GNU gettext po (arxiu d'objectes portàtils).
  • - cadenes de cadena: Equivalent a-D.
  • - ajuda: Mostra un missatge d'ús a la sortida estàndard i surt amb èxit.
  • --init-file: dossier i --rcfile dossier : Executa ordres de dossier en lloc del fitxer d'inicialització personal estàndard ~ / .bashrc si el shell és interactiu.
  • --iniciar Sessió: Equivalent a-l.
  • - Noediting: No utilitzeu el GNUreadline biblioteca per llegir les línies de comandes quan el shell és interactiu.
  • --noprofile: No llegiu el fitxer d'inici del sistema / etc / profile o qualsevol dels fitxers d'inicialització personal ~ / .bash_profile , ~ / .bash_login , o ~ / .profile . Per defecte,bash llegeix aquests fitxers quan s'invoca com a intèrpret d'ordres d'inici de sessió.
  • --norc: No llegiu i executeu el fitxer d'inicialització personal ~ / .bashrc si el shell és interactiu. Aquesta opció està activada per defecte si es invoca com a intèrpret d'ordressh.
  • --posix: Canviar el comportament debash on l'operació predeterminada difereix de l'estàndard POSIX perquè coincideixi amb l'estàndard ( mode posix ).
  • - restringit: La closca es restringeix.
  • - rpm-requereix: Produïu la llista de fitxers necessaris per executar l'script shell. Això implica '-n' i està subjecte a les mateixes limitacions que l'error de temps de compilació de verificació; Backticks, proves i evals no s'analitzen de manera que algunes dependències es poden perdre.
  • --verbose: Equivalent a-v.
  • --version: Mostra la informació de la versió per a aquesta instància debash a la sortida estàndard i sortiu correctament.

Arguments

Si romanen arguments després del processament d 'opcions i ni el-c ni el-s s'ha subministrat l'opció, se suposa que el primer argument és el nom d'un fitxer que conté ordres de shell. Si bash Es invoca d'aquesta manera,$0 s'estableix en el nom del fitxer, i els paràmetres de posició s'estableixen en els arguments restants.Bash llegeix i executa comandes d'aquest fitxer; llavors surt.BashL'estat de sortida és l'estat de sortida de l'última ordre executada a l'script. Si no s'executen comandaments, l'estat de sortida és 0. Es fa un primer intent per obrir el fitxer al directori actual i, si no es troba un fitxer, el shell cerca els directoris enCAMÍ per al guió.

Invocació

A shell d'inici de sessió és aquell el primer caràcter de l'argument zero és a-, o un inici amb el--iniciar Sessió opció.

An interactiu shell és una iniciada sense arguments sense opció i sense la-c opció l'entrada i sortida estàndard estan connectats a terminals tal com determina isatty (3), o un inici amb el-i opció.PS1 s'estableix i $- inclou si bash és interactiu, permetent que un script de shell o un fitxer d'inici provi aquest estat.

Els següents paràgrafs descriuen combash executa els fitxers d'inici. Si algun dels fitxers existeix però no es pot llegir,bash informa un error. Els tildes s'expandeixen en els noms dels fitxers tal i com es descriu a l'ampliació de Tilde.

Quanbash s'invoca com un intèrpret d'inici de sessió interactiu o com a intèrpret d'ordres no interactiu amb el--iniciar Sessió opció, primer llegeix i executa comandes del fitxer / etc / profile , si aquest fitxer existeix. Després de llegir el fitxer, busca ~ / .bash_profile , ~ / .bash_login , i ~ / .profile , en aquest ordre, i llegeix i executa comandes del primer que existeix i és llegible. El--noprofile L'opció es pot utilitzar quan s'inicia el shell per inhibir aquest comportament.

Quan es tanqui una casella d'inici de sessió,bash llegeix i executa comandes del fitxer ~ /. Bash_logout , si existeix.

Quan s'inicia un intèrpret d'ordres interactiu que no és un intèrpret d'ordres d'inici de sessió,bash llegeix i executa comandes de ~ / .bashrc , si aquest fitxer existeix. Això pot ser inhibit mitjançant l 'ús de--norc opció. El--rcfile dossier opció obligaràbash per llegir i executar ordres de dossier en lloc de ~ / .bashrc .

Quanbash s'inicia de forma no interactiva: per executar un script shell, per exemple: busca la variableBASH_ENV en l'entorn, amplia el seu valor si apareix allí, i utilitza el valor expandit com el nom d'un fitxer per llegir i executar.Bash es comporta com si es va executar l'ordre següent:

si -n "$ BASH_ENV"; llavors. "$ BASH_ENV"; fi

però el valor de laCAMÍ La variable no s'utilitza per buscar el nom del fitxer.

Sibash s'invoca amb el nomsh, intenta imitar el comportament de l 'inici de les versions històriques desh tan a prop com sigui possible, al mateix temps que s'ajusta a l'estàndard POSIX. Quan s'invoca com a intèrpret d'ordres interactiu o un intèrpret d'ordres no interactiu amb el--iniciar Sessió opció, primer intenta llegir i executar comandaments / etc / profile i ~ / .profile , en aquest ordre. El--noprofile L'opció es pot utilitzar per inhibir aquest comportament. Quan s'invoca com a intèrpret d'ordres interactiu amb el nom sh, bash busca la variableENV, amplia el seu valor si es defineix i utilitza el valor expandit com el nom d'un fitxer per llegir i executar. Des que es va invocar un intèrpret d'ordres comsh no intenta llegir i executar ordres de qualsevol altre fitxer d 'inici, el--rcfile L'opció no té efecte. Una petxina no interactiva invocada amb el nomsh no intenta llegir cap altre fitxer d'inici. Quan s'invoca com ash, bash entra posix mode després de llegir els fitxers d'inici.

Quanbash s'inicia a posix mode, com amb el--posix opció de línia d'ordres, segueix l'estàndard POSIX per als fitxers d'inici. En aquest mode, les petxines interactives expandeixen elENV la variable i les ordres es llegeixen i s'executen a partir del fitxer el nom del qual és el valor expandit. No es llegeixen altres fitxers d'inici.

Bash intenta determinar quan s'està executant el dimoni de shell remot, en general rshd . Si bash determina que s'està executant rshd , llegeix i executa comandes de ~ / .bashrc , si aquest fitxer existeix i es pot llegir. No ho farà si s'invoca comsh. El--norc L'opció es pot utilitzar per inhibir aquest comportament, i l'opció--rcfile L'opció es pot utilitzar per a forçar que es llegeixi un altre fitxer, però rshd generalment no invoca el intèrpret d'ordres amb aquestes opcions o permet que es puguin especificar.

Si el shell es comença amb l'identificador d'usuari efectiu (grup) no igual que l'identificador d'usuari real (grup) i el-p L'opció no es proporciona, no es llegeixen els fitxers d'inici, les funcions de shell no són heretats de l'entorn, elSHELLOPTS La variable, si apareix en l'entorn, s'ignora, i l'identificador d'usuari efectiu s'estableix a l'id d'usuari real. Si el-p L'opció es proporciona a invocació, el comportament de l'inici és el mateix, però l'identificador d'usuari efectiu no es restablirà.

Definicions

A la resta d'aquest document s'utilitzen les següents definicions:

  • En blanc: Un espai o pestanya.
  • Paraula: Una seqüència de caràcters considerada com una sola unitat per l'intèrpret d'ordres. També conegut com a token.
  • Nom: A paraula que consisteix únicament en caràcters alfanumèrics i guions baixos, i comença amb un caràcter alfabètic o un guió baix. També conegut com aidentificador.
  • Metacharacter: Un personatge que, quan no esmentat, separa paraules. Un dels següents:| &; () <> fitxa d'espai
  • Operador de control: A token que realitza una funció de control. És un dels símbols següents: || & && ; ;; ( ) |

Paraules reservades

Paraules reservades són paraules que tenen un significat especial a la closca. Les paraules següents es reconeixen com a reservades quan no estan seleccionades i la primera paraula d'un comandament simple o la tercera paraula d'uncasoper a comandament:

! el cas fas elif més esac fi per a la funció si està seleccionat fins que mentre {} el temps

Shell Grammar: comandaments simples

A comanda simple és una seqüència d'assignacions de variables opcionals seguides peren blanc- paraules separades i redireccions i acabades per a operador de control . La primera paraula especifica la comanda que s'executarà, i es passa com a argument zero. Les paraules restants es passen com a arguments a la comanda invocada.

El valor de retorn d'a comanda simple és el seu estat de sortida, o 128+ n si la comanda finalitza per senyal n .

Pipelines

A canonada és una seqüència d'un o més comandaments separats pel personatge|. El format d'un oleoducte és temps -p ! comandament | comanda2 … .

La sortida estàndard de comandament es connecta a través d'un tub a l'entrada estàndard de comanda2 . Aquesta connexió es realitza abans de qualsevol redirecció especificada per l'ordre.

Si la paraula reservada! precedeix un oleoducte, l'estat de sortida d'aquest oleoducte és el NO lògic de l'estat de sortida de l'últim comandament. En cas contrari, l'estat de la canonada és l'estat de sortida de l'últim comandament. L'intèrpret d'ordres espera que finalitzin tots els comandaments del pipeline abans de tornar un valor.

Si eltemps la paraula reservada precedeix a un oleoducte, el temps transcorregut, així com l'usuari i el sistema que consumeix la seva execució es registren quan finalitza la durada. El-p L'opció canvia el format de sortida a la especificada per POSIX. ElTIMEFORMAT La variable es pot establir en una cadena de format que especifiqui com s'ha de mostrar la informació de temporització.

Cada comanda en pipeline s'executa com un procés separat (en un subshell, per exemple).

Llistes

A llista és una seqüència d'una o més canonades separades per un dels operadors;, &, &&, o||, i opcionalment acabada per un de;, &, o.

D'aquests operadors de la llista,&& i|| tenen la mateixa prioritat, seguit per; i&, que tenen la mateixa prioritat.

Una seqüència d'una o més línies noves pot aparèixer en un llista en comptes d'un punt i coma per delimitar les ordres.

Si l'operador de control finalitza una ordre&, la casella executa la comanda a la casella de verificació fons en un subsòl. El shell no espera que acabi la comanda, i l'estat de retorn és 0. Comandes separades per a; s'executen de manera seqüencial; la closca espera que cada ordre finalitzi al seu torn. L'estat de retorn és l'estat de sortida de l'última ordre executada.

Els operadors de control&& i|| denota les llistes AND i les llistes O, respectivament. Una llista AND té el formulari

comanda1 && comanda2

comanda2 s'executa si, i només si, comanda1 retorna un estat de sortida de zero.

Una llista OR té el formulari

comanda1 || comanda2

comanda2 s'executa si i només si comanda1 retorna un estat de sortida no zero. L'estat de retorn de les llistes AND i OR és l'estat de sortida de l'última ordre executada a la llista.

Comandaments compostos

A comanda composta és una de les següents:

(llista) : llista s'executa en un subshell. Les assignacions variables i les ordres integrades que afecten l'entorn del shell no romanen en vigor després de completar l'ordre. L'estat de retorn és l'estat de sortida de llista .

{llista; } : llista simplement s'executa en l'entorn de shell actual. llista ha de finalitzar amb una nova línia o punt i coma. Això es coneix com a comanda grupal . L'estat de retorn és l'estat de sortida de llista . Tingueu en compte que, a diferència dels metadatos( i), { i} són paraules reservades i s'ha de produir quan es permet que es reconegui una paraula reservada. Com que no provoquen un salt de paraula, han de ser separats llista per espais en blanc.

((expressió)) : The expressió es valora segons les regles descrites a continuació Avaluació aritmètica. Si el valor de l'expressió no és zero, l'estat de devolució és 0; en cas contrari, l'estat de devolució és 1. Això equival exactament adeixar ' expressió '.

expressió : Retorna un estat de 0 o 1 depenent de l'avaluació de l'expressió condicional expressió . Les expressions es componen de les primàries que es descriuen a continuació Expressions condicionals. La divisió de paraules i l'extensió de nom de ruta no es realitzen en les paraules entre la i; L'expansió de la tilde, l'expansió de paràmetres i variables, l'expansió aritmètica, la substitució de comandaments, la substitució de processos i l'eliminació de quotes es realitzen.

Quan el== i!= s'utilitzen els operadors, la cadena a la dreta de l'operador es considera un patró i es combina d'acord amb les regles descrites a continuacióPatronatge a joc. El valor retornat és 0 si la cadena coincideix o no coincideix amb el patró, respectivament, i 1 en cas contrari. Es pot citar qualsevol part del patró per obligar-lo a coincidir com una cadena.

Les expressions es poden combinar utilitzant els següents operadors, que figuren en un ordre decreixent de prioritat:

  • (expressió): torna el valor de expressió . Això es pot utilitzar per anul·lar la prioritat normal dels operadors.
  • ! expressio n: És cert si expressió és fals.
  • expressió1 && expressió2 : És cert si ambdós expressió1 i expressió2 són veritables.
  • expressió1 || expressió2 : És veritat si n'hi ha cap expressió1 o expressió2 és cert.

El&& i|| els operadors no avaluen expressió2 si el valor de expressió1 és suficient per determinar el valor retornat de tota l'expressió condicional.

  • per a nom in paraula ; fer llista ; fet: La llista de paraules següentsin s'amplia, generant una llista d'elements. La variable nom s'estableix a cada element d'aquesta llista al seu torn, i llista s'executa cada vegada. Si elin paraula s'omet, elper a comanda s'executa llista una vegada per cada paràmetre de posició que s'estableix. L'estat de retorn és l'estat de sortida de l'última ordre que s'executa. Si l'ampliació dels elements següentsin dóna com a resultat una llista buida, no s'executen comandaments i l'estat de devolució és 0.
  • per a (( expr1 ; expr2 ; expr3 )) ; fer llista ; fet: Primer, l'expressió aritmètica expr1 es valora segons les regles descrites a continuacióAvaluació aritmètica. L'expressió aritmètica expr2 s'avalua de manera repetida fins que s'avalua a zero. Cada cop expr2 s'avalua amb un valor diferent de zero, llista s'executa i l'expressió aritmètica expr3 s'avalua. Si s'omet qualsevol expressió, es comporta com si avalués a 1. El valor retornat és l'estat de sortida de l'última ordre a llista que s'executi, o false si alguna de les expressions no és vàlida.
  • seleccioneu nom in paraula ; fer llista ; fet: La llista de paraules següentsin s'amplia, generant una llista d'elements. El conjunt de paraules ampliades s'imprimeix en l'error estàndard, cadascuna amb un número precedit. Si elin paraula s'omet, s'imprimeixen els paràmetres de posició. El PS3 es mostra l'indicatiu i es llegeix una línia de l'entrada estàndard. Si la línia consisteix en un número corresponent a una de les paraules mostrades, llavors el valor de nom està establert en aquesta paraula. Si la línia està buida, es tornaran a mostrar les paraules i l'indicatiu. Si es llegeix EOF, es completa l'ordre. Es produeix qualsevol altre valor llegit nom s'ha de configurar com a nul. La línia de lectura es guarda a la variableRESPOSTA. El llista s'executa després de cada selecció fins atrencar s'executa la comanda. Estat de sortida deseleccioneu és l'estat de sortida de l'última ordre executada a llista , o zero si no es van executar comandaments.
  • cas paraula in ( patró | patró : Acas La comanda s'expandeix per primera vegada paraula , i intenta combinar-lo contra cadascun patró al seu torn, utilitzant les mateixes regles coincidents que per a l'expansió del nom de la ruta. Quan es troba una coincidència, el corresponent llista s'executa. Després del primer partit, no s'intentaran coincidències posteriors. L'estat de sortida és zero si no coincideix cap patró. En cas contrari, és l'estat de sortida de l'última ordre executada a llista .
  • si llista ; llavors llista; i Elif llista ; llavors llista ; … altra cosa llista ; fi: Elsi llista s'executa. Si el seu estat de sortida és zero, elllavors llista s'executa. En cas contrari, cadascun Elif llista s'executa al seu torn, i si el seu estat de sortida és zero, el corresponentllavors llista s'executa i la comanda es completa. En cas contrari, elaltra cosa llista s'executa, si està present. L'estat de sortida és l'estat de sortida de l'última ordre executada, o zero si no hi ha cap condició verificada.
  • mentre llista ; fer llista ; fet i fins a llista ; fer llista ; fet: Thementre comanda contínuament executa lafer llista sempre que l'últim comandament a llista retorna un estat de sortida de zero. Elfins a La comanda és idèntica a lamentre ordre, excepte que la prova està negada; elfer llista s'executa sempre que l 'última ordre a llista retorna un estat de sortida no zero. L 'estat de sortida delmentre ifins a Les ordres són l'estat de sortida de l'últimfer llista comanda executada, o zero si no s'ha executat cap.
  • funció nom () { llista ; }: Això defineix una funció anomenada nom . El cos de la funció és la llista d'ordres entre {i}. Aquesta llista s'executa siempre que nom s'especifica com el nom d'una ordre simple. L'estat de sortida d'una funció és l'estat de sortida de l'última ordre executada en el cos.

Comentaris

En un intèrpret d'ordres no interactiu o en un intèrpret d'ordres interactiu en què el comentaris_interactius opció albotiga builtin està habilitat, començant una paraula amb# fa que la paraula i tots els caràcters restants d'aquesta línia siguin ignorats. Una carcassa interactiva sense lacomentaris_interactius L'opció habilitada no permet comentaris. El comentaris_interactius L'opció està activada de manera predeterminada a les petxines interactives.

Cites

Cites s'utilitza per eliminar el significat especial de certs caràcters o paraules al shell. La cotització es pot utilitzar per desactivar el tractament especial per a caràcters especials, per evitar que les paraules reservades siguin reconegudes com a tals i per evitar l'expansió dels paràmetres.

Cadascun dels metacaracteres llista a dalt a sotaDefinicions té un significat especial per a la closca i s'ha de citar si vol representar-se.

Quan s'utilitzen les instal · lacions d 'expansió de l' historial de comandaments, el expansió de la història caràcter, en general!, s'ha de citar per evitar l'expansió de la història.

Hi ha tres mecanismes de citació: el caràcter d'escapament , cometes simples i cometes dobles.

Una barra invertida no citada () és el caràcter d'escapament . Conserva el valor literal del següent caràcter que segueix a excepció de . Si a apareix el parell i la barra invertida no es cita, la es tracta com una continuació de la línia (és a dir, s'elimina de la transmissió d'entrada i s'ignora de manera efectiva).

La inclusió de caràcters en cometes simples conserva el valor literal de cada caràcter dins de les cometes. És possible que no es produeixi una quota única entre cites simples, fins i tot quan sigui precedida d'una barra invertida.

La inclusió de caràcters en cometes dobles conserva el valor literal de tots els caràcters dins de les cometes, a excepció de$, ', i. Els caràcters$ i' conserven el seu significat especial dins de les cometes dobles. La barra invertida conserva el seu significat especial només quan se segueix un dels següents caràcters:$, ', ', , o. Una cotització doble es pot citar dins de les cometes dobles precedint-la amb una barra invertida.

Els paràmetres especials* i@ tenen un significat especial quan en cometes dobles.

Paraules del formulari$' cadena 'es tracten especialment. La paraula s'expandeix a cadena , amb caràcters d'escapament de la barra invertida substituïts segons l'especificat per l'estàndard ANSI C. Les seqüències d'escapament de la barra invertida, si estan presents, es decodifican de la manera següent:

  • a: alerta (campana)
  • b: retrocés
  • e: un personatge d'escapament
  • f: feed del formulari
  • n: nova línia
  • r: retorn de carro
  • t: pestanya horitzontal
  • v: pestanya vertical
  • \: barra invertida
  • ': cita individual
  • nnn : el caràcter de vuit bits el valor del qual és el valor octal nnn (un a tres dígits)
  • x HH : el caràcter de vuit bits el valor del qual és el valor hexadecimal HH (un o dos dígits hexadecimals)
  • c x : un control- x personatge

El resultat expandit es cita en un sol terme, com si el signe del dòlar no hagués estat present.

Una cadena de dues cites precedida d'un signe de dòlar ($) farà que la cadena es tradueixi segons la configuració regional actual. Si la configuració regional actual ésC oPOSIX, s'ignora el signe del dòlar. Si la cadena es tradueix i es reemplaça, la substitució es cita dues vegades.

Paràmetres

A paràmetre és una entitat que emmagatzema valors. Pot ser un nom , un número o un dels caràcters especials que figuren a sotaParàmetres especials. Per a propòsits de shell, a variable és un paràmetre denotat per a nom . Una variable té una valor i zero o més atributs . Els atributs s'assignen mitjançant eldeclarar comandament incorporat.

S'estableix un paràmetre si s'ha assignat un valor. La cadena nul·la és un valor vàlid. Un cop establerta una variable, només es pot desactivar mitjançant l'ús de la variablesense configurar comandament incorporat.

A variable es pot assignar mitjançant una declaració del formulari: nom = valor

Si valor no es dóna, la variable està assignada a la cadena nul·la. Tots valors experimenta l'expansió de la tila, el paràmetre i l'expansió variable, la substitució de comandaments, l'expansió aritmètica i l'eliminació de quotes. Si la variable té la sevaenter conjunt d'atributs, llavors valor està subjecte a l'expansió aritmètica, fins i tot si l'expansió $ ((…)) no s'utilitza. La divisió de paraules no es realitza, a excepció de'$@' tal com s'explica a continuacióParàmetres especials. No es fa l'expansió de la ruta d'accés. Les declaracions de tasques també poden aparèixer com a arguments a ladeclarar, tipografia, exportació, Llegeix només, i local comandaments integrats.

Paràmetres posicionals

A paràmetre de posició és un paràmetre denotat per un o més dígits, que no sigui el dígit únic 0. Els paràmetres posicionals s'assignen a partir dels arguments del shell quan s'invoca, i es poden reassignar utilitzant laconjunt comandament incorporat. Els paràmetres posicionals no es poden assignar a les declaracions d'assignació. Els paràmetres de posició es reemplacen temporalment quan s'executa una funció de shell.

Quan s'expandeix un paràmetre de posició que consta de més d'un sol dígit, s'ha de tancar amb claus.

Paràmetres especials

La closca tracta diversos paràmetres especialment. Aquests paràmetres només es poden fer referència; l'assignació a ells no està permesa.

  • *: S'expandeix als paràmetres de posició, a partir d'un. Quan l'expansió es produeix dins de les cometes dobles, s'amplia a una sola paraula amb el valor de cada paràmetre separat pel primer caràcter delIFS variable especial. Això és, "$*"és equivalent a"$1 c $2 c ", on c és el primer caràcter del valor delIFS variable. SiIFS no es troba, els paràmetres estan separats per espais. SiIFS és nul, els paràmetres s'uneixen sense separadors que intervenen.
  • @: S'expandeix als paràmetres de posició, a partir d'un. Quan l'expansió es realitza dins de cometes dobles, cada paràmetre s'amplia a una paraula separada. Això és, "$@"és equivalent a"$1' '$2"… Quan no hi ha paràmetres de posició"$@"i$@ampliar a res (s'eliminen).
  • #: S'expandeix al nombre de paràmetres de posició en decimal.
  • ?: S'expandeix a l'estat de la canonada del primer pla executat recentment.
  • -: S'expandeix als indicadors d 'opció actual com s'especifica a la invocació, per laconjunt la comanda integrada o les que estableix el propi shell, com ara el-i opció.
  • $: S'expandeix a la identificació del procés del shell. En un () subshell, s'expandeix a l'identificador del procés del shell actual, no el subshell.
  • !: S'expandeix a l'ID del procés de l'ordre de fons més recent (asíncron).
  • 0: S'expandeix al nom del shell o shell script. Això s'estableix a la inicialització de l'intèrpret d'ordres. Sibash s'invoca amb un fitxer de comandaments,$0 s'estableix en el nom d'aquest fitxer. Sibash s'inicia amb el-c opció, llavors$0 s'estableix en el primer argument després de la cadena a executar, si n'hi ha un. En cas contrari, s'estableix el nom del fitxer utilitzat per invocarbash, donat per l'argument zero.
  • _: En iniciar l'intèrpret d'ordres, configureu el nom del fitxer absolut del shell o shell que s'executa com es passa a la llista d'arguments. Posteriorment, s'expandeix a l'últim argument de l'ordre anterior, després de l'expansió. També s'estableix el nom del fitxer complet de cada comanda executat i col·locat en l'entorn exportat a aquesta comanda. En comprovar el correu, aquest paràmetre conté el nom del fitxer de correu que s'està verificant actualment.

Variables del tipus Shell

Les següents variables són definides pel shell:

BASH: S'expandeix al nom del fitxer complet utilitzat per invocar aquesta instància debash.

BASH_VERSINFO: Una variable de matriu de lectura, els membres tenen informació de versió per a aquesta instància de bash. Els valors assignats als membres de la matriu són els següents:

  • BASH_VERSINFO 0: el número de versió principal (el alliberament )
  • BASH_VERSINFO 1: el número de versió menor (el versió )
  • BASH_VERSINFO 2: el nivell del pegat
  • BASH_VERSINFO 3: La versió de compilació
  • BASH_VERSINFO 4: l'estat de la versió ( beta1, per exemple)
  • BASH_VERSINFO 5: el valor deMACHTYPE

BASH_VERSION: S'expandeix a una cadena que descriu la versió d 'aquesta instància debash.

COMP_CWORD: Un índex a$ {COMP_WORDS} de la paraula que conté la posició actual del cursor. Aquesta variable només està disponible en funcions de shell invocades per les instal·lacions programables de compleció.

COMP_LINE: La línia de comandaments actual. Aquesta variable només està disponible en funcions de shell i comandaments externs invocats per les instal·lacions programables de compleció.

COMP_POINT: Índex de la posició actual del cursor respecte al començament de l'ordre actual. Si la posició actual del cursor es troba al final de l'ordre actual, el valor d'aquesta variable és igual a$ {# COMP_LINE}. Aquesta variable només està disponible en funcions de shell i comandaments externs invocats per les instal·lacions programables de compleció.

COMP_WORDS: Una variable de matriu que consta de les paraules individuals de la línia d'ordres actual. Aquesta variable només està disponible en funcions de shell invocades per les instal·lacions programables de compleció.

DIRSTACK: Una variable de matriu que conté els continguts actuals de la pila de directoris. Els directoris apareixen a la pila en l 'ordre que mostren eldirs incorporat. L'assignació a membres d'aquesta variable de matriu es pot utilitzar per modificar directoris ja en la pila, però lapushd ipopd S'han d'utilitzar les construïdes per afegir i eliminar directoris. L'assignació a aquesta variable no canviarà el directori actual. SiDIRSTACK no es troba, perd les seves propietats especials, fins i tot si es reinicia posteriorment.

EUID: S'expandeix a l'identificador d'usuari efectiu de l'usuari actual, inicialitzat a l'inici del shell. Aquesta variable és readonly.

FUNCNAME: El nom de qualsevol funció de shell executada actualment. Aquesta variable només existeix quan s'està executant una funció de shell. Tasques aFUNCNAME no tenen efecte i retornen un estat d'error. SiFUNCNAME no es troba, perd les seves propietats especials, fins i tot si es reinicia posteriorment.

GRUPS: Una variable de matriu que conté la llista de grups dels quals l'usuari actual és membre. Tasques aGRUPS no tenen efecte i retornen un estat d'error. SiGRUPS no es troba, perd les seves propietats especials, fins i tot si es reinicia posteriorment.

HISTCMD: El número d'historial o l'índex de la llista d'historial de la comanda actual. SiHISTCMD no es troba, perd les seves propietats especials, fins i tot si es reinicia posteriorment.

Cognom: Estableix automàticament el nom de l'amfitrió actual.

HOSTTYPE: S'estableix automàticament en una cadena que descriu de manera exclusiva el tipus de màquina sobre el qualbash s'està executant. El valor predeterminat depèn del sistema.

LINENO: Cada vegada que es fa referència a aquest paràmetre, el complement substitueix un nombre decimal que representa el número de línia seqüencial actual (començant per 1) dins d'un script o funció. Quan no està en un script o una funció, el valor substituït no es garanteix que sigui significatiu. SiLINENO no es troba, perd les seves propietats especials, fins i tot si es reinicia posteriorment.

MACHTYPE: S'estableix automàticament en una cadena que descriu completament el tipus de sistema en quèbash s'està executant en el GNU estàndard CPU-empresa-sistema format. El valor predeterminat depèn del sistema.

OLDPWD: El directori de treball anterior establert per lacd comandament.

OPTARG: El valor de l 'argument d' última opció processat pelgetopts comandament incorporat.

OPTIND: Índex del proper argument a processar pelgetopts comandament incorporat.

OSTYPE: S'estableix automàticament en una cadena que descriu el sistema operatiu en quèbash s'està executant. El valor predeterminat depèn del sistema.

PIPESTATUS: Una variable de matriu que conté una llista de valors d'estat de sortida dels processos de la canonada del primer pla executat més recentment, que només pot contenir un sol comandament.

PPID: L'identificador del procés dels pares del shell. Aquesta variable és readonly.

PWD: El directori de treball actual establert per lacd comandament.

RANDOM: Cada vegada que es fa referència a aquest paràmetre, es genera un enter aleatori entre 0 i 32767. La seqüència de nombres aleatoris es pot inicialitzar assignant un valor a RANDOM. SiRANDOM no es troba, perd les seves propietats especials, fins i tot si es reinicia posteriorment.

RESPOSTA: Estableix a la línia d'entrada llegida per lallegir ordre builtin quan no es proporcionen arguments.

SECONDS: Cada vegada que es fa referència a aquest paràmetre, es retorna el nombre de segons des de la invocació de la closca. Si se li assigna un valorSECONDS, el valor retornat a les referències posteriors és el nombre de segons des de l'assignació més el valor assignat. Si SECONDS no es troba, perd les seves propietats especials, fins i tot si es reinicia posteriorment.

SHELLOPTS: Una llista separada per punts de les opcions de la shell habilitada. Cada paraula a la llista és un argument vàlid per al-o opció alconjunt comandament incorporat. Les opcions que apareixen aSHELLOPTS són els que s'informa com on perestablir -o. Si aquesta variable està en l'entorn quanbash s'inicia, cada opció shell de la llista serà habilitada abans de llegir qualsevol fitxer d'inici. Aquesta variable és readonly.

SHLVL: Incrementat per una cada vegada que una instància debash s'inicia.

UID: S'expandeix a l'identificador d'usuari de l'usuari actual, inicialitzat a l'inici del shell. Aquesta variable és readonly.

El shell utilitza les següents variables. En alguns casos,bash assigna un valor predeterminat a una variable; esmentats casos.

BASH_ENV: Si aquest paràmetre s'estableix quanbash està executant un script de shell, el seu valor s'interpreta com un nom de fitxer que conté ordres per inicialitzar el shell, com a ~ / .bashrc . El valor de BASH_ENV està subjecte a l'expansió de paràmetres, la substitució de comandaments i l'expansió aritmètica abans d'interpretar-se com un nom de fitxer.CAMÍ no s'utilitza per buscar el nom del fitxer resultant.

CDPATH: El camí de cerca de lacd comandament. Aquesta és una llista de directoris separada per dos punts en què el shell busca els directoris de destinació especificats per lacd comandament. Un valor de mostra és ".: ~: / Usr".

COLUMNS: Utilitzat per laseleccioneu builtin per determinar l'amplada del terminal quan imprimiu les llistes de selecció. Config. Automàticament després del rebut d'un SIGWINCH.

COMPREPLY: Una variable de matriu de la qualbash llegeix les possibles terminacions generades per una funció de shell invocada per la facilitat de finalització programable.

FCEDIT: L'editor per defecte per a lafc comandament incorporat.

FIGNORE: Una llista separada de sufixos per separar els punts quan es realitza la finalització del nom del fitxer. Un nom de fitxer el sufix coincideix amb una de les entrades aFIGNORE està exclòs de la llista de noms de fitxer coincidents. Un valor de mostra és ". O: ~".

GLOBIGNORE: Una llista de patrons separada per dos punts que defineix el conjunt de noms de fitxers que s'ignorarà per l'expansió del nom de la ruta. Si un nom de fitxer coincident amb un patró d'expansió de nom de ruta també coincideix amb un dels patronsGLOBIGNORE, s'elimina de la llista de coincidències.

HISTCONTROL: Si s'estableix un valor de Ignorespace , línies que comencen per aespai El caràcter no s'introdueix a la llista d'historial. Si s'estableix un valor de ignoredups , no s'introdueixen línies que coincideixin amb la darrera línia de l'historial. Un valor de ignoreboth combina les dues opcions. Si s'estableix o si s'estableix en qualsevol altre valor que els anteriors, totes les línies llegides per l'analitzador es desen a la llista d'històries, subjectes al valor deHISTIGNORE. La funció de la variable es reemplaça per HISTIGNORE. Les línies segones i posteriors d'un comandament compost múltiple no són provades i s'afegeixen a la història independentment del valor deHISTCONTROL.

HISTFILE: El nom del fitxer en què es guarda l'historial de comandes. El valor predeterminat és ~ / .bash_history . Si no s'estableix, l'historial de comandaments no es desarà quan surti una casella interactiva.

HISTFILESIZE: El nombre màxim de línies que conté el fitxer de la història. Quan es assigna un valor a aquesta variable, el fitxer d'historial es trunca, si cal, per no contenir més d'aquest nombre de línies. El valor per defecte és 500. El fitxer d'historial també es trunca a aquesta mida després d'escriure-lo quan surt una casella interactiva.

HISTIGNORE: Una llista de patrons separada per dos punts usada per decidir quines línies de comandes s'han de desar a la llista d'històries. Cada patró està ancorat al principi de la línia i ha de coincidir amb la línia completa (no implícit "*'s'afegeix). Cada patró es prova amb la línia després dels controls especificats perHISTCONTROL s'apliquen. A més dels patrons de coincidència del patró normal, "&'coincideix amb la línia de l'historial anterior. '&'es pot escapar usant una barra invertida; la barra invertida s'elimina abans d'intentar una coincidència. Les línies segones i posteriors d'un comandament compost múltiple no són provades i s'afegeixen a la història independentment del valor deHISTIGNORE.

HISTSIZE: El nombre de comandes a recordar en l'historial de comandaments. El valor predeterminat és 500.

INICI: El directori principal de l'usuari actual; l 'argument predeterminat per alcd comandament incorporat. El valor d'aquesta variable també s'utilitza quan es fa l'expansió de la tila.

HOSTFILE: Conté el nom d'un fitxer en el mateix format que / etc / hosts que s'ha de llegir quan el shell necessita completar un nom d'amfitrió. La llista de possibles terminacions de nom de host es pot canviar mentre el shell s'està executant; la propera vegada que es compleixi la finalització de nom de la màquina després de canviar el valor,bash afegeix el contingut del nou fitxer a la llista existent. Si HOSTFILE està establert, però no té cap valor,bash intenta llegir / etc / hosts per obtenir la llista de possibles terminacions de nom de host. QuanHOSTFILE no es troba eliminada, la llista de nom d'amfitrió està desactivada.

IFS: The Separador de camp intern s'utilitza per a la divisió de paraules després de l 'expansió i per dividir les línies en paraules ambllegir comandament incorporat. El valor predeterminat és "''.

IGNOREEOF: Controla l'acció d'un intèrpret d'ordres interactiu a la recepció d'unEOF caràcter com a entrada única. Si s'estableix, el valor és el nombre de consecutiusEOF caràcters que s'han d'escriure com els primers caràcters abans d'una línia d'entradabash sortides. Si la variable existeix però no té un valor numèric o no té valor, el valor predeterminat és 10. Si no existeix,EOF significa el final de l'entrada al shell.

INPUTRC: El nom del fitxer del fitxerreadline Arrencada d 'inici, sobrevalorant el valor predeterminat de ~ / .inputrc .

LANG: S'utilitza per determinar la categoria local per a qualsevol categoria que no s'hagi seleccionat específicament amb una variable que comenci perLC_.

LC_ALL: Aquesta variable anul·la el valor deLANG i qualsevol altraLC_ variable que especifica una categoria local.

LC_COLLATE: Aquesta variable determina l'ordre de col·lació que s'utilitza quan es classifiquen els resultats de l'extensió del nom de la ruta i determina el comportament de les expressions de rang, les classes d'equivalència i les seqüències de compilació dins de l'extensió de la ruta i la concordança de patrons.

LC_CTYPE: Aquesta variable determina la interpretació dels caràcters i el comportament de les classes de caràcters dins de l'extensió del nom de la ruta i la concordança de patrons.

LC_MESSAGES: Aquesta variable determina la configuració local usada per traduir cadenes de dues cites precedides per a$.

LC_NUMERIC: Aquesta variable determina la categoria local usada per al formatat de números.

LINES: Utilitzat per laseleccioneu builtin per determinar la longitud de la columna per imprimir llistes de selecció. Config. Automàticament després del rebut d'un SIGWINCH.

CORREU: Si aquest paràmetre s'estableix en un nom de fitxer i el fitxerMAILPATH la variable no està configurada,bashinforma a l'usuari de l'arribada del correu en el fitxer especificat.

MAILCHECK: Especifica la freqüència amb què (en segons)bash comprova el correu. El valor predeterminat és de 60 segons. Quan és hora de consultar el correu, el shell ho fa abans de mostrar l'indicador principal. Si aquesta variable no s'estableix o s'estableix en un valor que no és un número major o igual que zero, la casella inhabilita la comprovació de correu.

MAILPATH: Una llista de noms de fitxers separada per punts per verificar el correu. El missatge que es vol imprimir quan arriba el correu en un arxiu determinat es pot especificar separant el nom del fitxer del missatge amb un "?". Quan s'utilitza en el text del missatge,$_ s'expandeix al nom del fitxer de correu actual. Exemple:

MAILPATH = '/ var / mail / bfox? "Teniu correu": ~ / shell-mail? "$ _ Té correu!"'

Bash subministra un valor predeterminat per a aquesta variable, però la ubicació dels fitxers de correu d'usuari que utilitza és dependent del sistema (/ var / mail /$ USER).

OPTERR: Si s'estableix el valor 1,bash mostra els missatges d 'error generats pelgetopts comandament incorporat.OPTERR s'inicialitza a 1 cada vegada que s'invoca el intèrpret d'ordres o s'executa una seqüència de comandaments.

CAMÍ: La ruta de cerca per comandes. Es tracta d'una llista de directoris separada per dos punts en què el shell busca ordres. La ruta predeterminada és dependent del sistema i l'administrador que instal·la l'estableixbash. Un valor comú és "/ usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORRECT: Si aquesta variable es troba en l'entorn quanbash comença, entra la closca mode posix abans de llegir els fitxers d'inici, com si el--posix S'ha proporcionat l'opció d'invocació. Si s'estableix mentre el shell s'està executant,bash habilita mode posix com si l'ordre set -o posix s'havia executat.

PROMPT_COMMAND: Si s'estableix, el valor s'executa com una ordre abans d'emetre cada indicador principal.

PS1: El valor d'aquest paràmetre s'expandeix i s'utilitza com a cadena d'ordre principal. El valor predeterminat és " s- v $''.

PS2: El valor d'aquest paràmetre s'expandeix com ambPS1 i s'utilitza com la seqüència secundària de la cadena. El valor per defecte és "> ''.

PS3: El valor d 'aquest paràmetre s'utilitza com a indicador delseleccioneu comandament.

PS4: El valor d'aquest paràmetre s'expandeix com ambPS1, i el valor s'imprimeix abans de cada ordrebash es mostra durant un seguiment d'execució. El primer personatge dePS4 es reprodueix diverses vegades, segons sigui necessari, per indicar diversos nivells d'indirecció. El valor per defecte és "+ ''.

TIMEFORMAT: El valor d'aquest paràmetre s'utilitza com una cadena de format que especifica com la informació de temporització de canonades prefixada amb latemps s'ha de mostrar la paraula reservada. El % El caràcter introdueix una seqüència d'escapament que s'expandeix a un valor de temps o altra informació. Les seqüències d'escapament i els seus significats són les següents. Les claus indiquen porcions opcionals.

  • %%: Un literal%
  • % p l R: el temps transcorregut en segons
  • % p l U: nombre de segons de CPU gastats en mode d'usuari
  • % p l S: nombre de segons de CPU gastats en mode de sistema
  • % P: El percentatge de CPU, calculat com (% U +% S) /% R

L'opció opcional p és un dígit que especifica el precisió , el nombre de dígits fraccionaris després d'un punt decimal. Un valor de 0 no fa que es generi cap punt o fracció decimal. Com a màxim tres llocs després del punt decimal es poden especificar; valors de p Majors de 3 es canvien a 3. Si p no s'especifica, s'utilitza el valor 3.

L'opció opcionall especifica un format més llarg, inclosos minuts, del formulari MM m SS . FF s. El valor de p determina si s'inclou o no la fracció.

Si aquesta variable no està establerta,bash actua com si tingués el valor $ ' nreal t% 3lR nuser t% 3lU nsys% 3lS'. Si el valor és nul, no es mostrarà la informació de temporització. S'afegeix una nova línia final quan es mostra la cadena de format.

TMOUT: Si s'estableix un valor superior a zero,TMOUT es tracta com el temps d 'espera predeterminat per alllegir incorporat. Elseleccioneu La comanda finalitza si l'entrada no arriba desprésTMOUT segons en què l'entrada prové d'un terminal.En un intèrpret d'ordres interactiu, el valor s'interpreta com el nombre de segons que cal esperar per a l'entrada després d'emetre l'indicador principal.Bash finalitza després d'esperar durant aquest nombre de segons si l'entrada no arriba.

Reprendre automàticament: Aquesta variable controla com interactua la closca amb l'usuari i el control de feina. Si s'estableix aquesta variable, els comandaments de simple paraula senzilla sense redireccions es tracten com a candidats per a la represa d'un treball aturat existent. No es permet cap ambigüitat. Si hi ha més d'una tasca iniciada amb la cadena mecanografiada, se selecciona la feina més recentment accessada. El nom d'un treball aturat, en aquest context, és la línia d'ordres utilitzada per iniciar-la. Si s'estableix el valor exacte , la cadena proporcionada ha de coincidir exactament amb el nom d'un treball aturat; si està establert subcadena , la cadena proporcionada ha de coincidir amb una subcadena del nom d'un treball aturat. El subcadena El valor proporciona funcionalitat anàloga a la%? identificador de feina. Si s'estableix en qualsevol altre valor, la cadena proporcionada ha de ser