Bash/Interaktiv: Unterschied zwischen den Versionen
Zeile 1: | Zeile 1: | ||
Eine Interaktive Shell liest und schreibt grundsätzlich auf das Terminal des Benutzers: Ein- und Ausgabe sind mit dem Terminal verbunden. | Eine Interaktive Shell liest und schreibt grundsätzlich auf das Terminal des Benutzers: Ein- und Ausgabe sind mit dem Terminal verbunden. | ||
==== Ist meine Shell interaktiv? ==== | |||
Bei Interaktiven Shells enthält der <span >''special parameter''</span> „–“ ein „i“, wenn die Shell interaktiv ist | |||
'''echo $-''' | |||
himBH | |||
In nicht-interaktiven Shells ist zudem die Prompt-Variable PS1 nicht gesetzt! | |||
=== Verhalten interaktiver Shells === | === Verhalten interaktiver Shells === |
Version vom 21. Februar 2022, 16:50 Uhr
Eine Interaktive Shell liest und schreibt grundsätzlich auf das Terminal des Benutzers: Ein- und Ausgabe sind mit dem Terminal verbunden.
Ist meine Shell interaktiv?
Bei Interaktiven Shells enthält der special parameter „–“ ein „i“, wenn die Shell interaktiv ist
echo $- himBH
In nicht-interaktiven Shells ist zudem die Prompt-Variable PS1 nicht gesetzt!
Verhalten interaktiver Shells
Der interaktive Modus der Bash wird gestartet, wenn das 'bash'-Kommando ohne non-option argument gestartet wird, also ohne auszuführendes Kommando oder Skript.* Bash liest Start-Dateien ein
- Job Kontrolle ist eingeschaltet
- Prompts sind gesetzt. PS2 ist aktiviert für mehrzeilige Kommandos (">"), wird auch angezeigt, wenn Kommandos nicht korrekt abgeschlossen wurden.
- Kommandos werden mit readline von der Kommandozeile gelesen.
- Bash beachtet die Shell-Option ignoreeof statt unmittelbar zu terminieren, wenn sie ein EOF (End Of File) empfängt.
- Kommando-History und History-Expansion sind aktiviert
- Alias-Expansion ist aktiviert
- Ohne traps werden SIGTERM-Signale ignoriert
- Ohne traps wird SIGINT beachtet und behandelt, Ctrl+C, beendet z.B. nicht die interaktive Shell
- SIGHUP Signal an alle Jobs, beim Verlassen der Shell, kann mit der huponexit-Option konfiguriert werden
- Kommandos werden nach dem Lesen ausgeführt.
- Bash prüft periodisch nach neuen Mails
- Bash terminiert nicht, wenn sie auf eine unreferenzierte Variable triff
- redirection error interner Befehle terminiert die Shell nicht
- Fehler interner Befehle im POSIX-Mode terminieren die Shell nicht
- fehlerhafter Aufrufe mit exec terminieren die Shell nicht
- Parser syntax errors terminiert die Shell nicht
- einfacher spell check für die Argumente der internen Kommandos ist aktiviert
- Automatisches exit nach der in der Variable TMOUT festgelegten Zeitspanne ist aktiviert
Kommandosyntax
Linux:Shell:Bash:Kommandosyntax
Ausführung von Kommandos
Kommandozeile editieren
Linux:Shell:Bash:Kommandozeile editieren
History
Jobkontrolle
Verzeichnisstapel
dirs, pushd, popd verwalten den Stapel der internen Verzeichnisse. * Mit pushd Verzeichnis wird das angegebene Verzeichnis auf dem Stapel abgelegt.
- Mit popd gelangen Sie anschließend zum zuletzt abgelegten Verzeichnis zurück.
- Den aktuellen Stapelinhalt zeigt der Befehl dirs an.
Pfad-Cache
hash (ohne Parameter) zeigt die Liste der gemerkten Pfade zu den Programmen an.
Um die Zugriffe auf Programme zu beschleunigen, verwaltet die Bash einen internen Cache der Pfade auf bereits gestartete Programme.
Wird ein Programm erneut gestartet, kann die zeitaufwendige Suche entlang des Pfades entfallen.
Bei der Gelegenheit wird auch gleich angezeigt, wie oft das Programm gestartet wurde.
Wer am Abend wissen will, womit er sich den ganzen Tag über beschäftigt hat, kann mit diesem Kommando zumindest Hinweise bekommen (oder er wirft einen Blick auf die .bash_history)
Verwerfen alle gespeicherten Pfade
hash -r v
Eingabeverarbeitung
Linux:Shell:Bash:Eingabeverarbeitung