Skip to main content

Linux - Unix-Befehl: bash

Windows 10 - Native Linux/Ubuntu Bash *beta* - Grundlegendes (April 2025)

Windows 10 - Native Linux/Ubuntu Bash *beta* - Grundlegendes (April 2025)
Anonim

Der Linux-Befehl Bash ist einSch-compatible Befehlssprachen-Interpreter, der Befehle ausführt, die von der Standardeingabe oder von einer Datei gelesen werden.Bash enthält auch nützliche Funktionen aus den Korn- und C-Schalen (ksh undcsh).

Bash-Optionen

Zusätzlich zu den Einzelzeichen-Shell-Optionen, die in der Beschreibung des Befehls dokumentiert sindeinstellen eingebauter Befehlbash interpretiert die folgenden Optionen, wenn es aufgerufen wird:

  • -c Zeichenfolge: Wenn die-c Option ist vorhanden, dann werden Befehle gelesen Schnur . Wenn es Argumente nach dem gibt Schnur werden sie den Positionsparametern zugeordnet, beginnend mit$0.
  • -ich: Wenn die-ich Option ist vorhanden, die Shell ist interaktiv .
  • -l: Machenbash als ob es als Login-Shell aufgerufen wurde.
  • -r: Wenn die-r Option ist vorhanden, die Schale wird beschränkt.
  • -s: Wenn die-s Option ist vorhanden, oder wenn nach der Optionsverarbeitung keine Argumente übrig sind, werden Befehle aus der Standardeingabe gelesen. Mit dieser Option können die Positionsparameter beim Aufrufen einer interaktiven Shell festgelegt werden.
  • -D: Eine Liste aller doppelten Anführungszeichen, denen vorangestellt ist$ wird in der Standardausgabe gedruckt. Dies sind die Zeichenfolgen, für die eine Sprachübersetzung erforderlich ist, wenn dies nicht der Fall istC oderPOSIX. Dies impliziert die -n Möglichkeit; Es werden keine Befehle ausgeführt.
  • - + O shopt_option : shopt_option ist eine der Shell-Optionen, die von akzeptiert werdenshopt eingebaut Ob shopt_option ist anwesend,-O legt den Wert dieser Option fest und+ O setzt es ab Ob shopt_option Wird nicht angegeben, werden die Namen und Werte der Shell-Optionen von akzeptiertshopt werden in der Standardausgabe gedruckt. Wenn die Aufrufoption ist + ODie Ausgabe wird in einem Format angezeigt, das als Eingabe wiederverwendet werden kann.
  • --: EIN-- signalisiert das Ende der Optionen und deaktiviert die weitere Optionsverarbeitung. Alle Argumente nach dem-- werden als Dateinamen und Argumente behandelt. Ein Argument von- ist äquivalent zu--.

Bash interpretiert auch eine Reihe von Optionen mit mehreren Zeichen. Diese Optionen müssen in der Befehlszeile vor den einzelnen Zeichen angezeigt werden, um erkannt zu werden:

  • - dump-po-strings: Gleichwertig-D, aber die Ausgabe ist in der GNU gettext po (tragbares Objekt) Dateiformat.
  • - dump-Strings: Gleichwertig-D.
  • --Hilfe: Zeigt eine Verwendungsmeldung in der Standardausgabe an und wird erfolgreich beendet.
  • --init-datei: Datei und --rcfile Datei : Befehle von ausführen Datei anstelle der standardmäßigen persönlichen Initialisierungsdatei ~ / .bashrc wenn die Shell interaktiv ist.
  • --Anmeldung: Gleichwertig-l.
  • --nicht editieren: Verwenden Sie nicht die GNUZeile lesen Bibliothek zum Lesen von Befehlszeilen, wenn die Shell interaktiv ist.
  • --kein Profil: Lesen Sie nicht die systemweite Startdatei / etc / profile oder eine der persönlichen Initialisierungsdateien ~ / .bash_profile , ~ / .bash_login , oder ~ / .profile . Standardmäßig,bash liest diese Dateien, wenn sie als Login-Shell aufgerufen wird.
  • --norc: Lesen Sie die persönliche Initialisierungsdatei nicht und führen Sie sie nicht aus ~ / .bashrc wenn die Shell interaktiv ist. Diese Option ist standardmäßig aktiviert, wenn die Shell als aufgerufen wirdSch.
  • --posix: Ändern Sie das Verhalten vonbash wo die Standardoperation vom POSIX-Standard abweicht, um dem Standard zu entsprechen ( Posix-Modus ).
  • --beschränkt: Die Hülle wird eingeschränkt.
  • --rpm-Anforderungen: Erstellen Sie die Liste der Dateien, die für die Ausführung des Shell-Skripts erforderlich sind. Dies impliziert '-n' und unterliegt den gleichen Einschränkungen wie die Fehlerprüfung bei der Kompilierzeit. Backticks, Tests und Evaluierungen werden nicht analysiert, sodass einige Abhängigkeiten möglicherweise übersehen werden.
  • --verbose: Gleichwertig-v.
  • --Ausführung: Versionsinformationen für diese Instanz von anzeigenbash auf der Standardausgabe und beenden Sie erfolgreich.

Argumente

Wenn Argumente nach der Optionsverarbeitung bleiben und auch nicht-c noch die-s Wenn die Option angegeben wurde, wird angenommen, dass das erste Argument der Name einer Datei ist, die Shell-Befehle enthält. Ob bash wird auf diese Weise aufgerufen,$0 wird auf den Namen der Datei gesetzt, und die Positionsparameter werden auf die restlichen Argumente gesetzt.Bash liest und führt Befehle aus dieser Datei aus; dann beendet.BashDer Exit-Status des Exits ist der Exit-Status des letzten im Skript ausgeführten Befehls. Wenn keine Befehle ausgeführt werden, lautet der Exit-Status 0. Es wird zuerst versucht, die Datei im aktuellen Verzeichnis zu öffnen. Wenn keine Datei gefunden wird, durchsucht die Shell die Verzeichnisse inPFAD für das Skript.

Aufruf

EIN Login-Shell ist einer, dessen erstes Zeichen des Arguments Null ein ist-oder man begann mit dem--Anmeldung Möglichkeit.

Ein interaktiv Shell wird ohne Argumente ohne Option und ohne gestartet-c Option, deren Standardein - und - ausgang beide an Klemmen angeschlossen sind isatty (3) oder eins mit dem-ich Möglichkeit.PS1 ist gesetzt und $- Schließt ein, wenn bash interaktiv ist, damit ein Shellskript oder eine Startdatei diesen Status testen kann.

In den folgenden Absätzen wird beschrieben, wiebash führt seine Startdateien aus. Wenn eine der Dateien vorhanden ist, aber nicht gelesen werden kann,bash meldet einen Fehler Tilden werden wie in Tilde Expansion beschrieben in Dateinamen erweitert.

Wannbash wird als interaktive Login-Shell oder als nicht interaktive Shell mit der. aufgerufen--Anmeldung Bei dieser Option werden zuerst Befehle aus der Datei gelesen und ausgeführt / etc / profile , wenn diese Datei existiert. Nachdem Sie diese Datei gelesen haben, sucht sie nach ~ / .bash_profile , ~ / .bash_login , und ~ / .profile , in dieser Reihenfolge und liest und führt Befehle aus dem ersten Befehl aus, der vorhanden und lesbar ist. Das--kein Profil Option kann verwendet werden, wenn die Shell gestartet wird, um dieses Verhalten zu verhindern.

Wenn eine Login-Shell beendet wird,bash liest und führt Befehle aus der Datei aus ~ / .bash_logout wenn es existiert

Wenn eine interaktive Shell gestartet wird, die keine Login-Shell ist,bash liest und führt Befehle aus ~ / .bashrc , wenn diese Datei existiert. Dies kann durch die Verwendung von verhindert werden--norc Möglichkeit. Das--rcfile Datei Option wird erzwingenbash Befehle lesen und ausführen Datei anstatt ~ / .bashrc .

Wannbash wird nicht interaktiv gestartet - um beispielsweise ein Shell-Skript auszuführen - sucht es nach der VariablenBASH_ENV Erweitert in der Umgebung seinen Wert, wenn er dort angezeigt wird, und verwendet den erweiterten Wert als Namen einer Datei zum Lesen und Ausführen.Bash verhält sich so, als ob der folgende Befehl ausgeführt wurde:

wenn -n "$ BASH_ENV"; dann . "$ BASH_ENV"; fi

aber der Wert derPFAD Variable wird nicht verwendet, um nach dem Dateinamen zu suchen.

Obbash wird mit dem Namen aufgerufenSchversucht, das Startverhalten von historischen Versionen von zu simulierenSch so nah wie möglich und gleichzeitig dem POSIX-Standard entsprechen. Bei Aufruf als interaktive Login-Shell oder als nicht interaktive Shell mit der--Anmeldung Option, versucht es zuerst, Befehle von zu lesen und auszuführen / etc / profile und ~ / .profile , in dieser Reihenfolge. Das--kein Profil Option kann verwendet werden, um dieses Verhalten zu verhindern. Bei Aufruf als interaktive Shell mit dem Namen Sch, bash sucht die VariableENV, erweitert seinen Wert, wenn er definiert ist, und verwendet den erweiterten Wert als Namen einer zu lesenden und auszuführenden Datei. Da eine Shell als aufgerufen wirdSch versucht nicht, Befehle aus anderen Startdateien zu lesen und auszuführen--rcfile Option hat keine Auswirkung. Eine nicht interaktive Shell, die mit dem Namen aufgerufen wirdSch versucht nicht, andere Startdateien zu lesen. Wenn aufgerufen alsSch, bash tritt ein posix Modus, nachdem die Startdateien gelesen wurden.

Wannbash wird in gestartet posix Modus wie beim--posix Kommandozeilenoption, es folgt dem POSIX-Standard für Startdateien. In diesem Modus erweitern interaktive Shells dieENV Variable und Befehle werden aus der Datei gelesen und ausgeführt, deren Name der erweiterte Wert ist. Es werden keine anderen Startdateien gelesen.

Bash versucht normalerweise zu ermitteln, wann er vom Remote-Shell-Daemon ausgeführt wird rshd . Ob bash bestimmt, dass es von ausgeführt wird rshd liest und führt Befehle aus ~ / .bashrc , wenn diese Datei existiert und lesbar ist. Es wird dies nicht tun, wenn es als aufgerufen wirdSch. Das--norc Option kann verwendet werden, um dieses Verhalten zu verhindern, und die--rcfile Diese Option kann verwendet werden, um das Lesen einer anderen Datei zu erzwingen rshd ruft die Shell im Allgemeinen nicht mit diesen Optionen auf oder lässt sie nicht spezifizieren.

Wenn die Shell mit der effektiven Benutzer- (Gruppen-) ID gestartet wird, die nicht der tatsächlichen Benutzer- (Gruppen-) ID entspricht, und der-p Option wird nicht bereitgestellt, es werden keine Startdateien gelesen, Shellfunktionen werden nicht von der Umgebung geerbtSHELLOPTS Wenn diese Variable in der Umgebung angezeigt wird, wird sie ignoriert und die effektive Benutzer-ID auf die tatsächliche Benutzer-ID gesetzt. Wenn die-p Diese Option wird beim Aufruf angegeben. Das Startverhalten ist dasselbe, die effektive Benutzer-ID wird jedoch nicht zurückgesetzt.

Definitionen

Die folgenden Definitionen werden im Rest dieses Dokuments verwendet:

  • Leer: Ein Leerzeichen oder eine Registerkarte.
  • Wort: Eine Zeichenfolge, die von der Shell als eine Einheit betrachtet wird. Auch bekannt als a Zeichen.
  • Name: EIN Wort besteht nur aus alphanumerischen Zeichen und Unterstrichen und beginnt mit einem Buchstaben oder einem Unterstrich. Wird auch als bezeichnetKennung.
  • Metazeichen: Ein Zeichen, das, wenn es nicht in Anführungszeichen steht, Wörter trennt. Einer der folgenden:| &; () <> Leerzeichen
  • Bedienungsbediener: EIN Zeichen das führt eine Kontrollfunktion aus. Es ist eines der folgenden Symbole: || & && ; ;; ( ) |

Reservierte Wörter

Reservierte Wörter sind Wörter, die eine besondere Bedeutung für die Schale haben. Die folgenden Wörter werden als reserviert erkannt, wenn sie nicht in Anführungszeichen gesetzt werden, und entweder das erste Wort eines einfachen Befehls oder das dritte Wort von aFalloderzum Befehl:

! case erledigt elif else esac fi für Funktion wenn in select dann bis {} Zeit

Shell-Grammatik: Einfache Befehle

EIN einfacher Befehl ist eine Folge von optionalen Variablenzuweisungen, gefolgt vonleer-separierte Wörter und Weiterleitungen und beendet durch a Bedienungsbediener . Das erste Wort gibt den auszuführenden Befehl an und wird als Argument Null übergeben. Die verbleibenden Wörter werden als Argumente an den aufgerufenen Befehl übergeben.

Der Rückgabewert von a einfacher Befehl ist der Ausgangsstatus oder 128+ n wenn der Befehl durch Signal beendet wird n .

Pipelines

EIN Pipeline ist eine Folge von einem oder mehreren Befehlen, die durch das Zeichen getrennt sind|. Das Format für eine Pipeline ist Zeit -p ! Befehl | Befehl2 … .

Die Standardausgabe von Befehl ist über eine Leitung mit dem Standardeingang von verbunden Befehl2 . Diese Verbindung wird vor den vom Befehl angegebenen Umleitungen hergestellt.

Wenn das reservierte Wort! Vor einer Pipeline ist der Exit-Status dieser Pipeline der logische NICHT des Exit-Status des letzten Befehls. Ansonsten ist der Status der Pipeline der Beendigungsstatus des letzten Befehls. Die Shell wartet, bis alle Befehle in der Pipeline beendet sind, bevor sie einen Wert zurückgibt.

Wenn dieZeit Das reservierte Wort steht vor einer Pipeline. Die abgelaufene Zeit sowie die Benutzer- und Systemzeit, die für die Ausführung benötigt wird, werden gemeldet, wenn die Pipeline beendet wird. Das-p Option ändert das Ausgabeformat in das von POSIX angegebene. DasZEITFORMAT Variable kann auf eine Formatzeichenfolge gesetzt werden, die angibt, wie die Timing-Informationen angezeigt werden sollen.

Jeder Befehl in einer Pipeline wird als separater Prozess ausgeführt (z. B. in einer Subshell).

Listen

EIN Liste ist eine Folge von einer oder mehreren Pipelines, die von einem der Operatoren getrennt werden;, &, &&, oder||und gegebenenfalls durch eines von beendet;, &, oder.

Von diesen Listenoperatoren&& und|| Gleiche Priorität haben, gefolgt von; und&, die gleichen Vorrang haben.

Eine Folge von einer oder mehreren Zeilenumbrüchen kann in a erscheinen Liste anstelle eines Semikolons, um Befehle zu begrenzen.

Wenn ein Befehl vom Steuerungsoperator abgebrochen wird&führt die Shell den Befehl in der aus Hintergrund in einer subshell. Die Shell wartet nicht, bis der Befehl beendet ist, und der Rückgabestatus ist 0. Befehle, die durch a getrennt sind; werden sequentiell ausgeführt; Die Shell wartet, bis die einzelnen Befehle beendet sind. Der Rückgabestatus ist der Beendigungsstatus des zuletzt ausgeführten Befehls.

Die Steuerungsoperatoren&& und|| bezeichnen UND-Listen bzw. ODER-Listen. Eine UND-Liste hat das Formular

Befehl1 && Befehl2

Befehl2 wird ausgeführt, wenn und nur wenn Befehl1 gibt einen Exit-Status von Null zurück.

Eine ODER-Liste hat das Formular

Befehl1 || Befehl2

Befehl2 wird nur dann ausgeführt, wenn Befehl1 gibt einen Exit-Status ungleich Null zurück. Der Rückgabestatus von AND- und OR-Listen ist der Exit-Status des zuletzt in der Liste ausgeführten Befehls.

Zusammengesetzte Befehle

EIN zusammengesetzter Befehl ist eine der folgenden:

(Liste) : Liste wird in einer Subshell ausgeführt. Variablenzuweisungen und integrierte Befehle, die sich auf die Umgebung der Shell auswirken, bleiben nach Abschluss des Befehls nicht wirksam. Der Rückgabestatus ist der Beendigungsstatus von Liste .

{ Liste; } : Liste wird einfach in der aktuellen Shell-Umgebung ausgeführt. Liste muss mit einem Zeilenvorschub oder einem Semikolon abgeschlossen werden. Dies ist bekannt als Gruppenbefehl . Der Rückgabestatus ist der Beendigungsstatus von Liste . Beachten Sie das im Gegensatz zu den Metazeichen( und), { und} sind reservierte Wörter und muss auftreten, wenn ein reserviertes Wort erkannt werden darf. Da sie keinen Wortbruch verursachen, müssen sie getrennt werden Liste von whitespace.

((Ausdruck)) : Das Ausdruck wird nach den unter. beschriebenen Regeln bewertet Arithmetische Bewertung. Wenn der Wert des Ausdrucks nicht Null ist, ist der Rückgabestatus 0; Andernfalls lautet der Rückgabestatus 1. Dies entspricht genau demLassen ' Ausdruck '.

Ausdruck : Gibt den Status 0 oder 1 zurück, abhängig von der Auswertung des Bedingungsausdrucks Ausdruck . Ausdrücke setzen sich aus den im Folgenden beschriebenen Vorwahlen zusammen Bedingte Ausdrücke. Wortaufteilung und Pfadnamenserweiterung werden nicht für die Wörter zwischen den Zeilen durchgeführt und; Tilde-Erweiterung, Parameter- und Variablenerweiterung, arithmetische Erweiterung, Befehlssubstitution, Prozessersetzung und Angebotsentfernung werden durchgeführt.

Wenn der== und!= Operatoren verwendet werden, wird die Zeichenfolge rechts vom Operator als Muster betrachtet und gemäß den unter beschriebenen Regeln abgeglichenMusterabgleich. Der Rückgabewert ist 0, wenn die Zeichenfolge dem Muster entspricht oder nicht, und ansonsten 1. Jeder Teil des Musters kann in Anführungszeichen gesetzt werden, damit er als Zeichenfolge abgeglichen wird.

Ausdrücke können mit den folgenden Operatoren kombiniert werden, die in absteigender Reihenfolge aufgeführt werden:

  • (Ausdruck): Gibt den Wert von zurück Ausdruck . Dies kann verwendet werden, um den normalen Vorrang von Operatoren zu überschreiben.
  • ! expressio n: Wahr wenn Ausdruck ist falsch.
  • expression1 && expression2 : Wenn beides wahr ist expression1 und expression2 sind wahr.
  • expression1 || expression2 : Wenn ja, stimmt expression1 oder expression2 ist wahr.

Das&& und|| Betreiber bewerten nicht expression2 wenn der Wert von expression1 reicht aus, um den Rückgabewert des gesamten Bedingungsausdrucks zu bestimmen.

  • zum Name im Wort ; tun Liste ; erledigt: Die Liste der folgenden Wörterim wird erweitert und generiert eine Liste von Elementen. Die Variable Name wird auf jedes Element dieser Liste der Reihe nach gesetzt, und Liste wird jedes Mal ausgeführt. Wenn dieim Wort entfällt derzum Befehl wird ausgeführt Liste einmal für jeden eingestellten Positionsparameter. Der Rückgabestatus ist der Beendigungsstatus des zuletzt ausgeführten Befehls. Wenn die Erweiterung der Elemente folgtim führt zu einer leeren Liste, es werden keine Befehle ausgeführt und der Rückgabestatus ist 0.
  • zum (( Ausdruck1 ; Ausdruck2 ; expr3 )) ; tun Liste ; erledigt: Zuerst der arithmetische Ausdruck Ausdruck1 wird nach den unter. beschriebenen Regeln bewertetArithmetische Bewertung. Der arithmetische Ausdruck Ausdruck2 wird dann wiederholt ausgewertet, bis sie auf Null steht. Jedes Mal Ausdruck2 wertet einen Wert ungleich Null aus, Liste ausgeführt wird und der arithmetische Ausdruck expr3 ausgewertet wird. Wenn ein Ausdruck ausgelassen wird, verhält er sich so, als würde er 1 sein. Der Rückgabewert ist der Beendigungsstatus des letzten Befehls in Liste das ausgeführt wird, oder false, wenn einer der Ausdrücke ungültig ist.
  • wählen Name im Wort ; tun Liste ; erledigt: Die Liste der folgenden Wörterim wird erweitert und generiert eine Liste von Elementen. Der Satz der erweiterten Wörter wird auf den Standardfehler gedruckt, wobei jeweils eine Zahl vorangestellt ist. Wenn dieim Wort weggelassen wird, werden die Positionsparameter gedruckt. Das PS3 Die Eingabeaufforderung wird angezeigt und eine Zeile wird von der Standardeingabe gelesen. Wenn die Zeile aus einer Nummer besteht, die einem der angezeigten Wörter entspricht, wird der Wert von Name ist auf dieses Wort gesetzt. Wenn die Zeile leer ist, werden die Wörter und die Aufforderung erneut angezeigt. Wenn EOF gelesen wird, ist der Befehl abgeschlossen. Alle anderen gelesenen Wertursachen Name auf null gesetzt werden. Die gelesene Zeile wird in der Variablen gespeichertANTWORTEN. Das Liste wird nach jeder Auswahl ausgeführt, bis abrechen Befehl wird ausgeführt. Der Ausgangsstatus vonwählen ist der Beendigungsstatus des zuletzt ausgeführten Befehls Liste oder Null, wenn keine Befehle ausgeführt wurden.
  • Fall Wort im ( Muster | Muster : EINFall Befehl erweitert zuerst Wort und versucht es mit jedem zu vergleichen Muster Verwenden Sie wiederum die gleichen Übereinstimmungsregeln wie für die Erweiterung des Pfadnamens. Wenn eine Übereinstimmung gefunden wird, die entsprechende Liste ausgeführt wird. Nach dem ersten Match werden keine weiteren Matches versucht. Der Exit-Status ist Null, wenn kein Muster übereinstimmt. Ansonsten ist dies der Exit-Status des zuletzt ausgeführten Befehls Liste .
  • ob Liste ; dann Liste; und elif Liste ; dann Liste ; … sonst Liste ; fi: Dasob Liste ausgeführt wird. Wenn der Exit-Status Null ist, wird derdann Liste ausgeführt wird. Ansonsten jeder elif Liste wird der Reihe nach ausgeführt, und wenn der Beendigungsstatus Null ist, wird der entsprechende Status angezeigtdann Liste ausgeführt wird und der Befehl abgeschlossen ist. Ansonsten dersonst Liste wird ausgeführt, falls vorhanden. Der Beendigungsstatus ist der Beendigungsstatus des zuletzt ausgeführten Befehls oder Null, wenn keine Bedingung erfüllt ist.
  • während Liste ; tun Liste ; erledigt und bis um Liste ; tun Liste ; erledigt: Daswährend Befehl führt kontinuierlich dietun Liste solange der letzte Befehl in Liste gibt einen Exit-Status von Null zurück. Dasbis um Befehl ist identisch mit demwährend Befehl, außer dass der Test negiert wird; dastun Liste wird ausgeführt, solange der letzte Befehl in Liste gibt einen Exit-Status ungleich Null zurück. Der Ausgangsstatus derwährend undbis um Befehle ist der Beendigungsstatus des letztentun Liste Befehl ausgeführt oder Null, wenn keiner ausgeführt wurde.
  • Funktion Name () { Liste ; }: Dies definiert eine benannte Funktion Name . Das Karosserie der funktion ist die Liste von Befehlen zwischen {und}. Diese Liste wird immer ausgeführt Name wird als Name eines einfachen Befehls angegeben. Der Exit-Status einer Funktion ist der Exit-Status des zuletzt im Body ausgeführten Befehls.

Bemerkungen

In einer nicht interaktiven Shell oder einer interaktiven Shell, in der die interactive_comments Option zumshopt Builtin ist aktiviert, ein Wort beginnt mit# bewirkt, dass dieses Wort und alle verbleibenden Zeichen in dieser Zeile ignoriert werden. Eine interaktive Shell ohneinteractive_comments Option aktiviert lässt keine Kommentare zu. Das interactive_comments Option ist in interaktiven Shells standardmäßig aktiviert.

Zitieren

Zitieren wird verwendet, um die spezielle Bedeutung bestimmter Zeichen oder Wörter in der Shell zu entfernen. Anführungszeichen können verwendet werden, um die Sonderbehandlung für Sonderzeichen zu deaktivieren, um zu verhindern, dass reservierte Wörter als solche erkannt werden, und um die Parametererweiterung zu verhindern.

Jedes von den Metazeichen oben aufgeführtDefinitionen hat eine besondere Bedeutung für die Schale und muss zitiert werden, wenn sie sich selbst darstellen soll.

Wenn die Erweiterungsfunktionen für Befehlsverläufe verwendet werden, wird die Erweiterung der Geschichte Charakter normalerweise!, muss angegeben werden, um die Erweiterung des Verlaufs zu verhindern.

Es gibt drei Zitiermechanismen: die Escape-Zeichen , einfache Anführungszeichen und doppelte Anführungszeichen.

Ein nicht zitierter Backslash () ist der Escape-Zeichen . Es behält den Literalwert des nächsten Zeichens bei, das mit Ausnahme von folgt . Wenn eine Paar erscheint und der Backslash wird nicht selbst in Anführungszeichen gesetzt wird als Zeilenfortsetzung behandelt (das heißt, es wird aus dem Eingabestrom entfernt und effektiv ignoriert).

Wenn Sie Zeichen in einfache Anführungszeichen setzen, wird der Wert jedes Zeichens in den Anführungszeichen beibehalten. Ein einfaches Anführungszeichen darf nicht zwischen einfachen Anführungszeichen stehen, auch wenn ein Backslash vorangestellt ist.

Das Einschließen von Zeichen in doppelte Anführungszeichen behält den Literalwert aller Zeichen in den Anführungszeichen mit Ausnahme von bei$, ', und. Die Charaktere$ und' behalten ihre besondere Bedeutung in Anführungszeichen. Der umgekehrte Schrägstrich behält seine besondere Bedeutung nur, wenn von einem der folgenden Zeichen gefolgt wird:$, ', ', , oder. Ein Anführungszeichen kann in Anführungszeichen gesetzt werden, indem ein Backslash vorangestellt wird.

Die besonderen Parameter* und@ haben in doppelten Anführungszeichen eine besondere Bedeutung.

Wörter des Formulars$' Schnur 'werden speziell behandelt. Das Wort erweitert sich zu Schnur , mit durch Backslash umschlossenen Zeichen gemäß ANSI-C-Standard ersetzt. Backslash-Escape-Sequenzen werden, falls vorhanden, wie folgt decodiert:

  • ein: Alarm (Glocke)
  • b: Rücktaste
  • e: ein Fluchtzeichen
  • f: Formularvorschub
  • n: Neue Zeile
  • r: Wagenrücklauf
  • t: horizontale Registerkarte
  • v: vertikale tab
  • \: Backslash
  • ': einfaches Zitat
  • nnn : Das Acht-Bit-Zeichen, dessen Wert der Oktalwert ist nnn (ein- bis dreistellig)
  • x HH : Das Acht-Bit-Zeichen, dessen Wert der Hexadezimalwert ist HH (eine oder zwei hexadezimale Ziffern)
  • c x : Eine Kontrolle- x Charakter

Das erweiterte Ergebnis ist einfach notiert, als ob das Dollarzeichen nicht vorhanden gewesen wäre.

Eine doppelte Anführungszeichenfolge, der ein Dollarzeichen vorangestellt ist ($) bewirkt, dass die Zeichenfolge entsprechend dem aktuellen Gebietsschema übersetzt wird. Wenn das aktuelle Gebietsschema istC oderPOSIXDas Dollarzeichen wird ignoriert. Wenn der String übersetzt und ersetzt wird, wird der Ersatz in doppelte Anführungszeichen gesetzt.

Parameter

EIN Parameter ist eine Entität, die Werte speichert. Es kann ein sein Name , eine Zahl oder eines der unter. aufgeführten SonderzeichenSpezielle Parameter. Für die Zwecke der Schale a Variable ist ein mit a gekennzeichneter Parameter Name . Eine Variable hat eine Wert und null oder mehr Attribute . Attribute werden mit dem vergebenerklären eingebauter Befehl.

Ein Parameter wird gesetzt, wenn ihm ein Wert zugewiesen wurde. Die Nullzeichenfolge ist ein gültiger Wert. Sobald eine Variable festgelegt wurde, kann sie nur mit der Option deaktiviert werdenunset eingebauter Befehl.

EIN Variable kann durch eine Angabe des Formulars zugewiesen werden: Name = Wert

Ob Wert nicht angegeben ist, wird der Variablen die Nullzeichenfolge zugewiesen. Alles Werte Tilde-Erweiterung, Parameter- und Variablenerweiterung, Befehlssubstitution, Arithmetikerweiterung und Entfernen von Anführungszeichen. Wenn die Variable hatganze Zahl Attribut gesetzt, dann Wert unterliegt einer arithmetischen Erweiterung, auch wenn die Erweiterung $ ((…)) nicht verwendet wird. Mit Ausnahme von wird keine Wortaufteilung durchgeführt'$@' wie unter erklärtSpezielle Parameter. Die Erweiterung des Pfadnamens wird nicht durchgeführt. Zuweisungsanweisungen können auch als Argumente für die angezeigt werdenerklären, setzen, Export, schreibgeschützt, und lokal eingebaute Befehle.

Positionsparameter

EIN Positionsparameter ist ein Parameter, der durch eine oder mehrere Ziffern mit Ausnahme der einzelnen Ziffer 0 gekennzeichnet ist. Positionsparameter werden beim Aufrufen aus den Argumenten der Shell zugewiesen und können mit dem Parameter neu zugewiesen werdeneinstellen eingebauter Befehl. Positionsparameter dürfen mit Zuweisungsanweisungen nicht zugeordnet werden. Die Positionsparameter werden vorübergehend ersetzt, wenn eine Shell-Funktion ausgeführt wird.

Wenn ein Positionsparameter, der aus mehr als einer einzelnen Ziffer besteht, erweitert wird, muss er in geschweifte Klammern eingeschlossen werden.

Spezielle Parameter

Die Shell behandelt mehrere Parameter speziell. Diese Parameter können nur referenziert werden. eine Zuordnung zu ihnen ist nicht erlaubt.

  • *: Wird bis zu den Positionsparametern erweitert, beginnend mit einem. Wenn die Erweiterung in Anführungszeichen steht, wird sie zu einem einzelnen Wort erweitert, wobei der Wert jedes Parameters durch das erste Zeichen der Zeichenfolge getrennt wirdIFS spezielle Variable. Das ist, "$*" ist äquivalent zu "$1 c $2 c ", woher c ist das erste Zeichen des Wertes vonIFS Variable. ObIFS nicht gesetzt ist, werden die Parameter durch Leerzeichen getrennt. ObIFS ist null, werden die Parameter ohne dazwischenliegende Trennzeichen verbunden.
  • @: Wird bis zu den Positionsparametern erweitert, beginnend mit einem. Wenn die Erweiterung in Anführungszeichen erfolgt, wird jeder Parameter zu einem separaten Wort erweitert. Das ist, "$@" ist äquivalent zu "$1' '$2"… Wenn keine Positionsparameter vorhanden sind"$@" und$@zu nichts erweitern (sie werden entfernt).
  • #: Wird auf die Anzahl der Positionsparameter in Dezimalzahlen erweitert.
  • ?: Wird auf den Status der zuletzt ausgeführten Vordergrundpipeline erweitert.
  • -: Wird beim Aufruf durch die Option zu den aktuellen Optionsflags erweiterteinstellen Builtin-Befehl oder Befehle, die von der Shell selbst gesetzt werden, z-ich Möglichkeit.
  • $: Wird auf die Prozess-ID der Shell erweitert. In einer Subshell () erweitert es sich auf die Prozess-ID der aktuellen Shell, nicht auf die Subshell.
  • !: Wird auf die Prozess-ID des zuletzt ausgeführten Hintergrundbefehls (asynchron) erweitert.
  • 0: Wird auf den Namen der Shell oder des Shell-Skripts erweitert. Dies wird bei der Shell-Initialisierung festgelegt. Obbash wird mit einer Datei von Befehlen aufgerufen,$0 wird auf den Namen dieser Datei gesetzt. Obbash wird mit dem gestartet-c Option dann$0 wird auf das erste Argument nach der auszuführenden Zeichenfolge gesetzt, sofern vorhanden. Andernfalls wird auf den Dateinamen gesetzt, der zum Aufrufen verwendet wirdbash, wie durch Argument Null angegeben.
  • _: Legen Sie beim Starten der Shell den absoluten Dateinamen des Shell- oder Shell-Skripts fest, das in der Argumentliste übergeben wird. Anschließend wird das letzte Argument nach der Erweiterung zum vorherigen Befehl erweitert. Legen Sie außerdem den vollständigen Dateinamen jedes Befehls fest, der in der Umgebung ausgeführt wird, die für diesen Befehl exportiert wird. Bei der Prüfung von E-Mails enthält dieser Parameter den Namen der gerade geprüften Maildatei.

Shell-Variablen

Die folgenden Variablen werden von der Shell festgelegt:

BASH: Erweitert auf den vollständigen Dateinamen, der zum Aufrufen dieser Instanz von verwendet wirdbash.

BASH_VERSINFO: Eine Readonly-Array-Variable, deren Mitglieder Versionsinformationen für diese Instanz von enthalten bash. Die den Array-Mitgliedern zugewiesenen Werte lauten wie folgt:

  • BASH_VERSINFO 0: Die Hauptversionsnummer (die Veröffentlichung )
  • BASH_VERSINFO 1: Die Nebenversionsnummer (die Ausführung )
  • BASH_VERSINFO 2: Die Patchebene
  • BASH_VERSINFO 3: Die Build-Version
  • BASH_VERSINFO 4: Der Freigabestatus ( beta1, zum Beispiel)
  • BASH_VERSINFO 5: Der Wert vonMACHTYPE

BASH_VERSION: Wird zu einem String erweitert, der die Version dieser Instanz von beschreibtbash.

COMP_CWORD: Ein Index in$ {COMP_WORDS} des Wortes, das die aktuelle Cursorposition enthält. Diese Variable ist nur in Shell-Funktionen verfügbar, die von den programmierbaren Fertigstellungsfunktionen aufgerufen werden.

KOMPLET: Die aktuelle Befehlszeile. Diese Variable ist nur in Shell-Funktionen und externen Befehlen verfügbar, die von den programmierbaren Beendigungsfunktionen aufgerufen werden.

COMP_POINT: Der Index der aktuellen Cursorposition relativ zum Beginn des aktuellen Befehls. Wenn sich die aktuelle Cursorposition am Ende des aktuellen Befehls befindet, ist der Wert dieser Variablen gleich$ {# COMP_LINE}. Diese Variable ist nur in Shell-Funktionen und externen Befehlen verfügbar, die von den programmierbaren Beendigungsfunktionen aufgerufen werden.

COMP_WORDS: Eine Array-Variable, die aus den einzelnen Wörtern in der aktuellen Befehlszeile besteht. Diese Variable ist nur in Shell-Funktionen verfügbar, die von den programmierbaren Fertigstellungsfunktionen aufgerufen werden.

DIRSTACK: Eine Array-Variable, die den aktuellen Inhalt des Verzeichnisstapels enthält. Verzeichnisse werden im Stapel in der Reihenfolge angezeigt, in der sie angezeigt werdendirs eingebaut Die Zuordnung zu Mitgliedern dieser Array-Variablen kann verwendet werden, um Verzeichnisse zu ändern, die sich bereits im Stapel befindenPushd undPopd Builtins müssen zum Hinzufügen und Entfernen von Verzeichnissen verwendet werden. Durch die Zuweisung zu dieser Variablen wird das aktuelle Verzeichnis nicht geändert. ObDIRSTACK nicht gesetzt ist, verliert es seine besonderen Eigenschaften, auch wenn es später zurückgesetzt wird.

EUID: Wird auf die effektive Benutzer-ID des aktuellen Benutzers erweitert, die beim Start der Shell initialisiert wird. Diese Variable ist schreibgeschützt.

FUNCNAME: Der Name einer aktuell ausgeführten Shell-Funktion. Diese Variable ist nur vorhanden, wenn eine Shell-Funktion ausgeführt wird. Zuweisungen anFUNCNAME haben keine Auswirkung und geben einen Fehlerstatus zurück. ObFUNCNAME nicht gesetzt ist, verliert es seine besonderen Eigenschaften, auch wenn es später zurückgesetzt wird.

GRUPPEN: Eine Array-Variable, die die Liste der Gruppen enthält, deren aktueller Benutzer Mitglied ist. Zuweisungen anGRUPPEN haben keine Auswirkung und geben einen Fehlerstatus zurück. ObGRUPPEN nicht gesetzt ist, verliert es seine besonderen Eigenschaften, auch wenn es später zurückgesetzt wird.

HISTCMD: Die Historiennummer oder der Index in der Historienliste des aktuellen Befehls. ObHISTCMD nicht gesetzt ist, verliert es seine besonderen Eigenschaften, auch wenn es später zurückgesetzt wird.

HOSTNAME: Wird automatisch auf den Namen des aktuellen Hosts gesetzt.

HOSTTYP: Wird automatisch auf eine Zeichenfolge gesetzt, die den Maschinentyp eindeutig beschreibtbash wird ausgeführt. Der Standard ist systemabhängig.

LINIE NR: Bei jeder Referenzierung dieses Parameters ersetzt die Shell eine Dezimalzahl, die die aktuelle fortlaufende Zeilennummer (beginnend mit 1) innerhalb eines Skripts oder einer Funktion darstellt. Wenn er nicht in einem Skript oder einer Funktion enthalten ist, ist der ersetzte Wert nicht garantiert aussagekräftig. ObLINIE NR nicht gesetzt ist, verliert es seine besonderen Eigenschaften, auch wenn es später zurückgesetzt wird.

MACHTYPE: Wird automatisch auf eine Zeichenfolge gesetzt, die den Systemtyp vollständig beschreibtbash wird in der Standard-GNU ausgeführt CPU-Unternehmen-System Format. Der Standard ist systemabhängig.

OLDPWD: Das vorherige Arbeitsverzeichnis, wie von festgelegtCD Befehl.

OPTARG: Der Wert des letzten Optionsarguments, das von verarbeitet wirdGetopts eingebauter Befehl.

OPTIND: Der Index des nächsten Arguments, das von bearbeitet werden sollGetopts eingebauter Befehl.

OSTYPE: Wird automatisch auf eine Zeichenfolge gesetzt, die das Betriebssystem beschreibt, auf dembash wird ausgeführt. Der Standard ist systemabhängig.

PIPESTATUS: Eine Array-Variable mit einer Liste von Exitstatuswerten aus den Prozessen in der zuletzt ausgeführten Vordergrundpipeline, die möglicherweise nur einen einzelnen Befehl enthält.

PPID: Die Prozess-ID des übergeordneten Elements der Shell. Diese Variable ist schreibgeschützt.

PWD: Das aktuelle Arbeitsverzeichnis, wie von eingestelltCD Befehl.

ZUFÄLLIG: Bei jeder Referenzierung dieses Parameters wird eine zufällige Ganzzahl zwischen 0 und 32767 generiert. Die Folge von Zufallszahlen kann durch Zuweisung eines Wertes initialisiert werden ZUFÄLLIG. ObZUFÄLLIG nicht gesetzt ist, verliert es seine besonderen Eigenschaften, auch wenn es später zurückgesetzt wird.

ANTWORTEN: Stellen Sie die vom Eingang gelesene Eingangszeile einlesen Builtin-Befehl, wenn keine Argumente angegeben werden.

SEKUNDENJedes Mal, wenn auf diesen Parameter verwiesen wird, wird die Anzahl von Sekunden seit dem Aufruf der Shell zurückgegeben. Wenn ein Wert zugewiesen istSEKUNDENDer Wert, der bei nachfolgenden Referenzen zurückgegeben wird, ist die Anzahl von Sekunden seit der Zuweisung zuzüglich des zugewiesenen Werts. Ob SEKUNDEN nicht gesetzt ist, verliert es seine besonderen Eigenschaften, auch wenn es später zurückgesetzt wird.

SHELLOPTS: Eine durch Doppelpunkte getrennte Liste der aktivierten Shell-Optionen. Jedes Wort in der Liste ist ein gültiges Argument für die-O Option zumeinstellen eingebauter Befehl. Die Optionen erscheinen inSHELLOPTS sind die als gemeldet auf durchset -o. Wenn sich diese Variable in der Umgebung befindetbash Beim Starten wird jede Shell-Option in der Liste aktiviert, bevor Startdateien gelesen werden. Diese Variable ist schreibgeschützt.

SHLVL: Jedes Mal, wenn eine Instanz vonbash ist gestartet.

UID: Wird auf die Benutzer-ID des aktuellen Benutzers erweitert, die beim Start der Shell initialisiert wird. Diese Variable ist schreibgeschützt.

Die folgenden Variablen werden von der Shell verwendet. In manchen Fällen,bash weist einer Variablen einen Standardwert zu; diese Fälle werden notiert.

BASH_ENV: Wenn dieser Parameter wann eingestellt istbash Wird ein Shell-Skript ausgeführt, wird sein Wert als Dateiname interpretiert, der Befehle zum Initialisieren der Shell enthält, wie in ~ / .bashrc . Der Wert von BASH_ENV wird einer Parametererweiterung, Befehlssubstitution und Arithmetikerweiterung unterzogen, bevor sie als Dateiname interpretiert wird.PFAD wird nicht verwendet, um nach dem resultierenden Dateinamen zu suchen.

CDPATH: Der Suchpfad für dieCD Befehl. Dies ist eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen die Shell nach Zielverzeichnissen sucht, die von angegeben werdenCD Befehl. Ein Beispielwert ist ".: ~: / Usr".

SÄULEN: Von der verwendetwählen eingebauter Befehl zur Bestimmung der Klemmenbreite beim Drucken von Auswahllisten. Wird beim Empfang eines SIGWINCH automatisch eingestellt.

VERGLEICHEN: Eine Array-Variable, von derbash liest die möglichen Vervollständigungen, die von einer Shell-Funktion generiert werden, die von der programmierbaren Vervollständigungseinrichtung aufgerufen wird.

FCEDIT: Der Standardeditor für diefc eingebauter Befehl.

FIGNORE: Eine durch Doppelpunkte getrennte Liste von Suffixen, die bei der Dateinamenvervollständigung ignoriert werden sollen. Ein Dateiname, dessen Suffix mit einem der Einträge in übereinstimmtFIGNORE wird aus der Liste der übereinstimmenden Dateinamen ausgeschlossen. Ein Beispielwert ist ".o: ~".

GLOBIGNORE: Eine durch Doppelpunkte getrennte Liste von Mustern, die die Menge der Dateinamen definieren, die von der Erweiterung des Pfadnamens ignoriert werden sollen. Wenn ein Dateiname mit einem Pfadnamen übereinstimmt, stimmt das Erweiterungsmuster auch mit einem der Muster in übereinGLOBIGNOREwird aus der Liste der Übereinstimmungen entfernt.

HISTCONTROL: Wenn auf einen Wert von eingestellt Unwissensraum , Zeilen, die mit a beginnenPlatz Zeichen werden nicht in die Historienliste eingetragen. Wenn auf einen Wert von gesetzt ignoriert Zeilen, die der letzten Verlaufszeile entsprechen, werden nicht eingegeben. Ein Wert von Unwissenheit kombiniert die beiden Optionen. Wenn der Wert nicht festgelegt ist oder auf einen anderen Wert als den obigen Wert gesetzt ist, werden alle vom Parser gelesenen Zeilen in der Verlaufsliste gespeichert, abhängig vom Wert vonHISTIGNORE. Die Funktion dieser Variablen wird durch ersetzt HISTIGNORE. Die zweite und die folgenden Zeilen eines mehrzeiligen Verbundbefehls werden nicht getestet und unabhängig vom Wert von in der Historie hinzugefügtHISTCONTROL.

HISTFILE: Der Name der Datei, in der der Befehlsverlauf gespeichert ist. Der Standardwert ist ~ / .bash_history . Wenn die Einstellung nicht festgelegt ist, wird der Befehlsverlauf nicht gespeichert, wenn eine interaktive Shell beendet wird.

HISTFILESIZE: Die maximale Anzahl von Zeilen in der Verlaufsdatei. Wenn dieser Variablen ein Wert zugewiesen wird, wird die Verlaufsdatei erforderlichenfalls so gekürzt, dass sie nicht mehr als diese Anzahl von Zeilen enthält. Der Standardwert ist 500. Die Protokolldatei wird auch auf diese Größe gekürzt, nachdem sie beim Beenden einer interaktiven Shell geschrieben wurde.

HISTIGNORE: Eine durch Doppelpunkte getrennte Liste von Mustern, anhand derer festgelegt wird, welche Befehlszeilen in der Verlaufsliste gespeichert werden sollen. Jedes Muster ist am Anfang der Zeile verankert und muss mit der vollständigen Zeile übereinstimmen (keine impliziten ').*'wird angehängt). Jedes Muster wird nach den durch gekennzeichneten Prüfungen mit der Linie getestetHISTCONTROL angewendet werden. Zusätzlich zu den normalen Zeichen für das Shell-Muster '&'stimmt mit der vorherigen Verlaufszeile überein. '&'kann mit einem Backslash entkommen werden; Der Backslash wird entfernt, bevor ein Match versucht wird. Die zweite und die folgenden Zeilen eines mehrzeiligen Verbundbefehls werden nicht getestet und unabhängig vom Wert von in die Historie eingefügtHISTIGNORE.

HISTSIZE: Die Anzahl der Befehle, die im Befehlsverlauf zu beachten sind. Der Standardwert ist 500.

ZUHAUSE: Das Ausgangsverzeichnis des aktuellen Benutzers. das Standardargument für dieCD eingebauter Befehl. Der Wert dieser Variablen wird auch bei der Tilde-Erweiterung verwendet.

HOSTFILE: Enthält den Namen einer Datei im gleichen Format wie / etc / hosts Dies sollte gelesen werden, wenn die Shell einen Hostnamen vervollständigen muss. Die Liste der möglichen Hostnamen-Vervollständigungen kann geändert werden, während die Shell ausgeführt wird. beim nächsten Versuch, den Hostnamen fertigzustellen, nachdem der Wert geändert wurde,bash fügt den Inhalt der neuen Datei der vorhandenen Liste hinzu. Ob HOSTFILE ist gesetzt, hat aber keinen Wert,bash versucht zu lesen / etc / hosts um die Liste der möglichen Hostnamen zu erhalten. WannHOSTFILE nicht gesetzt ist, wird die Hostnamenliste gelöscht.

IFS: Das Internes Feldtrennzeichen wird zum Aufteilen von Wörtern nach der Erweiterung und zum Aufteilen von Zeilen in Wörter mit verwendetlesen eingebauter Befehl. Der Standardwert ist "''.

IGNOREEOF: Steuert die Aktion einer interaktiven Shell beim Empfang einerEOF Zeichen als einzige Eingabe. Wenn gesetzt, ist der Wert die Anzahl der aufeinander folgendenEOF Zeichen, die als erste Zeichen in einer Eingabezeile zuvor eingegeben werden müssenbash Ausgänge Wenn die Variable zwar existiert, aber keinen numerischen Wert oder keinen Wert hat, ist der Standardwert 10. Wenn er nicht vorhanden ist,EOF kennzeichnet das Ende der Eingabe in die Shell.

INPUTRC: Der Dateiname für dasZeile lesen Startdatei, die den Standardwert von überschreibt ~ / .inputrc .

LANG: Wird verwendet, um die Gebietsschemakategorie für eine Kategorie zu bestimmen, die nicht ausdrücklich mit einer Variablen ausgewählt wurde, die mit beginntLC_.

LC_ALL: Diese Variable überschreibt den Wert vonLANG und alle anderenLC_ Variable, die eine Gebietsschemakategorie angibt.

LC_COLLATEDiese Variable bestimmt die Sortierreihenfolge, die beim Sortieren der Ergebnisse der Pfadnamenerweiterung verwendet wird, und bestimmt das Verhalten von Bereichsausdrücken, Äquivalenzklassen und Sortierfolgen innerhalb der Pfadnamenerweiterung und des Mustervergleichs.

LC_CTYPE: Diese Variable bestimmt die Interpretation von Zeichen und das Verhalten von Zeichenklassen innerhalb der Pfadnamenerweiterung und des Musterabgleichs.

LC_MESSAGES: Diese Variable bestimmt das Gebietsschema, das zum Übersetzen von doppelten Anführungszeichenfolgen verwendet wird, denen ein a vorangestellt ist$.

LC_NUMERIC: Diese Variable bestimmt die für die Zahlenformatierung verwendete Gebietsschemakategorie.

LINIEN: Von der verwendetwählen Builtin-Befehl zum Bestimmen der Spaltenlänge für das Drucken von Auswahllisten. Wird beim Empfang eines SIGWINCH automatisch eingestellt.

MAIL: Wenn dieser Parameter auf einen Dateinamen und den Dateinamen gesetzt istMAILPATH Variable ist nicht gesetztbashinformiert den Benutzer über das Eintreffen von E-Mails in der angegebenen Datei.

MAILCHECK: Gibt an, wie oft (in Sekunden)bash prüft auf Mail. Die Standardeinstellung beträgt 60 Sekunden. Wenn nach E-Mails gesucht werden soll, tut dies die Shell, bevor die primäre Eingabeaufforderung angezeigt wird. Wenn diese Variable nicht festgelegt oder auf einen Wert festgelegt ist, der nicht größer oder gleich Null ist, deaktiviert die Shell die E-Mail-Überprüfung.

MAILPATH: Eine durch Doppelpunkte getrennte Liste der Dateinamen, die auf Mail überprüft werden sollen. Die Nachricht, die gedruckt werden soll, wenn E-Mails in einer bestimmten Datei eingehen, kann angegeben werden, indem der Dateiname von der Nachricht mit einem '?' Getrennt wird. Wenn im Text der Nachricht verwendet,$_ erweitert den Namen der aktuellen Mail-Datei. Beispiel:

MAILPATH = '/ var / mail / bfox? "Sie haben Mail": ~ / shell-mail? "$ _ Hat Mail!"'

Bash liefert einen Standardwert für diese Variable, aber der Speicherort der benutzten Mail-Dateien ist systemabhängig (/ var / mail /$ USER).

OPTERR: Wenn auf den Wert 1 eingestellt,bash Zeigt Fehlermeldungen an, die vom erzeugt wurdenGetopts eingebauter Befehl.OPTERR wird bei jedem Aufruf der Shell oder Ausführung eines Shell-Skripts auf 1 initialisiert.

PFAD: Der Suchpfad für Befehle. Es ist eine durch Doppelpunkte getrennte Liste von Verzeichnissen, in denen die Shell nach Befehlen sucht. Der Standardpfad ist systemabhängig und wird vom Administrator festgelegt, der installiert wirdbash. Ein häufiger Wert ist "/ usr / gnu / bin: / usr / local / bin: / usr / ucb: / bin: / usr / bin :. ''.

POSIXLY_CORRECT: Wenn sich diese Variable in der Umgebung befindetbash beginnt, die Schale tritt ein Posix-Modus vor dem Lesen der Startdateien, als ob die--posix Aufrufoption wurde bereitgestellt. Wenn es eingestellt ist, während die Shell läuft,bash ermöglicht Posix-Modus als ob der Befehl set -o posix war ausgeführt worden

PROMPT_COMMAND: Wenn gesetzt, wird der Wert vor der Ausgabe jeder primären Eingabeaufforderung als Befehl ausgeführt.

PS1: Der Wert dieses Parameters wird erweitert und als primäre Eingabeaufforderung verwendet. Der Standardwert ist " s- v $''.

PS2: Der Wert dieses Parameters wird wie bei erweitertPS1 und als sekundäre Eingabeaufforderung verwendet. Der Standardwert ist "> ''.

PS3: Der Wert dieses Parameters wird als Eingabeaufforderung für verwendetwählen Befehl.

PS4: Der Wert dieses Parameters wird wie bei erweitertPS1, und der Wert wird vor jedem Befehl gedrucktbash wird während einer Ablaufverfolgung angezeigt. Das erste Zeichen vonPS4 wird bei Bedarf mehrmals repliziert, um mehrere Ebenen der Indirektion anzuzeigen. Der Standardwert ist "+ ''.

ZEITFORMAT: Der Wert dieses Parameters wird als Formatzeichenfolge verwendet, um anzugeben, wie die Timing-Informationen für Pipelines mit dem Präfix "."Zeit Reserviertes Wort sollte angezeigt werden. Das % Zeichen führt eine Escape-Sequenz ein, die auf einen Zeitwert oder andere Informationen erweitert wird. Die Escape-Sequenzen und ihre Bedeutung sind wie folgt. Die geschweiften Klammern bezeichnen optionale Teile.

  • %%: Ein wörtliche%
  • % p l R: Die verstrichene Zeit in Sekunden
  • % p l U: Die Anzahl der CPU-Sekunden im Benutzermodus
  • % p l S: Die Anzahl der CPU-Sekunden im Systemmodus
  • % P: Der CPU-Prozentsatz, berechnet als (% U +% S) /% R

Die Wahl p ist eine Ziffer, die die Zahl angibt Präzision , die Anzahl der Nachkommastellen nach einem Dezimalzeichen. Der Wert 0 bewirkt, dass kein Dezimalpunkt oder Bruch ausgegeben wird. Es dürfen höchstens drei Stellen nach dem Dezimalpunkt angegeben werden. Werte von p größer als 3 werden in 3 geändert. Wenn p nicht angegeben, wird der Wert 3 verwendet.

Die Wahll gibt ein längeres Format einschließlich Minuten des Formulars an MM m SS . FF s. Der Wert von p bestimmt, ob der Bruch enthalten ist oder nicht.

Wenn diese Variable nicht gesetzt ist,bash wirkt so, als hätte es den Wert $ ' nreal t% 3lR nBenutzer t% 3lU nsys% 3lS'. Wenn der Wert null ist, werden keine Timing-Informationen angezeigt. Eine nachgestellte Zeile wird hinzugefügt, wenn die Formatzeichenfolge angezeigt wird.

TMOUT: Wenn der Wert größer als Null ist,TMOUT wird als Standard-Timeout für die behandeltlesen eingebaut Daswählen Der Befehl wird beendet, wenn die Eingabe danach nicht ankommtTMOUT Sekunden, wenn die Eingabe von einem Terminal kommt.In einer interaktiven Shell wird der Wert als Anzahl von Sekunden interpretiert, die nach der Ausgabe der primären Eingabeaufforderung auf die Eingabe gewartet wird.Bash endet nach dem Warten auf diese Anzahl von Sekunden, wenn keine Eingabe erfolgt.

auto_resumeDiese Variable steuert, wie die Shell mit der Benutzer- und Jobsteuerung interagiert. Wenn diese Variable festgelegt ist, werden einfache Befehle mit einem Wort ohne Umleitungen als Kandidaten für die Wiederaufnahme eines vorhandenen angehaltenen Jobs behandelt. Es ist keine Mehrdeutigkeit erlaubt. Wenn mehr als ein Job mit der eingegebenen Zeichenfolge beginnt, wird der zuletzt aufgerufene Job ausgewählt. Das Name eines gestoppten Jobs ist in diesem Zusammenhang die Befehlszeile, die zum Starten des Jobs verwendet wird. Wenn auf den Wert gesetzt genau Die angegebene Zeichenfolge muss genau mit dem Namen eines angehaltenen Jobs übereinstimmen. wenn eingestellt auf Teilzeichenfolge Die angegebene Zeichenfolge muss mit einer Teilzeichenfolge des Namens eines angehaltenen Jobs übereinstimmen. Das Teilzeichenfolge value bietet Funktionalität analog zum%? Jobkennung Bei einem anderen Wert muss die angegebene Zeichenfolge ein Präfix des Namens eines gestoppten Jobs sein. Dies bietet eine Funktionalität ähnlich der% Jobkennung

Histarchas: Die zwei oder drei Zeichen, die die Historienerweiterung und die Tokenisierung steuern. Das erste Zeichen ist das Erweiterung der Geschichte Zeichen, das Zeichen, das den Beginn einer Historienerweiterung signalisiert, normalerweise '!'. Das zweite Zeichen ist das schneller Ersatz Zeichen, das als Kürzel für das erneute Ausführen des zuvor eingegebenen Befehls verwendet wird, wobei eine Zeichenfolge durch eine andere im Befehl ersetzt wird. Die Standardeinstellung lautet '^'. Das optionale dritte Zeichen ist das Zeichen, das angibt, dass der Rest der Zeile ein Kommentar ist, wenn er normalerweise als erstes Zeichen eines Wortes gefunden wird.#'. Das Protokollkommentarzeichen bewirkt, dass für die verbleibenden Wörter in der Zeile ein Ersatz für den Verlauf übersprungen wird. Dies führt nicht notwendigerweise dazu, dass der Shell-Parser den Rest der Zeile als Kommentar behandelt.

Arrays

Bash liefert eindimensionale Array-Variablen. Jede Variable kann als Array verwendet werden. das erklären Builtin deklariert explizit ein Array. Es gibt keine maximale Begrenzung für die Größe eines Arrays und auch keine Anforderung, dass Mitglieder indexiert oder zusammenhängend zugewiesen werden. Arrays werden mit Ganzzahlen indiziert und sind nullbasiert.

Ein Array wird automatisch erstellt, wenn mithilfe der Syntax Variablen zugewiesen werden Name Index = Wert . Das Index wird als arithmetischer Ausdruck behandelt, der auf eine Zahl größer oder gleich Null ausgewertet werden muss. Um ein Array explizit zu deklarieren, verwenden Sie-a angeben Name . -a angeben Name Index wird auch akzeptiert; das Index wird ignoriert. Attribute können für eine Array-Variable mithilfe von angeg