Bash/Builtin
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).
Befehl | Beschreibung | Link |
---|---|---|
Null | Linux:Shell:Bash:Builtin:null | |
source | 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 | Linux:Shell:Bash:Builtin:bind | |
break | Linux:Shell:Bash:Builtin:break | |
cd | Verzeichnis wechseln | |
command | Linux:Shell:Bash:Builtin:command | |
compgen | 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 | Linux:Shell:Bash:Builtin:continue | |
declare | Deklarieren von Variablen | Linux:Shell:Bash:Builtin:declare |
dirs | Anzeige des Verzeichnisstacks | Linux:Shell:Bash:Builtin:dirs |
disown | 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 | Linux:Shell:Bash:Builtin:getopts | |
hash | 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 wird eine Fehlermeldung ausgegeben. | |
popd | Entfernt den obersten Eintrag vom Verzeichnisstack und wechselt zum neuen obersten Verzeichniseintrag. | Linux:Shell:Bash:Builtin:popd |
printf | 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 | 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. | 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 | Linux:Shell:Bash:Builtin:trap | |
type | Linux:Shell:Bash:Builtin:type | |
typeset | declare | |
ulimit | 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 |