Bash/Builtin: Unterschied zwischen den Versionen

Aus Foxwiki
 
(51 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
= Beschreibung =
'''Builtins''' - Kommandos, die von der Shell bereitgestellt werden
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:
== Beschreibung ==
'''ls -l test'''
; Kommandos, die von der Shell bereitgestellt werden
-rwxr-xr-x  1  user    users      12177 Sep 23 10:52 test
* Eingebaute Befehle (Builtins)
'''test'''
* Kein eigener Prozess
* Von der Shell interpretiert und ausgeführt


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.
; Intern/Extern
Manchmal gibt es eine eingebaute und eine externe Version
'echo' (intern) und '/bin/echo' (extern)


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")
=== Gründe für eingebauten Befehlen ===
# Weil ein builtin Kommando effizienter arbeitet, als ein externes Kommando (keine Prozesserzeugung notwendig; Beispiel »echo«)  
# Befehl nicht als Unix-Kommando verfügbar
# Weil nur ein eingebautes Kommando Bash-interne Variablen ändern kann (Beispiel »export«)  
#* Beispielsweise ''source''
# Weil ein Kommando wie »exec« nur innerhalb der Bash realisierbar ist  
# 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:
=== Arten von builtin ===
* 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).


=== Was wird gestartet? ===
* [[type]]
* [[whereis]]
=== Builtins ein- und ausschalten ===
== Übersicht ==
{| class="wikitable sortable"
{| class="wikitable sortable"
|-
|-
! Befehl !! Beschreibung !! Link
! Befehl !! Beschreibung
|-
| [[Null]] ||
|-
|-
| Null || || [[Linux:Shell:Bash:Builtin:null]]  
| [[source]] ||
|-
|-
| source || || [[Linux:Shell:Bash:Builtin:source]]  
| [[alias]] || Definition einer Abkürzung für ein Kommando
|-
|-
| alias || Definition einer Abkürzung für ein Kommando || [[Linux:Shell:Bash:Builtin:alias]]  
| [[jobs]] || Listet die Jobnummern aller Hintergrundprozesse auf
|-
|-
| jobs || Listet die Jobnummern aller Hintergrundprozesse auf.|| [[Linux:Shell:Bash:Builtin:jobs]]  
| [[bind]] ||
|-
|-
| bind || || [[Linux:Shell:Bash:Builtin:bind]]  
| [[break]] ||
|-
|-
| break || || [[Linux:Shell:Bash:Builtin:break]]  
| [[cd]] || Verzeichnis wechseln
|-
|-
| cd || || [[Linux:Shell:Bash:Builtin:cd |Verzeichnis wechseln]]  
| [[command]] ||
|-
|-
| command || || [[Linux:Shell:Bash:Builtin:command]]  
| [[compgen]] ||
|-
|-
| compgen || || [[Linux:Shell:Bash:Builtin:compgen]]  
| [[complete]] || Verhalten der Bash bei der Vervollständigung steuern
|-
|-
| 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]] ||
|-
|-
| continue || || [[Linux:Shell:Bash:Builtin:continue]]  
| [[declare]] || Deklarieren von Variablen
|-
|-
| declare || Deklarieren von Variablen|| [[Linux:Shell:Bash:Builtin:declare]]  
| [[dirs]] || Anzeige des Verzeichnisstacks
|-
|-
| dirs || Anzeige des Verzeichnisstacks|| [[Linux:Shell:Bash:Builtin:dirs]]  
| [[disown]] ||
|-
|-
| disown || || [[Linux:Shell:Bash:Builtin:disown]]  
| [[echo]] || Eine Zeile Text anzeigen
|-
|-
| echo || Eine Zeile Text anzeigen|| [[Linux:Shell:Bash:Builtin:echo]] [[Linux:Befehl:echo]]
| [[enable]] || Eingebauten Kommandos der Shell aktivieren
|-
|-
| 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.
|-
|-
| 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.
|-
|-
| exec || Das Kommando besitzt zwei Bedeutungen. || [[Linux:Shell:Bash:Builtin:exec]]  
| [[exit]] || Beendet die Shell
|-
|-
| exit || Beendet die Shell|| [[Linux:Shell:Bash:Builtin:exit]]  
| [[export]] || Exportieren von Variablen
|-
|-
| export || Exportieren von Variablen|| [[Linux:Shell:Bash:Builtin:export]]  
| [[fc]] || Manipulation der History-Einträge
|-
|-
| fc || Manipulation der History-Einträge|| [[Linux:Shell:Bash:Builtin:fc]]  
| [[fg]] || holt einen Hintergrundprozess in den Vordergrund
|-
|-
| fg || holt einen Hintergrundprozess in den Vordergrund|| [[Linux:Shell:Bash:Builtin:fg]]  
| [[getopts]] ||
|-
|-
| getopts || || [[Linux:Shell:Bash:Builtin:getopts]]  
| [[hash]] ||
|-
|-
| hash || || [[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]] || Kommandozeilenspeicher anzeigen
|-
|-
| history || Das Kommando dient zur Anzeige oder Manipulation des Kommandozeilenspeichers. || [[Linux:Shell:Bash:Builtin:history]]  
| [[kill]] || Signale an Prozesse senden
|-
|-
| 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
|-
|-
| let || Für jedes Argument wird eine arithmetische Substitution versucht. || [[Linux:Shell:Bash:Builtin:let]]  
| [[local]] || Definition lokaler Variablen
|-
|-
| 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.
|-
|-
| 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.
|-
|-
| popd || Entfernt den obersten Eintrag vom Verzeichnisstack und wechselt zum neuen obersten Verzeichniseintrag. || [[Linux:Shell:Bash:Builtin:popd]]  
| [[printf]] ||
|-
|-
| 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
|-
|-
| 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
|-
|-
| pwd || Gibt das aktuelle Arbeitsverzeichnis aus. || [[Linux:Shell:Bash:Builtin:pwd]]  
| [[read]] ||
|-
|-
| read || || [[Linux:Shell:Bash:Builtin:read]]  
| [[readonly]] || Variablen und Funktionen lassen sich nachträglich als »nicht änderbar« deklarieren.
|-
|-
| readonly || Variablen und Funktionen lassen sich nachträglich als »nicht änderbar« deklarieren. || [[Linux:Shell:Bash:Builtin:readonly]]  
| [[return]] || Rücksprung aus einer Funktion
|-
|-
| return || Rücksprung aus einer Funktion. || [[Linux:Shell:Bash:Builtin:return]]  
| [[set]] || Setzen bash-interner Variablen
|-
|-
| set || [[Linux:Shell:Bash:Builtin:set || set dient zum Setzen bash-interner Variablen]]
| [[shift]] || Verschieben der Positionsparameter
|-
|-
| 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]] || Bedingungen prüfen
|-
|-
| 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]]  
| [[time]] || Report time consumed by pipeline's execution
|-
|-
| times || Misst die Zeit für die Shell und der von dieser gestarteten Kommandos. || [[Linux:Shell:Bash:Builtin:times]]
| [[times]] || Zeit der Shell und von ihr gestarteter Kommandos messen
|-
|-
| trap || || [[Linux:Shell:Bash:Builtin:trap]]  
| [[trap]] ||
|-
|-
| type || || [[Linux:Shell:Bash:Builtin:type]]  
| [[type]] ||
|-
|-
| typeset || || declare  
| [[typeset]] || declare
|-
|-
| ulimit || || [[Linux:Shell:Bash:Builtin:ulimit]]  
| [[ulimit]] ||
|-
|-
| umask || Setzt die Rechtemaske für neu erzeugte Dateien oder Verzeichnisse bzw. zeigt die Rechte an. || [[Linux:Shell:Bash:Builtin:umask]]
| [[umask]] || Zugriffsrechte für neue Dateien steuern
|-
|-
| unalias || Löscht den angegebenen Alias bzw. mit der Option -a alle Aliasse. ||
| [[unalias]] || Löschen von Aliasen
|-
|-
| unset || Dient zum Löschen einer Variable oder Funktion. ||
| [[unset]] || Löschen einer Variable oder Funktion
|-
|-
| wait || Dient zum Warten auf einen oder alle Hintergrundprozesse. || [[Linux:Shell:Bash:Builtin:wait]]
| [[wait]] || Warten auf einen oder alle Hintergrundprozesse
|}
|}
[[Kategorie:Linux:Shell:Bash]]
 
== Syntax ==
<syntaxhighlight lang="bash" highlight="1" line>
 
</syntaxhighlight>
=== Optionen ===
=== Parameter ===
=== Umgebungsvariablen ===
=== Exit-Status ===
== Anwendung ==
=== Fehlerbehebung ===
== Konfiguration ==
=== Dateien ===
<noinclude>
== Anhang ==
=== Siehe auch ===
{{Special:PrefixIndex/{{BASEPAGENAME}}}}
 
==== Dokumentation ====
===== Man-Pages =====
===== Info-Pages =====
==== Links ====
===== Weblinks =====
 
[[Kategorie:Bash/Builtin]]
</noinclude>

Aktuelle Version vom 22. September 2024, 00:04 Uhr

Builtins - Kommandos, die von der Shell bereitgestellt werden

Beschreibung

Kommandos, die von der Shell bereitgestellt werden
  • Eingebaute Befehle (Builtins)
  • Kein eigener Prozess
  • Von der Shell interpretiert und ausgeführt
Intern/Extern

Manchmal gibt es eine eingebaute und eine externe Version

'echo' (intern) und '/bin/echo' (extern)

Gründe für eingebauten Befehlen

  1. Befehl nicht als Unix-Kommando verfügbar
    • Beispielsweise source
  2. Weil ein builtin Kommando effizienter arbeitet
    • als ein externes Kommando (keine Prozesserzeugung notwendig; Beispiel »echo«)
  3. Weil nur ein eingebautes Kommando Bash-interne Variablen ändern kann (Beispiel »export«)
  4. Weil ein Kommando wie »exec« nur innerhalb der Bash realisierbar ist

Arten von builtin

Was wird gestartet?

Builtins ein- und ausschalten

Übersicht

Befehl Beschreibung
Null
source
alias Definition einer Abkürzung für ein Kommando
jobs Listet die Jobnummern aller Hintergrundprozesse auf
bind
break
cd Verzeichnis wechseln
command
compgen
complete Verhalten der Bash bei der Vervollständigung steuern
continue
declare Deklarieren von Variablen
dirs Anzeige des Verzeichnisstacks
disown
echo Eine Zeile Text anzeigen
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.
exit Beendet die Shell
export Exportieren von Variablen
fc Manipulation der History-Einträge
fg holt einen Hintergrundprozess in den Vordergrund
getopts
hash
help Schreibt einen kurzen Hilfetext zu einem eingebauten Kommando aus.
history Kommandozeilenspeicher anzeigen
kill Signale an Prozesse senden
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 wird eine Fehlermeldung ausgegeben.
popd Entfernt den obersten Eintrag vom Verzeichnisstack und wechselt zum neuen obersten Verzeichniseintrag.
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
readonly Variablen und Funktionen lassen sich nachträglich als »nicht änderbar« deklarieren.
return Rücksprung aus einer Funktion
set 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 Bedingungen prüfen
time Report time consumed by pipeline's execution
times Zeit der Shell und von ihr gestarteter Kommandos messen
trap
type
typeset declare
ulimit
umask Zugriffsrechte für neue Dateien steuern
unalias Löschen von Aliasen
unset Löschen einer Variable oder Funktion
wait Warten auf einen oder alle Hintergrundprozesse

Syntax

Optionen

Parameter

Umgebungsvariablen

Exit-Status

Anwendung

Fehlerbehebung

Konfiguration

Dateien

Anhang

Siehe auch

Dokumentation

Man-Pages
Info-Pages

Links

Weblinks