Bash/Builtin: Unterschied zwischen den Versionen

Aus Foxwiki
KKeine Bearbeitungszusammenfassung
Zeile 18: Zeile 18:
* Teilweise ist keine E/A-Umleitung möglich. Etliche Kommandos der folgenden Auswahl wurden schon besprochen.  
* 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).  
* Andere werden weiter unten behandelt. Zum Teil gibt es interne und externe Versionen, z. B. 'echo' (intern) und '/bin/echo' (extern).  
{|class="wikitable sortable"
|-
|  | '''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.


{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Fruit  !! Price
! Befehl !! Beschreibung !! Link
|-
|-
| Null || siehe '''[[Linux:Shell:Bash:Builtin:null]]'''
| Null || siehe '''[[Linux:Shell:Bash:Builtin:null]]'''
Zeile 65: Zeile 27:
| source || siehe '''[[Linux:Shell:Bash:Builtin:source]]'''
| source || siehe '''[[Linux:Shell:Bash:Builtin:source]]'''
|-
|-
| alias || Definition einer Abkürzung für ein Kommando|| '''[[Linux:Shell:Bash:Builtin:alias]]'''
| 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]]'''
| jobs || Listet die Jobnummern aller Hintergrundprozesse auf.|| '''[[Linux:Shell:Bash:Builtin:jobs]]'''
|-
|-
| bind || siehe '''[[Linux:Shell:Bash:Builtin:bind]]'''
| bind || siehe '''[[Linux:Shell:Bash:Builtin:bind]]'''
|-
|-
| break || siehe '''[[Linux:Shell:Bash:Builtin:break]]'''
| break || siehe '''[[Linux:Shell:Bash:Builtin:break]]'''
|-
|-
| cd || siehe '''[[Linux:Shell:Bash:Builtin:cd |Verzeichnis wechseln]]'''
| cd || siehe '''[[Linux:Shell:Bash:Builtin:cd |Verzeichnis wechseln]]'''
|-
|-
| command || siehe '''[[Linux:Shell:Bash:Builtin:command]]'''
| command || siehe '''[[Linux:Shell:Bash:Builtin:command]]'''
|-
|-
| compgen || siehe '''[[Linux:Shell:Bash:Builtin:compgen]]'''
| 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]]'''
| 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]]'''
| continue || siehe '''[[Linux:Shell:Bash:Builtin:continue]]'''
|-
|-
| declare || Deklarieren von Variablen|| '''[[Linux:Shell:Bash:Builtin:declare]]'''
| declare || Deklarieren von Variablen|| '''[[Linux:Shell:Bash:Builtin:declare]]'''
|-
|-
| dirs || Anzeige des Verzeichnisstacks|| '''[[Linux:Shell:Bash:Builtin:dirs]]'''
| dirs || Anzeige des Verzeichnisstacks|| '''[[Linux:Shell:Bash:Builtin:dirs]]'''
|-
|-
| disown || siehe '''[[Linux:Shell:Bash:Builtin:disown]]'''
| disown || siehe '''[[Linux:Shell:Bash:Builtin:disown]]'''
|-
|-
| echo || Eine Zeile Text anzeigen|| [[Linux:Shell:Bash:Builtin:echo]]|| [[Linux:Befehl:echo]]
| echo || Eine Zeile Text anzeigen|| [[Linux:Shell:Bash:Builtin:echo]]|| [[Linux:Befehl:echo]]
|-
|-
| enable || Eingebauten Kommandos der Shell aktivieren|| '''[[Linux:Shell:Bash:Builtin:enable]]'''
| 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]]'''
| 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]]'''
| exec || Das Kommando besitzt zwei Bedeutungen. || '''[[Linux:Shell:Bash:Builtin:exec]]'''
|-
|-
| exit || Beendet die Shell|| '''[[Linux:Shell:Bash:Builtin:exit]]'''
| exit || Beendet die Shell|| '''[[Linux:Shell:Bash:Builtin:exit]]'''
|-
|-
| export || Exportieren von Variablen|| '''[[Linux:Shell:Bash:Builtin:export]]'''
| export || Exportieren von Variablen|| '''[[Linux:Shell:Bash:Builtin:export]]'''
|-
|-
| fc || Manipulation der History-Einträge|| '''[[Linux:Shell:Bash:Builtin:fc]]'''
| fc || Manipulation der History-Einträge|| '''[[Linux:Shell:Bash:Builtin:fc]]'''
|-
|-
| fg || holt einen Hintergrundprozess in den Vordergrund|| '''[[Linux:Shell:Bash:Builtin:fg]]'''
| fg || holt einen Hintergrundprozess in den Vordergrund|| '''[[Linux:Shell:Bash:Builtin:fg]]'''
|-
|-
| getopts || siehe '''[[Linux:Shell:Bash:Builtin:getopts]]'''
| getopts || siehe '''[[Linux:Shell:Bash:Builtin:getopts]]'''
|-
|-
| hash || siehe '''[[Linux:Shell:Bash:Builtin:hash]]'''
| hash || siehe '''[[Linux:Shell:Bash:Builtin:hash]]'''
|-
|-
| help || Schreibt einen kurzen Hilfetext zu einem eingebauten Kommando aus.
| 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]]'''
| 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]]'''
| 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]]'''
| let || Für jedes Argument wird eine arithmetische Substitution versucht. || '''[[Linux:Shell:Bash:Builtin:let]]'''
|-
|-
| local || Definition lokaler Variablen|| '''[[Linux:Shell:Bash:Builtin:local]]'''
| local || Definition lokaler Variablen|| '''[[Linux:Shell:Bash:Builtin:local]]'''
|-
|-
| logout || Beendet eine Login-Bash und meldet den Benutzer ab.  
| logout || Beendet eine Login-Bash und meldet den Benutzer ab.  
  In einer Nicht-Login-Bash hagelt es eine Fehlermeldung.
  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]]'''
| 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]]'''
| 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]]'''
| 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]]'''
| pwd || Gibt das aktuelle Arbeitsverzeichnis aus. || '''[[Linux:Shell:Bash:Builtin:pwd]]'''
|-
|-
| read || siehe '''[[Linux:Shell:Bash:Builtin:read]]'''
| read || siehe '''[[Linux:Shell:Bash:Builtin:read]]'''
|-
|-
| readonly || Variablen und Funktionen lassen sich nachträglich als »nicht änderbar« deklarieren. || '''[[Linux:Shell:Bash:Builtin:readonly]]'''
| 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]]'''
| return || Rücksprung aus einer Funktion. || siehe '''[[Linux:Shell:Bash:Builtin:return]]'''
Zeile 140: Zeile 102:
| shift || Verschieben der Positionsparameter || '''[[Linux:Shell:Bash:Builtin:shift]]'''
| shift || Verschieben der Positionsparameter || '''[[Linux:Shell:Bash:Builtin:shift]]'''
|-
|-
| shopt || Dient zum Setzen bash-interner Variablen, die das Verhalten der Shell maßgeblich beeinflussen
| 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.  
| 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]]'''
| 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]]'''
| 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]]'''
| trap || siehe '''[[Linux:Shell:Bash:Builtin:trap]]'''
|-
|-
| type || siehe '''[[Linux:Shell:Bash:Builtin:type]]'''
| type || siehe '''[[Linux:Shell:Bash:Builtin:type]]'''
|-
|-
| typeset || Siehe '''declare'''
| typeset || Siehe '''declare'''
|-
|-
| ulimit || siehe '''[[Linux:Shell:Bash:Builtin:ulimit]]'''
| 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]]'''
| 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.  
| unalias || Löscht den angegebenen Alias bzw. mit der Option -a alle Aliasse.  
|-
|-
| unset || Dient zum Löschen einer Variable oder Funktion.  
| unset || Dient zum Löschen einer Variable oder Funktion.  
|-
|-
| wait || Dient zum Warten auf einen oder alle Hintergrundprozesse. || '''[[Linux:Shell:Bash:Builtin:wait]]'''
| wait || Dient zum Warten auf einen oder alle Hintergrundprozesse. || '''[[Linux:Shell:Bash:Builtin:wait]]'''
|}
|}


[[Kategorie:Linux:Shell:Bash]]
[[Kategorie:Linux:Shell:Bash]]

Version vom 22. Februar 2022, 13:21 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")

  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).
Befehl Beschreibung Link
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