So passen Sie die Bash-Shell mit shopt an

Mit dem Befehl `shopt` können Sie das Verhalten Ihrer Bash-Shell anpassen und über 50 verschiedene Einstellungen modifizieren. Wir zeigen Ihnen, wie Sie Ihr Linux-System nach Ihren Vorstellungen konfigurieren können.

Das Shopt-Befehl

Der integrierte Befehl `shopt` ist in allen Versionen der
Bash-Shell
vorhanden, es ist also keine Installation erforderlich. Die Anzahl der verfügbaren Optionen für `shopt` hat sich im Laufe der Zeit stetig erhöht. Je älter Ihre Bash-Version ist, desto kürzer ist die Liste der Shopt-Optionen.

Wenn etwas auf Ihrem Rechner nicht wie erwartet funktioniert, überprüfen Sie den entsprechenden Eintrag in den Manpages der Bash, um sicherzustellen, dass die gewünschte Option in Ihrer Version von `shopt` verfügbar ist.

Wir werden im Folgenden alle Optionen von `shopt` behandeln und erläutern, wie man sie verwendet, sowie einige Beispiele geben. Sie können die Manpage der Bash oder das
GNU Bash-Referenzhandbuch
konsultieren, um weitere Informationen über diese Optionen zu finden.

Einige `shopt`-Optionen sind standardmäßig aktiviert und gehören zum Standardverhalten der Bash. Sie können eine `shopt`-Option als kurzfristige Änderung aktivieren. Diese Änderung wird beim Schließen der Shell auf das Standardverhalten zurückgesetzt.

Wenn Sie jedoch möchten, dass eine geänderte Verhaltensweise immer beim Start einer Bash-Shell verfügbar ist, können Sie die Änderungen permanent machen.

Die Shopt-Optionen

Es gibt insgesamt 53 `shopt`-Optionen. Wenn Sie den Befehl `shopt` ohne zusätzliche Optionen verwenden, werden diese aufgelistet. Wir können die Ausgabe durch den Befehl `wc` leiten, um die Zeilen, Wörter und Zeichen zu zählen. Da jede `shopt`-Option in einer eigenen Zeile steht, entspricht die Anzahl der Zeilen der Anzahl der Optionen.

Geben Sie Folgendes ein:

shopt | wc

Um alle Optionen übersichtlich darzustellen, können wir die Ausgabe durch den Befehl `column` leiten, der die Optionsnamen in Spalten anzeigt. Alternativ können wir die Ausgabe durch `less` leiten, um sie seitenweise anzuzeigen.

Geben Sie Folgendes ein:

shopt | column

Shopt im Linux-Handbuch finden

Der Abschnitt über `shopt` und seine Optionen befindet sich im Bash-Abschnitt des Linux-Handbuchs. Dieser Abschnitt ist sehr umfangreich. Um den Abschnitt zu `shopt` zu finden, können Sie entweder scrollen oder die Suchfunktion des Handbuchs nutzen.

Öffnen Sie das Handbuch im Bash-Abschnitt:

man bash

Drücken Sie im Handbuch die Taste `/`, um die Suche zu starten. Geben Sie dann Folgendes ein und bestätigen Sie mit der Eingabetaste:

assoc_expand_once

Der Anfang des `shopt`-Optionsabschnitts wird im Man-Fenster angezeigt.

Optionen aktivieren und deaktivieren

Verwenden Sie folgende Befehle, um `shopt`-Optionen zu setzen oder zurückzusetzen:

`-s`: Setzen oder aktivieren.

`-u`: Zurücksetzen oder deaktivieren.

Da einige Optionen standardmäßig aktiviert sind, ist es nützlich zu überprüfen, welche Optionen aktiviert sind. Sie können dies mit den Optionen `-s` und `-u` ohne Angabe eines Optionsnamens tun. Dies bewirkt, dass `shopt` die ein- und ausgeschalteten Optionen auflistet.

Geben Sie Folgendes ein:

shopt -s

shopt -u | column

Sie können eine `shopt`-Option ohne die Befehle `-s` oder `-u` verwenden, um den Ein- oder Aus-Zustand der jeweiligen Option anzuzeigen.

Beispielsweise können wir Folgendes eingeben, um den Status der Option `histverify` zu überprüfen:

shopt histverify

Wir können Folgendes eingeben, um sie zu aktivieren:

shopt -s histverify

Dann können wir Folgendes eingeben, um es erneut zu überprüfen:

shopt histverify

Die Option `histverify` ändert die Art und Weise, wie ein Aspekt des Verlaufsbefehls funktioniert. Wenn Sie den Verlauf auffordern, einen Befehl zu wiederholen, indem Sie ihn mit einer Nummer wie `!245` referenzieren, wird der Befehl normalerweise aus dem Befehlsverlauf abgerufen und sofort ausgeführt.

Wenn Sie es bevorzugen, einen Befehl zu überprüfen, um sicherzustellen, dass es der erwartete ist, und ihn gegebenenfalls zu bearbeiten, geben Sie Folgendes ein, um die Option `shopt histverify` auf „ein“ zu setzen:

!245

Der Befehl wird abgerufen und in der Befehlszeile angezeigt. Sie können ihn entweder löschen, bearbeiten oder durch Drücken der Eingabetaste ausführen.

Die autocd-Option

Wenn Sie die Option `autocd` aktivieren, wird die Eingabe des Namens eines Verzeichnisses in der Befehlszeile als `cd`-Befehl behandelt.

Geben Sie Folgendes ein, um die Option `autocd` zu aktivieren:

shopt -s autocd

Geben Sie dann den Namen eines Verzeichnisses ein:

Documents

Die cdspell-Option

Wenn die Option `cdspell` aktiviert ist, korrigiert die Bash automatisch einfache Rechtschreibfehler und Tippfehler in Verzeichnisnamen.

Geben Sie Folgendes ein, um die Option `cdspell` zu aktivieren:

shopt -s cdspell

Um zu versuchen, in ein Verzeichnis zu wechseln, dessen Namen mit einem Großbuchstaben beginnen sollte, geben wir Folgendes ein:

cd documents

Dann können wir Folgendes eingeben, um einen Verzeichnisnamen mit einem zusätzlichen „t“ im Namen auszuprobieren:

cd ../Picttures

Die Bash wechselt in jedes Verzeichnis, unabhängig von den Rechtschreibfehlern.

Die xpg_echo-Option

Wenn die Option `xpg_echo` aktiviert ist, werden von `echo` maskierte Zeichen wie `\n` für neue Zeile und `\t` für horizontalen Tabulator interpretiert.

Zuerst stellen wir sicher, dass die Option gesetzt ist:

shopt -s xpg_echo

Wir fügen dann `\n` in eine Zeichenkette ein, die wir an `echo` übergeben:

echo "This is line onenThis is line two"

Das maskierte Zeilenumbruchzeichen erzwingt einen Zeilenumbruch in der Ausgabe.

Dies erzeugt das gleiche Verhalten wie die Option `-e`
(Ermöglichen der Escape-Interpretation) von `echo`, aber mit `xpg_echo` ist dies das Standardverhalten.

Die dotglob-Option

Die Option `dotglob` sollte mit Vorsicht behandelt werden. Sie ermöglicht es, Dateien und Verzeichnisse, die mit einem Punkt (.) beginnen, in Namenserweiterungen oder „Globbing“ einzubeziehen. Diese werden als „Punktdateien“ oder „Punktverzeichnisse“ bezeichnet und sind normalerweise versteckt. Die Option `dotglob` ignoriert den Punkt am Anfang ihrer Namen.

Zuerst suchen wir nach Dateien oder Verzeichnissen, die auf „geek“ enden:

ls *geek

Eine Datei wird gefunden und aufgelistet. Dann aktivieren wir die Option `dotglob`:

shopt -s dotglob

Wir führen denselben `ls`-Befehl aus, um nach Dateien und Verzeichnissen zu suchen, die auf „geek“ enden:

ls *geek

Dieses Mal werden zwei Dateien gefunden und aufgelistet, von denen eine eine Punktdatei ist. Seien Sie vorsichtig bei der Verwendung von `rm` und `mv`, wenn die Option `dotglob` aktiviert ist.

Die nocaseglob-Option

Die Option `nocaseglob` ähnelt der Option `dotglob`, jedoch bewirkt `nocaseglob`, dass Unterschiede in der Groß- und Kleinschreibung von Dateinamen und Verzeichnissen bei der Namenserweiterung ignoriert werden.

Wir geben Folgendes ein, um nach Dateien oder Verzeichnissen zu suchen, die mit „how“ beginnen:

ls how*

Eine Datei wird gefunden und aufgelistet. Wir aktivieren die Option `nocaseglob`:

shopt -s nocaseglob

Dann wiederholen wir den `ls`-Befehl:

ls how*

Es werden zwei Dateien gefunden, von denen eine Großbuchstaben enthält.

Änderungen dauerhaft machen

Die vorgenommenen Änderungen bleiben nur bis zum Schließen der aktuellen Bash-Shell erhalten. Um sie über verschiedene Shell-Sitzungen hinweg permanent zu machen, müssen wir sie zu unserer Datei `.bashrc` hinzufügen.

Geben Sie in Ihrem Home-Verzeichnis den folgenden Befehl ein, um die Datei `.bashrc` im grafischen Texteditor Gedit zu öffnen (oder passen Sie ihn an Ihren bevorzugten Editor an):

gedit .bashrc

Der Gedit-Editor wird mit geladener Datei `.bashrc` geöffnet. Sie werden sehen, dass einige `shopt`-Einträge bereits darin enthalten sind.

Sie können hier auch Ihre eigenen `shopt`-Optionen hinzufügen. Nachdem Sie sie hinzugefügt haben, speichern Sie Ihre Änderungen und schließen Sie den Editor. Wenn Sie jetzt eine neue Bash-Shell öffnen, werden Ihre Optionen automatisch gesetzt.

Optionen in Hülle und Fülle

Es ist richtig, dass der Befehl `shopt` viele Optionen bietet, aber Sie müssen sich nicht mit allen auf einmal auseinandersetzen. Da es so viele gibt, gibt es wahrscheinlich einige, die für Sie nicht relevant sind.

Es gibt zum Beispiel viele Optionen, die die Bash dazu zwingen, mit bestimmten älteren Versionen kompatibel zu sein. Das könnte für einige nützlich sein, ist aber eher ein Spezialfall.

Sie können die
Bash-Manpage
oder das
GNU Bash-Referenzhandbuch
konsultieren. Entscheiden Sie, welche Optionen für Sie einen Unterschied machen, und experimentieren Sie dann mit ihnen. Seien Sie jedoch vorsichtig mit Optionen, die die Art und Weise beeinflussen, wie Datei- und Verzeichnisnamen erweitert werden. Testen Sie diese mit einem harmlosen Befehl wie `ls`, bis Sie mit ihnen vertraut sind.