De Linux-opdracht Bash is eensh-compatibele opdrachttaal-interpreter die opdrachten uitvoert die zijn gelezen van de standaardinvoer of van een bestand.Bash bevat ook handige functies van de Korn- en C-shells (ksh encsh).
Bash-opties
Naast de shell-opties met één karakter gedocumenteerd in de beschrijving van dereeks ingebouwd commando,bash interpreteert de volgende opties wanneer deze wordt aangeroepen:
- -C draad: Als het-C optie is aanwezig, dan worden opdrachten gelezen draad . Als er argumenten na de draad , ze worden toegewezen aan de positionele parameters, te beginnen met$0.
- -ik: Als het-ik optie is aanwezig, de shell is interactieve .
- l: Makenbash handelen alsof het is aangeroepen als login-shell.
- -r: Als het-r optie is aanwezig, de shell wordt beperkt.
- -s: Als het-s optie aanwezig is, of als er geen argumenten overblijven na de optieverwerking, dan worden opdrachten gelezen van de standaardinvoer. Met deze optie kunnen de positionele parameters worden ingesteld bij het aanroepen van een interactieve shell.
- -D: Een lijst met alle double-quoted strings voorafgegaan door$ wordt afgedrukt op de standaarduitvoer. Dit zijn de strings die onderhevig zijn aan taalvertaling wanneer de huidige locale dat niet isC ofPOSIX. Dit impliceert de -n keuze; er worden geen opdrachten uitgevoerd.
- - + O shopt_option : shopt_option is een van de shell-opties die worden geaccepteerd door deshopt ingebouwde. Als shopt_option is aanwezig,-O stelt de waarde van die optie in, en+ O maakt het ongedaan. Als shopt_option wordt niet geleverd, de namen en waarden van de shell-opties worden geaccepteerd doorshopt worden afgedrukt op de standaarduitvoer. Als de aanroepingsoptie is + O, de uitvoer wordt weergegeven in een indeling die opnieuw kan worden gebruikt als invoer.
- --: EEN-- signaleert het einde van de opties en schakelt de verdere verwerking van opties uit. Alle argumenten na de-- worden behandeld als bestandsnamen en argumenten. Een argument van- is gelijk aan--.
Bash interpreteert ook een aantal multi-karakter opties. Deze opties moeten op de opdrachtregel worden weergegeven voordat de opties voor één teken worden herkend:
- --dump-po-strings: Gelijk aan-D, maar de uitvoer bevindt zich in de GNU gettext po (draagbaar object) bestandsformaat.
- --dump-strings: Gelijk aan-D.
- --helpen: Een gebruiksbericht weergeven op standaarduitvoer en met succes afsluiten.
- --init-file: het dossier en --rcfile het dossier : Voer opdrachten uit vanaf het dossier in plaats van het standaard persoonlijke initialisatiebestand ~ / .Bashrc als de shell interactief is.
- --Log in: Gelijk aanl.
- --noediting: Gebruik de GNU nietLees regel bibliotheek om opdrachtregels te lezen wanneer de shell interactief is.
- --geen profiel: Lees het systeemdefinitieve opstartbestand niet / Etc / profile of een van de persoonlijke initialisatiebestanden ~ / .Bash_profile , ~ / .Bash_login of ~ / .Profile . Standaard,bash leest deze bestanden wanneer deze wordt opgeroepen als login-shell.
- --norc: Lees en voer het persoonlijke initialisatiebestand niet uit ~ / .Bashrc als de shell interactief is. Deze optie is standaard ingeschakeld als de shell wordt aangeroepen alssh.
- --posix: Verander het gedrag vanbash waarbij de standaardwerking verschilt van de POSIX-standaard om te voldoen aan de norm ( posix-modus ).
- --beperkt: De shell wordt beperkt.
- --rpm-vereist: Maak de lijst met bestanden die nodig zijn om het shellscript uit te voeren. Dit impliceert '-n' en is onderhevig aan dezelfde beperkingen als het controleren van de compilatie van de compilatiecontrole; Backticks, tests en evals worden niet geparseerd, dus sommige afhankelijkheden kunnen worden gemist.
- --verbose: Gelijk aan-v.
- --versie: Toon versiegegevens voor deze instantie vanbash op de standaarduitvoer en sluit u succesvol af.
argumenten
Als argumenten blijven bestaan na het verwerken van de optie en geen van beide-C noch de-s optie is opgegeven, wordt aangenomen dat het eerste argument de naam is van een bestand met shell-opdrachten. Als bash wordt op deze manier aangeroepen,$0 is ingesteld op de naam van het bestand en de positionele parameters zijn ingesteld op de resterende argumenten.Bash leest en voert opdrachten uit dit bestand uit; dan verlaat.BashDe exit-status is de exit-status van de laatste opdracht die in het script is uitgevoerd. Als er geen opdrachten worden uitgevoerd, is de uitgangsstatus 0. Eerst wordt geprobeerd het bestand in de huidige map te openen en als er geen bestand wordt gevonden, doorzoekt de shell de directory's inPAD voor het script.
Aanroeping
EEN login shell is een wiens eerste karakter van argument nul een is-, of een begon met de--Log in keuze.
Een interactieve shell is een gestart zonder argumenten zonder argumenten en zonder de-C optie waarvan de standaard invoer en uitvoer beide zijn verbonden met terminals zoals bepaald door isatty (3), of een begon met de-ik keuze.PS1 is ingesteld en $- bevat als bash interactief is, waardoor een shell-script of opstartbestand deze status kan testen.
De volgende paragrafen beschrijven hoebash voert de opstartbestanden uit. Als een van de bestanden bestaat, maar niet kan worden gelezen,bash meldt een fout. Tildes worden uitgebreid in bestandsnamen zoals beschreven in Tilde Expansion.
Wanneerbash wordt aangeroepen als een interactieve login-shell of als een niet-interactieve shell met de--Log in optie, leest het eerst opdrachten uit en voert het uit / Etc / profile , als dat bestand bestaat. Na het lezen van dat bestand, zoekt het ernaar ~ / .Bash_profile , ~ / .Bash_login , en ~ / .Profile , in die volgorde, en leest en voert opdrachten uit van de eerste die bestaat en leesbaar is. De--geen profiel optie kan worden gebruikt wanneer de shell wordt gestart om dit gedrag te remmen.
Wanneer een login-shell wordt afgesloten,bash leest en voert opdrachten uit vanuit het bestand ~ / .Bash_logout , als het bestaat.
Wanneer een interactieve shell wordt gestart die geen login-shell is,bash leest en voert commando's uit van ~ / .Bashrc , als dat bestand bestaat. Dit kan worden geremd door het gebruik van de--norc keuze. De--rcfile het dossier optie dwingtbash om opdrachten te lezen en uit te voeren het dossier in plaats van ~ / .Bashrc .
Wanneerbash is niet-interactief gestart - om bijvoorbeeld een shellscript uit te voeren - het zoekt naar de variabeleBASH_ENV in de omgeving, breidt de waarde ervan uit als deze daar wordt weergegeven, en gebruikt de uitgevouwen waarde als de naam van een bestand om te lezen en uit te voeren.Bash gedraagt zich alsof de volgende opdracht is uitgevoerd:
als -n "$ BASH_ENV"; dan . "$ BASH_ENV"; fi
maar de waarde van dePAD variabele wordt niet gebruikt om naar de bestandsnaam te zoeken. Alsbash wordt aangeroepen met de naamsh, het probeert het opstartgedrag van historische versies van te imiterensh zo dicht mogelijk bij, maar ook conform de POSIX-standaard. Wanneer aangeroepen als een interactieve login-shell of een niet-interactieve shell met de--Log in optie, probeert het eerst opdrachten te lezen en uit te voeren / Etc / profile en ~ / .Profile , in die volgorde. De--geen profiel optie kan worden gebruikt om dit gedrag te remmen. Wanneer aangeroepen als een interactieve shell met de naam sh, bash zoekt naar de variabeleENV, breidt de waarde uit als deze is gedefinieerd en gebruikt de uitgevouwen waarde als de naam van een bestand om te lezen en uit te voeren. Omdat een shell is aangeroepen alssh probeert geen opdrachten uit andere opstartbestanden te lezen en uit te voeren, de--rcfile optie heeft geen effect. Een niet-interactieve shell aangeroepen met de naamsh probeert geen andere opstartbestanden te lezen. Wanneer opgeroepen alssh, bash betreedt posix modus nadat de opstartbestanden zijn gelezen. Wanneerbash is gestart in posix modus, zoals met de--posix opdrachtregeloptie, het volgt de POSIX-standaard voor opstartbestanden. In deze modus breiden interactieve shells deENV variabele en opdrachten worden gelezen en uitgevoerd vanuit het bestand waarvan de naam de uitgevouwen waarde is. Er worden geen andere opstartbestanden gelezen. Bash probeert te bepalen wanneer het wordt uitgevoerd door de externe shell daemon, gewoonlijk rshd . Als bash bepaalt dat het wordt uitgevoerd door rshd , het leest en voert commando's uit van ~ / .Bashrc , als dat bestand bestaat en leesbaar is. Het zal dit niet doen indien aangeroepen alssh. De--norc optie kan worden gebruikt om dit gedrag te remmen, en de--rcfile optie kan worden gebruikt om een ander bestand te dwingen om te worden gelezen, maar rshd roept over het algemeen de shell niet aan met die opties of laat ze niet specificeren. Als de shell wordt gestart met de effectieve gebruikers (groep) id niet gelijk aan de echte gebruikers (groep) id, en de-p optie is niet meegeleverd, er worden geen opstartbestanden gelezen, shell-functies worden niet van de omgeving overgenomen, deSHELLOPTS variabele, als deze in de omgeving wordt weergegeven, wordt genegeerd en de effectieve gebruikers-ID wordt ingesteld op de echte gebruikers-ID. Als het-p optie wordt geleverd bij aanroep, het opstartgedrag is hetzelfde, maar het effectieve gebruikers-ID wordt niet gereset. De volgende definities worden in de rest van dit document gebruikt: Gereserveerde woorden zijn woorden die een speciale betekenis hebben voor de schaal. De volgende woorden worden herkend als gereserveerd als ze niet worden vermeld en ofwel het eerste woord van een eenvoudige opdracht of het derde woord van agevalofvoor commando: ! case do done elif else esac fi voor functie indien in select dan tot terwijl {} tijd EEN eenvoudige opdracht is een reeks optionele variabeloewijzingen gevolgd doorblanco- gescheiden woorden en doorverwijzingen en beëindigd door een besturingsoperator . Het eerste woord geeft de uit te voeren opdracht aan en wordt doorgegeven als argument nul. De resterende woorden worden doorgegeven als argumenten voor de aangeroepen opdracht. De retourwaarde van een eenvoudige opdracht is de exit-status, of 128+ n als het commando wordt beëindigd door een signaal n . EEN pijpleiding is een reeks van een of meer opdrachten gescheiden door het teken|. Het formaat voor een pijplijn is tijd -p ! commando | command2 … . De standaarduitvoer van commando is via een buis verbonden met de standaardingang van command2 . Deze verbinding wordt uitgevoerd vóór eventuele omleidingen die door de opdracht zijn opgegeven. Als het gereserveerde woord! gaat vooraf aan een pijplijn, de exit-status van die pijplijn is de logische NOT van de exit-status van de laatste opdracht. Anders is de status van de pijplijn de exitstatus van de laatste opdracht. De shell wacht totdat alle opdrachten in de pijplijn zijn beëindigd voordat een waarde wordt geretourneerd. Als hettijd gereserveerd woord gaat vooraf aan een pijplijn, de verstreken en ook de tijd van de gebruiker en het systeem die door de uitvoering ervan wordt verbruikt, worden gerapporteerd wanneer de pijplijn eindigt. De-p optie verandert de uitvoerindeling naar die gespecificeerd door POSIX. DeTIJD FORMAAT variabele kan worden ingesteld op een opmaakstring die aangeeft hoe de timinginformatie moet worden weergegeven. Elke opdracht in een pijplijn wordt als een afzonderlijk proces uitgevoerd (bijvoorbeeld in een submap). EEN lijst is een reeks van een of meer pijplijnen gescheiden door een van de operators;, &, &&of||, en optioneel beëindigd door een van;, &of Van deze lijstoperatoren,&& en|| hebben dezelfde prioriteit, gevolgd door; en&, die dezelfde prioriteit hebben. Een reeks van een of meer nieuwe regels kan in a verschijnen lijst in plaats van een puntkomma om opdrachten af te bakenen. Als een opdracht wordt beëindigd door de bedieningspersoon&, de shell voert het commando uit in de achtergrond in een subshell. De shell wacht niet tot de opdracht is voltooid en de retourstatus is 0. Opdrachten gescheiden door een; worden achter elkaar uitgevoerd; de shell wacht tot elke opdracht om beurten eindigt. De retourstatus is de exitstatus van de laatst uitgevoerde opdracht. De besturingsoperators&& en|| duiden AND-lijsten en OR-lijsten aan. Een EN-lijst heeft de vorm command1 && command2 command2 wordt uitgevoerd als, en alleen als, command1 retourneert een exitstatus van nul. Een OR-lijst heeft de vorm command1 || command2 command2 wordt uitgevoerd als en alleen als command1 geeft een niet-nul-exitstatus. De retourstatus van AND- en OR-lijsten is de exit-status van de laatste opdracht die in de lijst wordt uitgevoerd. EEN samengestelde opdracht is een van de volgende: (lijst) : lijst wordt uitgevoerd in een subshell. Variabele toewijzingen en ingebouwde opdrachten die van invloed zijn op de omgeving van de shell blijven niet van kracht nadat de opdracht is voltooid. De retourstatus is de exitstatus van lijst . { lijst; } : lijst wordt gewoon uitgevoerd in de huidige shell-omgeving. lijst moet worden beëindigd met een nieuwe regel of puntkomma. Dit staat bekend als a groepsbevel . De retourstatus is de exitstatus van lijst . Merk op dat in tegenstelling tot de metatekens( en), { en} zijn Gereserveerde woorden en moet voorkomen waar een gereserveerd woord mag worden herkend. Omdat ze geen woordbreuk veroorzaken, moeten ze worden gescheiden van lijst door witruimte. ((uitdrukking)) : De uitdrukking wordt geëvalueerd volgens de regels die hieronder worden beschreven Arithmetic Evaluation. Als de waarde van de expressie niet nul is, is de retourstatus 0; anders is de retourstatus 1. Dit is exact hetzelfdelaat ' uitdrukking '. uitdrukking : Retourneer een status van 0 of 1 afhankelijk van de evaluatie van de voorwaardelijke uitdrukking uitdrukking . Uitdrukkingen zijn samengesteld uit de voorverkiezingen die hieronder worden beschreven Voorwaardelijke uitdrukkingen. Woordsplitsing en padnaamuitbreiding worden niet uitgevoerd op de woorden tussen de en; tilde-uitbreiding, parameter en variabele uitbreiding, rekenkundige uitbreiding, opdrachtvervanging, procesvervanging en citaatverwijdering worden uitgevoerd. Wanneer de== en!= operators worden gebruikt, de tekenreeks rechts van de operator wordt beschouwd als een patroon en wordt vergeleken volgens de regels die hieronder worden beschrevenPatroonovereenkomst. De retourwaarde is 0 als de reeks overeenkomt met of niet overeenkomt met het patroon respectievelijk, en 1 anderszins. Elk deel van het patroon kan worden aangehaald om te zorgen dat het als een tekenreeks wordt gematcht. Uitdrukkingen kunnen worden gecombineerd met behulp van de volgende operatoren, weergegeven in afnemende volgorde van prioriteit: De&& en|| operators evalueren niet expression2 als de waarde van expression1 is voldoende om de retourwaarde van de volledige voorwaardelijke uitdrukking te bepalen. In een niet-interactieve shell of een interactieve shell waarin de interactive_comments optie voor deshopt builtin is ingeschakeld, een woord dat begint met# zorgt ervoor dat dat woord en alle resterende tekens op die regel worden genegeerd. Een interactieve shell zonder deinteractive_comments optie ingeschakeld staat geen opmerkingen toe. De interactive_comments optie is standaard ingeschakeld in interactieve shells. citeren wordt gebruikt om de speciale betekenis van bepaalde tekens of woorden aan de shell te verwijderen. Citeren kan worden gebruikt om een speciale behandeling voor speciale tekens uit te schakelen, om te voorkomen dat gereserveerde woorden als zodanig worden herkend en om parameteruitbreiding te voorkomen. Elk van de metacharacters hierboven vermeld onderDefinities heeft een speciale betekenis voor de schaal en moet worden geciteerd als deze zichzelf vertegenwoordigt. Wanneer de uitbreidingsfaciliteiten voor opdrachthistorie worden gebruikt, is de geschiedenis uitbreiding karakter, meestal!, moet worden geciteerd om de uitbreiding van de geschiedenis te voorkomen. Er zijn drie citeermechanismen: de ontsnappingskarakter , enkele aanhalingstekens en dubbele aanhalingstekens. Een niet-geciteerde backslash () is de ontsnappingskarakter . Het behoudt de letterlijke waarde van het volgende teken dat volgt, met uitzondering van Het insluiten van tekens in enkele aanhalingstekens bewaart de letterlijke waarde van elk teken in de aanhalingstekens. Een enkele aanhalingsteken mag niet voorkomen tussen enkele aanhalingstekens, zelfs wanneer deze wordt voorafgegaan door een backslash. Het insluiten van tekens in dubbele aanhalingstekens behoudt de letterlijke waarde van alle tekens binnen de aanhalingstekens, met uitzondering van$, ', en. De personages$ en' behouden hun speciale betekenis binnen dubbele aanhalingstekens. De backslash behoudt zijn speciale betekenis alleen wanneer gevolgd door een van de volgende tekens:$, ', ', of De speciale parameters* en@ hebben een speciale betekenis bij dubbele aanhalingstekens. Woorden van de vorm$' draad 'worden speciaal behandeld. Het woord breidt uit naar draad , met backslash-escaped tekens vervangen zoals gespecificeerd door de ANSI C-standaard. Backslash-escape-reeksen, indien aanwezig, worden als volgt gedecodeerd: Het uitgebreide resultaat is enkelvoudig, alsof het dollarteken niet aanwezig was. Een aanhalingsteken met dubbele aanhaling voorafgegaan door een dollarteken ($) zorgt ervoor dat de tekenreeks wordt vertaald volgens de huidige locale. Als de huidige locale isC ofPOSIX, het dollarteken wordt genegeerd. Als de tekenreeks wordt vertaald en vervangen, wordt de vervanging dubbel vermeld. EEN parameter is een entiteit die waarden opslaat. Het kan een zijn naam , een nummer of een van de speciale tekens die worden vermeld onderSpeciale parameters. Voor de doeleinden van de shell, a veranderlijk is een parameter aangeduid met a naam . Een variabele heeft een waarde en nul of meer attributen . Attributen worden toegewezen met behulp van deverklaren ingebouwde opdracht. Een parameter wordt ingesteld als er een waarde aan is toegewezen. De nulstring is een geldige waarde. Nadat een variabele is ingesteld, kan deze alleen worden uitgeschakeld door deongezet ingebouwde opdracht. EEN veranderlijk kan worden toegewezen door een verklaring van het formulier: naam = waarde Als waarde wordt niet gegeven, de variabele krijgt de null-reeks toegewezen. Allemaal waarden ondergaan tilde-uitbreiding, parameter en variabele uitzetting, opdrachtvervanging, rekenkundige uitzetting en citaatverwijdering. Als de variabele zijngeheel getal attribute set, dan waarde is onderhevig aan rekenkundige uitbreidingen, zelfs als de uitbreiding $ ((…)) niet wordt gebruikt. Het splitsen van woorden wordt niet uitgevoerd, met uitzondering van'$@' zoals uitgelegd onderSpeciale parameters. Uitbreiding van padnaam wordt niet uitgevoerd. Toewijzingsinstructies kunnen ook als argumenten voor deverklaren, zetten, exporteren, alleen lezen, en lokaal ingebouwde commando's. EEN positionele parameter is een parameter aangegeven met een of meer cijfers, behalve het enkele cijfer 0. Positieparameters worden toegewezen uit de argumenten van de shell wanneer deze wordt opgeroepen en kunnen opnieuw worden toegewezen met behulp van dereeks ingebouwde opdracht. Positieparameters mogen niet worden toegewezen aan toewijzingsinstructies. De positionele parameters worden tijdelijk vervangen wanneer een shell-functie wordt uitgevoerd. Wanneer een positionele parameter die uit meer dan één cijfer bestaat, wordt uitgevouwen, moet deze tussen accolades worden geplaatst. De shell behandelt verschillende parameters speciaal. Van deze parameters kan alleen worden verwezen; toewijzing aan hen is niet toegestaan. De volgende variabelen worden ingesteld door de shell: BASH: Breidt uit naar de volledige bestandsnaam die wordt gebruikt om dit exemplaar van aan te roepenbash. BASH_VERSINFO: Een alleen-lezen arrayvariabele waarvan de leden versiegegevens bevatten voor dit exemplaar van bash. De waarden die zijn toegewezen aan de arrayleden zijn als volgt: BASH_VERSION: Wordt uitgevouwen tot een tekenreeks die de versie van deze instantie beschrijftbash. COMP_CWORD: Een index in$ {COMP_WORDS} van het woord dat de huidige cursorpositie bevat. Deze variabele is alleen beschikbaar in shell-functies die worden aangeroepen door de programmeerbare voltooiingsfaciliteiten. COMPLETEN: De huidige opdrachtregel. Deze variabele is alleen beschikbaar in shell-functies en externe opdrachten die worden aangeroepen door de programmeerbare voltooiingsfaciliteiten. COMP_POINT: De index van de huidige cursorpositie ten opzichte van het begin van de huidige opdracht. Als de huidige cursorpositie aan het einde van de huidige opdracht staat, is de waarde van deze variabele gelijk aan$ {# COMP_LINE}. Deze variabele is alleen beschikbaar in shell-functies en externe opdrachten die worden aangeroepen door de programmeerbare voltooiingsfaciliteiten. COMP_WORDS: Een arrayvariabele bestaande uit de afzonderlijke woorden in de huidige opdrachtregel. Deze variabele is alleen beschikbaar in shell-functies die worden aangeroepen door de programmeerbare voltooiingsfaciliteiten. DIRSTACK: Een arrayvariabele die de huidige inhoud van de directorystack bevat. Directories verschijnen in de stapel in de volgorde waarin ze worden weergegeven door dedirs ingebouwde. Toewijzen aan leden van deze arrayvariabele kan worden gebruikt om mappen die zich al in de stapel bevinden te wijzigen, maar depushd enpopd ingebouwde mappen moeten worden gebruikt om mappen toe te voegen en te verwijderen. Toewijzing aan deze variabele zal de huidige map niet veranderen. AlsDIRSTACK is uitgeschakeld, het verliest zijn speciale eigenschappen, zelfs als het vervolgens opnieuw wordt ingesteld. EUID: Wordt uitgebreid tot de effectieve gebruikers-ID van de huidige gebruiker, geïnitialiseerd bij het opstarten van de shell. Deze variabele is alleen-lezen. FUNCNAME: De naam van elke momenteel uitgevoerde shell-functie. Deze variabele bestaat alleen als een shell-functie wordt uitgevoerd. Toewijzingen aanFUNCNAME hebben geen effect en geven een foutstatus terug. AlsFUNCNAME is uitgeschakeld, het verliest zijn speciale eigenschappen, zelfs als het vervolgens opnieuw wordt ingesteld. GROEPEN: Een arrayvariabele met de lijst met groepen waarvan de huidige gebruiker lid is. Toewijzingen aanGROEPEN hebben geen effect en geven een foutstatus terug. AlsGROEPEN is uitgeschakeld, het verliest zijn speciale eigenschappen, zelfs als het vervolgens opnieuw wordt ingesteld. HISTCMD: Het geschiedenisnummer of de index in de geschiedenislijst van de huidige opdracht. AlsHISTCMD is uitgeschakeld, het verliest zijn speciale eigenschappen, zelfs als het vervolgens opnieuw wordt ingesteld. HOSTNAME: Automatisch ingesteld op de naam van de huidige host. HOSTTYPE: Automatisch ingesteld op een tekenreeks die op unieke wijze het type computer beschrijft waaropbash is aan het uitvoeren. De standaard is systeemafhankelijk. REGELNR: Elke keer dat naar deze parameter wordt verwezen, vervangt de shell een decimaal getal dat het huidige regelnummer (beginnend met 1) binnen een script of functie vertegenwoordigt. Als er geen script of functie is, is de toegevoegde waarde niet gegarandeerd zinvol. AlsREGELNR is uitgeschakeld, het verliest zijn speciale eigenschappen, zelfs als het vervolgens opnieuw wordt ingesteld. MACHTYPE: Automatisch ingesteld op een tekenreeks die het systeemtype volledig beschrijftbash wordt uitgevoerd in de standaard GNU cpu-company-systeem formaat. De standaard is systeemafhankelijk. OLDPWD: De vorige werkdirectory zoals ingesteld door deCD commando. OPTARG: De waarde van het laatste optieargument verwerkt door degetopts ingebouwde opdracht. OPTIND: De index van het volgende argument dat moet worden verwerkt door degetopts ingebouwde opdracht. OSTYPE: Automatisch ingesteld op een tekenreeks die het besturingssysteem beschrijft waaropbash is aan het uitvoeren. De standaard is systeemafhankelijk. PIPESTATUS: Een arrayvariabele met een lijst met waarden voor de exitstatus van de processen in de meest recent uitgevoerde voorgrondpijplijn, die slechts één enkele opdracht kan bevatten. PPID: De proces-ID van het bovenliggende item van de shell. Deze variabele is alleen-lezen. PWD: De huidige werkdirectory zoals ingesteld door deCD commando. WILLEKEURIG: Elke keer dat naar deze parameter wordt verwezen, wordt een willekeurig geheel getal tussen 0 en 32767 gegenereerd. De reeks willekeurige getallen kan worden geïnitialiseerd door een waarde toe te wijzen aan WILLEKEURIG. AlsWILLEKEURIG is uitgeschakeld, het verliest zijn speciale eigenschappen, zelfs als het vervolgens opnieuw wordt ingesteld. ANTWOORD: Stel in op de invoerregel die wordt gelezen door delezen ingebouwde opdracht als er geen argumenten zijn opgegeven. SECONDS: Elke keer dat naar deze parameter wordt verwezen, wordt het aantal seconden sinds shell-invocation wordt geretourneerd. Als een waarde is toegewezen aanSECONDS, de waarde die wordt geretourneerd bij volgende referenties is het aantal seconden sinds de toewijzing plus de toegewezen waarde. Als SECONDS is uitgeschakeld, het verliest zijn speciale eigenschappen, zelfs als het vervolgens opnieuw wordt ingesteld. SHELLOPTS: Een door dubbele punten gescheiden lijst van ingeschakelde shell-opties. Elk woord in de lijst is een geldig argument voor de-O optie voor dereeks ingebouwde opdracht. De opties die verschijnen inSHELLOPTS zijn die gerapporteerd als op doorzet -o. Als deze variabele zich in de omgeving bevindt wanneerbash start, wordt elke shell-optie in de lijst ingeschakeld voordat eventuele opstartbestanden worden gelezen. Deze variabele is alleen-lezen. SHLVL: Verhoogd met telkens één instantie vanbash is begonnen. UID: Wordt uitgebreid naar de gebruikers-ID van de huidige gebruiker, geïnitialiseerd bij het opstarten van de shell. Deze variabele is alleen-lezen. De volgende variabelen worden gebruikt door de shell. In sommige gevallen,bash wijst een standaardwaarde toe aan een variabele; deze gevallen worden genoteerd. BASH_ENV: Als deze parameter is ingesteld wanneerbash voert een shellscript uit, de waarde ervan wordt geïnterpreteerd als een bestandsnaam met opdrachten om de shell te initialiseren, zoals in ~ / .Bashrc . De waarde van BASH_ENV wordt onderworpen aan parameteruitbreiding, opdrachtvervanging en rekenkundige uitbreiding voordat deze wordt geïnterpreteerd als een bestandsnaam.PAD wordt niet gebruikt om naar de resulterende bestandsnaam te zoeken. CDPATH: Het zoekpad voor deCD commando. Dit is een door dubbele punten gescheiden lijst van mappen waarin de shell zoekt naar bestemmingsmappen die zijn opgegeven door deCD commando. Een voorbeeldwaarde is ".: ~: / Usr". COLUMNS: Gebruikt door dekiezen ingebouwde opdracht om de terminalbreedte te bepalen bij het afdrukken van selectielijsten. Automatisch ingesteld bij ontvangst van een SIGWINCH. COMPREPLY: Een array-variabele waaruitbash leest de mogelijke voltooiingen gegenereerd door een shell-functie opgeroepen door de programmeerbare voltooiing faciliteit. FCEDIT: De standaardeditor voor defc ingebouwde opdracht. FIGNORE: Een door dubbele punten gescheiden lijst met achtervoegsels die moet worden genegeerd bij het voltooien van de bestandsnaam. Een bestandsnaam waarvan het achtervoegsel overeenkomt met een van de items inFIGNORE is uitgesloten van de lijst met overeenkomende bestandsnamen. Een voorbeeldwaarde is ".o: ~". GLOBIGNORE: Een door dubbele punten gescheiden lijst met patronen die de reeks bestandsnamen definiëren die door de uitbreiding van de padnaam moet worden genegeerd. Als een bestandsnaam die overeenkomt met een padnaamuitbreidingspatroon overeenkomt met een van de patronen inGLOBIGNORE, het wordt verwijderd uit de lijst met overeenkomsten. HISTCONTROL: Indien ingesteld op een waarde van ignorespace , regels die met een beginnenruimte teken worden niet ingevoerd in de geschiedenislijst. Indien ingesteld op een waarde van ignoredups , regels die overeenkomen met de laatste geschiedenisregel worden niet ingevoerd. Een waarde van ignoreboth combineert de twee opties. Als u deze niet instelt of instelt op een andere waarde dan die hierboven, worden alle lijnen die door de parser zijn gelezen, opgeslagen in de geschiedenislijst, afhankelijk van de waarde vanHISTIGNORE. De functie van deze variabele wordt vervangen door HISTIGNORE. De tweede en volgende regels van een samengestelde opdracht met meerdere regels worden niet getest en worden aan de geschiedenis toegevoegd, ongeacht de waarde vanHISTCONTROL. HISTFILE: De naam van het bestand waarin de opdrachtgeschiedenis wordt opgeslagen. De standaardwaarde is ~ / .Bash_history . Als de opdracht niet is ingesteld, wordt de opdrachtgeschiedenis niet opgeslagen wanneer een interactieve shell wordt afgesloten. HISTFILESIZE: Het maximale aantal regels in het geschiedenisbestand. Wanneer aan deze variabele een waarde is toegewezen, wordt het geschiedenisbestand indien nodig ingekort om niet meer dan dat aantal regels te bevatten. De standaardwaarde is 500. Het geschiedenisbestand wordt ook ingekort tot dit formaat nadat het is geschreven wanneer een interactieve shell wordt afgesloten. HISTIGNORE: Een door dubbele punten gescheiden lijst met patronen die worden gebruikt om te beslissen welke opdrachtregels moeten worden opgeslagen in de geschiedenislijst. Elk patroon is aan het begin van de regel verankerd en moet overeenkomen met de volledige regel (geen impliciete '*'is bijgevoegd). Elk patroon wordt vergeleken met de regel na de controles die zijn opgegeven metHISTCONTROL zijn toegepast. Naast de normale tekens voor het matchen van schelppatronen, "&'komt overeen met de vorige geschiedenisregel. '&'kan worden ontsnapt met een backslash; de backslash wordt verwijderd voordat een match wordt geprobeerd. De tweede en volgende regels van een samengestelde opdracht met meerdere regels worden niet getest en worden aan de geschiedenis toegevoegd, ongeacht de waarde vanHISTIGNORE. HISTSIZE: Het aantal opdrachten dat moet worden onthouden in de opdrachthistorie. De standaardwaarde is 500. HUIS: De basismap van de huidige gebruiker; het standaardargument voor deCD ingebouwde opdracht. De waarde van deze variabele wordt ook gebruikt bij het uitvoeren van tilde-uitbreiding. HostFile: Bevat de naam van een bestand in dezelfde indeling als / Etc / hosts dat moet worden gelezen als de shell een hostnaam moet invullen. De lijst met mogelijke voltooide hostnamen kan worden gewijzigd terwijl de shell wordt uitgevoerd; de volgende keer dat de hostname wordt voltooid nadat de waarde is gewijzigd,bash voegt de inhoud van het nieuwe bestand toe aan de bestaande lijst. Als HostFile is ingesteld, maar heeft geen waarde,bash probeert te lezen / Etc / hosts om de lijst met mogelijke voltooide hostnamen te verkrijgen. WanneerHostFile is uitgeschakeld, de lijst met hostnamen wordt gewist. IFS: De Interne veldscheider wordt gebruikt voor woordsplitsing na uitbreiding en om regels in woorden te splitsen met delezen ingebouwde opdracht. De standaardwaarde is " IGNOREEOF: Regelt de actie van een interactieve shell na ontvangst van eenEOF karakter als de enige invoer. Indien ingesteld, is de waarde het aantal opeenvolgendeEOF tekens die moeten worden getypt als de eerste tekens op een eerder ingevoerde invoerregelbash uitgangen. Als de variabele bestaat maar geen numerieke waarde heeft of geen waarde heeft, is de standaardwaarde 10. Als deze niet bestaat,EOF betekent het einde van de invoer van de shell. INPUTRC: De bestandsnaam voor deLees regel opstartbestand, overschrijft de standaardwaarde van ~ / .Inputrc . LANG: Gebruikt om de locale categorie te bepalen voor elke categorie die niet specifiek is geselecteerd met een variabele die begint metLC_. LC_ALL: Deze variabele overschrijft de waarde vanLANG en alle andereLC_ variabele die een locale categorie specificeert. LC_COLLATE: Deze variabele bepaalt de sorteervolgorde die wordt gebruikt bij het sorteren van de resultaten van padnaamuitbreiding en bepaalt het gedrag van bereikuitdrukkingen, equivalentieklassen en sorteerreeksen binnen padnaamuitbreiding en patroonovereenkomst. LC_CTYPE: Deze variabele bepaalt de interpretatie van tekens en het gedrag van tekenklassen in padnaamuitbreiding en patroonovereenkomst. LC_MESSAGES: Deze variabele bepaalt de landinstelling die wordt gebruikt om dubbele tekenreeksen te vertalen die worden voorafgegaan door a$. LC_NUMERIC: Deze variabele bepaalt de locale categorie die wordt gebruikt voor nummeropmaak. LINES: Gebruikt door dekiezen ingebouwde opdracht om de kolomlengte te bepalen voor het afdrukken van selectielijsten. Automatisch ingesteld bij ontvangst van een SIGWINCH. MAIL: Als deze parameter is ingesteld op een bestandsnaam en deMAILPATH variabele is niet ingesteld,bashinformeert de gebruiker over de aankomst van e-mail in het opgegeven bestand. mailcheck: Geeft aan hoe vaak (in seconden)bash controleert op post. De standaardinstelling is 60 seconden. Wanneer het tijd is om te controleren op e-mail, doet de shell dit voordat de primaire prompt wordt weergegeven. Als deze variabele niet is ingesteld of is ingesteld op een waarde die niet groter is dan of gelijk aan nul, schakelt de shell het controleren van e-mail uit. MAILPATH: Een door dubbele punt gescheiden lijst met bestandsnamen die moeten worden gecontroleerd op e-mail. Het bericht dat moet worden afgedrukt wanneer e-mail in een bepaald bestand arriveert, kan worden opgegeven door de bestandsnaam van het bericht te scheiden met een '?'. Wanneer gebruikt in de tekst van het bericht,$_ breidt uit naar de naam van het huidige e-mailbestand. Voorbeeld: MAILPATH = '/ var / mail / bfox? "Je hebt een mail": ~ / shell-mail? "$ _ Heeft mail!"'
Bash levert een standaardwaarde voor deze variabele, maar de locatie van de gebruikersmailbestanden die het gebruikt is systeemafhankelijk (/ var / mail /$ USER). OPTERR: Indien ingesteld op de waarde 1,bash toont foutmeldingen gegenereerd door degetopts ingebouwde opdracht.OPTERR wordt geïnitialiseerd naar 1 elke keer dat de shell wordt aangeroepen of een shell-script wordt uitgevoerd. PAD: Het zoekpad voor opdrachten. Het is een door dubbele punten gescheiden lijst van mappen waarin de shell naar opdrachten zoekt. Het standaardpad is systeemafhankelijk en wordt ingesteld door de beheerder die installeertbash. Een algemene waarde is "/ usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''. POSIXLY_CORRECT: Als deze variabele zich in de omgeving bevindt wanneerbash begint, de shell komt binnen posix-modus voor het lezen van de opstartbestanden, alsof het--posix aanroepoptie was geleverd. Als het is ingesteld terwijl de shell draait,bash stelt posix-modus alsof het commando set -o posix was geëxecuteerd. PROMPT_COMMAND: Indien ingesteld, wordt de waarde als een opdracht uitgevoerd voordat elke primaire prompt wordt uitgegeven. PS1: De waarde van deze parameter wordt uitgebreid en gebruikt als de primaire aanwijzingstekenreeks. De standaardwaarde is " S- v $''. PS2: De waarde van deze parameter wordt uitgebreid zoals metPS1 en gebruikt als de secundaire aanwijzingstekenreeks. De standaard is "> ''. PS3: De waarde van deze parameter wordt gebruikt als de prompt voor dekiezen commando. PS4: De waarde van deze parameter wordt uitgebreid zoals metPS1, en de waarde wordt vóór elke opdracht afgedruktbash wordt weergegeven tijdens een uitvoeringstrac. Het eerste personage vanPS4 wordt meerdere keren gerepliceerd, indien nodig, om meerdere niveaus van indirectie aan te geven. De standaard is "+ ''. TIJD FORMAAT: De waarde van deze parameter wordt gebruikt als een opmaakstring die aangeeft hoe de timinginformatie voor pijplijnen voorafgegaan door detijd gereserveerd woord moet worden weergegeven. De % karakter introduceert een escape-reeks die is uitgebreid tot een tijdwaarde of andere informatie. De escape-sequenties en hun betekenis zijn als volgt. De beugels geven optionele delen aan. De optionele p is een cijfer dat het precisie , het aantal decimalen achter een decimaalteken. Een waarde van 0 zorgt ervoor dat er geen decimaalteken of breuk wordt uitgevoerd. Er mogen maximaal drie plaatsen na de komma worden opgegeven; waarden van p meer dan 3 worden gewijzigd in 3. Als p is niet gespecificeerd, de waarde 3 wordt gebruikt. De optionelel specificeert een langer formaat, inclusief minuten, van het formulier MM m SS . FF s. De waarde van p bepaalt of de breuk al dan niet is inbegrepen. Als deze variabele niet is ingesteld,bash doet alsof het de waarde had $ ' nreal t% 3lR nuser t% 3lU nsys% 3lS'. Als de waarde null is, wordt er geen timinginformatie weergegeven. Een slepende newline wordt toegevoegd wanneer de format string wordt weergegeven. TMOUT: Indien ingesteld op een waarde groter dan nul,TMOUT wordt behandeld als de standaardtime-out voor delezen ingebouwde. Dekiezen opdracht wordt beëindigd als invoer niet later arriveertTMOUT seconden wanneer invoer afkomstig is van een terminal.In een interactieve shell wordt de waarde geïnterpreteerd als het aantal seconden om te wachten op invoer nadat de primaire prompt is uitgegeven.Bash wordt beëindigd na het wachten op het aantal seconden als de invoer niet arriveert. auto_resume: Deze variabele bepaalt hoe de shell samenwerkt met de gebruiker en taakbeheer. Als deze variabele is ingesteld, worden eenvoudige opdrachten met één woord zonder omleidingen behandeld als kandidaten voor hervatting van een bestaande gestopte taak. Er is geen dubbelzinnigheid toegestaan. Als er meer dan één taak is die begint met de string die is getypt, wordt de taak die het laatst is geopend, geselecteerd. De naam van een gestopt opdracht, in deze context, is de opdrachtregel gebruikt om het te starten. Indien ingesteld op de waarde exact , de geleverde string moet exact overeenkomen met de naam van een gestopte job; indien ingesteld op substring , de geleverde string moet overeenkomen met een substring van de naam van een gestopte job. De substring waarde biedt functionaliteit analoog aan de%? taakidentificatie. Als deze is ingesteld op een andere waarde, moet de geleverde tekenreeks een voorvoegsel zijn van de naam van een gestopte taak; dit biedt functionaliteit die analoog is aan de% taakidentificatie. histchars: De twee of drie tekens die de uitbreiding en tokenisatie van de geschiedenis beheren. Het eerste teken is het geschiedenis uitbreiding karakter, het teken dat het begin van een uitbreiding van de geschiedenis aangeeft, normaal '!'. Het tweede personage is het snelle vervanging teken, dat wordt gebruikt als afkorting voor het opnieuw uitvoeren van de vorige ingevoerde opdracht, het vervangen van de ene tekenreeks voor een andere in de opdracht. De standaard is '^'. Het optionele derde teken is het teken dat aangeeft dat de rest van de regel een opmerking is als deze wordt gevonden als het eerste teken van een woord, normaal gesproken '#'. Het geschiedeniscommentaar zorgt ervoor dat geschiedenisvervanging wordt overgeslagen voor de resterende woorden op de regel. Het hoeft niet noodzakelijkerwijs tot gevolg te hebben dat de shell-parser de rest van de regel behandelt als een opmerking. Bash biedt eendimensionale arrayvariabelen. Elke variabele kan als een array worden gebruikt; de verklaren builtin zal een array expliciet declareren. Er is geen maximale limiet voor de grootte van een array en ook geen vereiste dat leden worden geïndexeerd of aan elkaar worden toegewezen. Arrays worden geïndexeerd met gehele getallen en zijn gebaseerd op nul. Een array wordt automatisch gemaakt als een variabele is toegewezen aan het gebruik van de syntaxis naam subscript = waarde . De subscript wordt behandeld als een rekenkundige uitdrukking die moet evalueren tot een getal groter dan of gelijk aan nul. Gebruik om een array expliciet te declarerenverklaren -a naam . verklaren -a naam subscript wordt ook geaccepteerd; de subscript wordt genegeerd. Attributen kunnen worden opgegeven voor een matrixvariabele met behulp van deverklaren en alleen lezen builtins. Elk kenmerk is van toepassing op alle leden van een array. Arrays worden toegewezen aan het gebruik van samengestelde toewijzingen van het formulier naam =(waarde 1 … waarde n ), waar elk waarde is van de vorm subscript = draad . Enkel en alleen draad Is benodigd. Als de optionele haakjes en subscript worden geleverd, is die index toegewezen aan; anders is de index van het toegewezen element de laatste index waaraan de instructie plus één is toegewezen. Het indexeren begint bij nul. Deze syntaxis wordt ook geaccepteerd door deverklaren ingebouwde. Individuele array-elementen kunnen worden toegewezen aan het gebruik van de naam subscript = waarde syntaxis. Elk element van een array kan worden verwezen met $ { naam subscript }. De accolades zijn vereist om conflicten met padnaamuitbreiding te voorkomen. Als subscript is@ of*, het woord breidt uit naar alle leden van naam . Deze subscripts verschillen alleen wanneer het woord verschijnt tussen dubbele aanhalingstekens. Als het woord dubbel wordt aangehaald, $ { naam *} wordt uitgevouwen tot een enkel woord met de waarde van elk arraylid gescheiden door het eerste teken van deIFS speciale variabele en $ { naam @} breidt elk element uit naam naar een apart woord. Als er geen array-leden zijn, $ { naam @} expandeert naar niets. Dit is analoog aan de uitbreiding van de speciale parameters* en@. ${# naam subscript } breidt zich uit naar de lengte van $ { naam subscript }. Als subscript is* of@, de uitbreiding is het aantal elementen in de array. Verwijzing naar een matrixvariabele zonder subscript is equivalent aan verwijzingselement nul. Deongezet builtin wordt gebruikt om arrays te vernietigen.ongezet naam subscript vernietigt het array-element op index subscript . ongezet naam , waar naam is een array, ofongezet naam subscript , waar subscript
Definities
Gereserveerde woorden
Shell-grammatica: eenvoudige opdrachten
pijpleidingen
lijsten
Samengestelde opdrachten
Comments
citeren
parameters
Positionele parameters
Speciale parameters
Shell-variabelen
arrays