Bash/Builtin: Unterschied zwischen den Versionen
K →exec |
K →fg |
||
Zeile 131: | Zeile 131: | ||
= fg = | = fg = | ||
holt einen Hintergrundprozess in den Vordergrund | |||
* siehe '''[[Linux:Shell:Bash:Builtin:fg]]''' | |||
= getopts = | = getopts = |
Version vom 22. Februar 2022, 13:03 Uhr
Beschreibung
Es liegt wohl in der Natur des Linux-Neulings, seine Testprogramme und -skripten «"test« zu benennen (eigentlich kann ich mich an keinen Linuxkurs erinnern, indem nicht mindestens einer der Teilnehmer auf diese Weise mit den builtin Kommandos der Bash konfrontiert wurde).
Nach verrichteter Arbeit zeigte der Testlauf:
ls -l test -rwxr-xr-x 1 user users 12177 Sep 23 10:52 test test
Mit Kenntnis des Vorgehens der Bash bei der Suche nach einem Kommando, gelangt man bald zum Schluss, dass sich ein builtin Kommando vorgedrängelt hat.
Es gibt eine Fülle solcher eingebauter Kommandos und mindestens 4 Gründe, warum solche in der Bash überhaupt existieren: # Weil es ein solches Kommando in Unix nicht gibt (Beispiel "source")
- Weil ein builtin Kommando effizienter arbeitet, als ein externes Kommando (keine Prozesserzeugung notwendig; Beispiel »echo«)
- Weil nur ein eingebautes Kommando Bash-interne Variablen ändern kann (Beispiel »export«)
- Weil ein Kommando wie »exec« nur innerhalb der Bash realisierbar ist
Betrachten wir die einzelnen builtin-Kommandos:
- Etliche der besprochenen Shell-Kommandos starten nicht, wie sonst üblich, einen eigenen Prozeß, sondern sie werden direkt von der Shell interpretiert und ausgeführt.
- Teilweise ist keine E/A-Umleitung möglich. Etliche Kommandos der folgenden Auswahl wurden schon besprochen.
- Andere werden weiter unten behandelt. Zum Teil gibt es interne und externe Versionen, z. B. 'echo' (intern) und '/bin/echo' (extern).
break | Schleife verlassen |
continue | Sprung zum Schleifenanfang |
echo | Ausgabe |
eval | Mehrstufige Ersetzung |
exec | Überlagerung der Shell durch ein Kommando |
exit | Shell beenden |
export | Variablen für Subshells bekannt machen |
read | Einlesen einer Variablen |
shift | Parameterliste verschieben |
trap | Behandlung von Signalen |
- Bei der Suche nach Kommandos betrachtet die Shell Aliasse und Funktionen noch vor den eingebauten Kommandos. Überdeckt nun ein solcher Name ein builtin-Kommando, so wird beim einfachen Aufruf immer der Alias bzw. die Funktion ausgeführt werden.
- Mit vorangestelltem builtin weist man nun die Bash an, auf jeden Fall ihr eingebautes Kommando aufzurufen.
- Der Rückgabestatus ist gleich dem Rückgabewert des Builtin's oder "falsch", falls das Kommando kein builtin ist.
Null
siehe Linux:Shell:Bash:Builtin:null
source
siehe Linux:Shell:Bash:Builtin:source
alias
- Dient der Definition einer Abkürzung für ein(e) Kommando(folge).
- Mit der Option -p werden alle vorhandenen Aliase aufgelistet.
jobs
Listet die Jobnummern aller Hintergrundprozesse auf.
bind
siehe Linux:Shell:Bash:Builtin:bind
break
siehe Linux:Shell:Bash:Builtin:break
cd
siehe Verzeichnis wechseln
command
siehe Linux:Shell:Bash:Builtin:command
compgen
siehe Linux:Shell:Bash:Builtin:compgen
complete
Mit diesem Kommando kann das ganze Verhalten der Bash bei der Vervollständigung von Argumenten verändert werden
continue
siehe Linux:Shell:Bash:Builtin:continue
declare
Zum Deklarieren von Variablen, wobei diese gleichzeitig mit Attributen versehen werden können; siehe unter Variablen
dirs
Anzeige des Verzeichnisstacks
disown
siehe Linux:Shell:Bash:Builtin:disown
echo
Eine Zeile Text anzeigen
- siehe Linux:Shell:Bash:Builtin:echo
- siehe Linux:Befehl:echo
enable
Eingebauten Kommandos der Shell aktivieren
eval
Liest seine Argumente, wobei die üblichen Ersetzungen stattfinden, und führt die resultierende Zeichenkette als Kommando aus.
exec
- Das Kommando besitzt zwei Bedeutungen.
- siehe Linux:Shell:Bash:Builtin:exec
exit
Beendet die Shell
export
Exportieren von Variablen
fc
Siehe unter Manipulation der History-Einträge
fg
holt einen Hintergrundprozess in den Vordergrund
getopts
siehe Linux:Shell:Bash:Builtin:getopts
hash
siehe Linux:Shell:Bash:Builtin:hash
help
Schreibt einen kurzen Hilfetext zu einem eingebauten Kommando aus.
history
Das Kommando dient zur Anzeige oder Manipulation des Kommandozeilenspeichers.
jobs
- Das Kommando zeigt die in der Jobtabelle erfassten Jobs (Hintergrundprozesse) an.
- Das Format der Ausgabe kann über Optionen gesteuert werden
kill
Das Kommando dient der Steuerung bereits laufender Prozesse, indem es an diese Signale versendet.
let
Für jedes Argument wird eine arithmetische Substitution versucht.
local
Definition lokaler Variablen
logout
- Beendet eine Login-Bash und meldet den Benutzer ab.
- In einer Nicht-Login-Bash hagelt es eine Fehlermeldung.
popd
Entfernt den obersten Eintrag vom Verzeichnisstack und wechselt zum neuen obersten Verzeichniseintrag.
printf
siehe Linux:Shell:Bash:Builtin:printf
pushd
Mit dem Kommando kann in ein angegebenes Verzeichnis gewechselt werden, wobei das Verzeichnis auf einem Stack abgelegt wird.
pwd
Gibt das aktuelle Arbeitsverzeichnis aus.
read
siehe Linux:Shell:Bash:Builtin:read
readonly
Variablen und Funktionen lassen sich nachträglich als »nicht änderbar« deklarieren.
return
Rücksprung aus einer Funktion.
set
set dient zum Setzen bash-interner Variablen
shift
Verschieben der Positionsparameter
shopt
Dient zum Setzen bash-interner Variablen, die das Verhalten der Shell maßgeblich beeinflussen
suspend
Suspendiert die Shell. Sie kann nur durch ein Signal SIGCONT reaktiviert werden.
test
- test liefert in Abhängigkeit vom Wahrheitswert des Ausdrucks 0 (wahr) oder 1 (falsch) zurück und ist damit ein wichtiger Bestandteil vieler Shellskripten.
- siehe Linux:Shell:Bash:Builtin:test
times
Misst die Zeit für die Shell und der von dieser gestarteten Kommandos.
trap
siehe Linux:Shell:Bash:Builtin:trap
type
siehe Linux:Shell:Bash:Builtin:type
typeset
Siehe declare
ulimit
siehe Linux:Shell:Bash:Builtin:ulimit
umask
- Setzt die Rechtemaske für neu erzeugte Dateien oder Verzeichnisse bzw. zeigt die Rechte an.
- siehe Linux:Shell:Bash:Builtin:umask
unalias
Löscht den angegebenen Alias bzw. mit der Option -a alle Aliasse.
unset
Dient zum Löschen einer Variable oder Funktion.
wait
Dient zum Warten auf einen oder alle Hintergrundprozesse.