Bash/Builtin

Aus Foxwiki

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")

  1. Weil ein builtin Kommando effizienter arbeitet, als ein externes Kommando (keine Prozesserzeugung notwendig; Beispiel »echo«)
  2. Weil nur ein eingebautes Kommando Bash-interne Variablen ändern kann (Beispiel »export«)
  3. 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.
Fruit Price
Null siehe Linux:Shell:Bash:Builtin:null
source siehe Linux:Shell:Bash:Builtin:source
alias Definition einer Abkürzung für ein Kommando Linux:Shell:Bash:Builtin:alias
jobs Listet die Jobnummern aller Hintergrundprozesse auf. Linux:Shell:Bash:Builtin:jobs
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 Linux:Shell:Bash:Builtin:complete
continue siehe Linux:Shell:Bash:Builtin:continue
declare Deklarieren von Variablen Linux:Shell:Bash:Builtin:declare
dirs Anzeige des Verzeichnisstacks Linux:Shell:Bash:Builtin:dirs
disown siehe Linux:Shell:Bash:Builtin:disown
echo Eine Zeile Text anzeigen Linux:Shell:Bash:Builtin:echo Linux:Befehl:echo
enable Eingebauten Kommandos der Shell aktivieren Linux:Shell:Bash:Builtin:enable
eval Liest seine Argumente, wobei die üblichen Ersetzungen stattfinden, und führt die resultierende Zeichenkette als Kommando aus. Linux:Shell:Bash:Builtin:eval
exec Das Kommando besitzt zwei Bedeutungen. Linux:Shell:Bash:Builtin:exec
exit Beendet die Shell Linux:Shell:Bash:Builtin:exit
export Exportieren von Variablen Linux:Shell:Bash:Builtin:export
fc Manipulation der History-Einträge Linux:Shell:Bash:Builtin:fc
fg holt einen Hintergrundprozess in den Vordergrund Linux:Shell:Bash:Builtin:fg
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. Linux:Shell:Bash:Builtin:history
kill Das Kommando dient der Steuerung bereits laufender Prozesse, indem es an diese Signale versendet. Linux:Shell:Bash:Builtin:kill
let Für jedes Argument wird eine arithmetische Substitution versucht. Linux:Shell:Bash:Builtin:let
local Definition lokaler Variablen Linux:Shell:Bash:Builtin:local
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. Linux:Shell:Bash:Builtin:popd
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. Linux:Shell:Bash:Builtin:pushd
pwd Gibt das aktuelle Arbeitsverzeichnis aus. Linux:Shell:Bash:Builtin:pwd
read siehe Linux:Shell:Bash:Builtin:read
readonly Variablen und Funktionen lassen sich nachträglich als »nicht änderbar« deklarieren. Linux:Shell:Bash:Builtin:readonly
return Rücksprung aus einer Funktion. siehe Linux:Shell:Bash:Builtin:return
set [[Linux:Shell:Bash:Builtin:set set dient zum Setzen bash-interner Variablen]]
shift Verschieben der Positionsparameter Linux:Shell:Bash:Builtin:shift
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. Linux:Shell:Bash:Builtin:test
times Misst die Zeit für die Shell und der von dieser gestarteten Kommandos. Linux:Shell:Bash:Builtin:times
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. 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. Linux:Shell:Bash:Builtin:wait