Bash/Builtin: Unterschied zwischen den Versionen

Aus Foxwiki
Zeile 68: Zeile 68:


= jobs  =
= jobs  =
Listet die Jobnummern aller Hintergrundprozesse auf.  
Listet die Jobnummern aller Hintergrundprozesse auf.
* siehe '''[[Linux:Shell:Bash:Builtin:jobs]]'''


= bind  =
= bind  =

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

Definition einer Abkürzung für ein Kommando

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

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

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

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.