Wie ist der „integrierte“ Bash-Befehl definiert?

Wie ist der „integrierte“ Bash-Befehl definiert?

Mir ist aufgefallen, dass ein Befehl wie cd ..tatsächlich in konvertiert builtin cd ..und dann ausgeführt wird. Aber wie ist builtindefiniert? which builtinzeigt nichts an und ist nicht in /binusw. /usr/binIst es nur Teil des Bash-Programms und wird anders behandelt?

Antwort1

Built-ins sind einfach Teil von Bash. Sie können herausfinden, ob ein Befehl Built-in ist, indem Sie verwenden type. Beispiel:

$ type export cd source alias
export is a shell builtin
cd is a shell builtin
source is a shell builtin
alias is a shell builtin

Viele integrierte Befehle sind integriert, weil sie nicht anders funktionieren können. cdund sourcesind Beispiele.

Andere integrierte Funktionen sind lediglich aus Effizienzgründen integriert. test(AKA [...]) und echosind Beispiele.

Weitere Informationen finden Sie im SHELL BUILTIN COMMANDSAbschnitt man bashoder im Online-Bash-Handbuch. Um eine Liste der verfügbaren integrierten Funktionen zu erhalten, führen Sie helpin der Eingabeaufforderung aus. Um Informationen zu einer bestimmten integrierten Funktion zu erhalten, führen Sie beispielsweise testaus help test. Beachten Sie, dass help testInformationen zu den integrierten Funktionen von Bash bereitgestellt werden, testwährend im Gegensatz dazu man testwahrscheinlich Hilfe zum externen testBefehl bereitgestellt wird.

Welche Befehle sind sowohl als ausführbare als auch als integrierte Befehle verfügbar?

Mit dieser -aOption typewerden alle Stellen angezeigt, die den genannten Befehl enthalten. Beispiel:

$ type -a echo
echo is a shell builtin
echo is /bin/echo

So verwenden Sie eine ausführbare Datei, wenn eine integrierte Datei verfügbar ist

Wenn Sie aus irgendeinem Grund eine bestimmte ausführbare Datei und nicht das integrierte Shell-Programm verwenden möchten, müssen Sie lediglich den Pfad angeben:

$ /bin/echo "This is not the builtin"
This is not the builtin

Da die integrierten Funktionen normalerweise über mehr Funktionen verfügen, ist dies normalerweise nur für Kompatibilitätstests nützlich.

So führen Sie das Shell-Builtin aus, wenn es durch eine Funktion oder einen Alias ​​verborgen ist

Wenn die Shell die Wahl hat, führt sie normalerweise den integrierten Befehl aus. Eine Ausnahme besteht, wenn der Benutzer einen Alias ​​oder eine Funktion mit demselben Namen definiert hat. Wenn Sie sicher sein möchten, dass Sie den integrierten Befehl ausführen, verwenden Sie den folgenden builtinBefehl:

$ builtin echo  1 2 3
1 2 3

verwandte Informationen