bash
hat einen internen Befehl namens kill
, und unter Linux gibt es auch einen externen Befehl (Programm) namens kill
.
Wenn ich kill
in ausführe bash
, wird der interne Befehl kill
ausgeführt.
Ich habe zwei Fragen:
- Gibt es eine Einstellung, die ich ändern kann, damit standardmäßig der externe Befehl statt des internen Befehls ausgeführt wird (natürlich ohne den vollständigen Pfad des externen Befehls anzugeben)?
- Ist es ein Standardverhalten, dass in allen (wichtigen) Shells standardmäßig der interne Befehl anstelle des externen Befehls ausgeführt wird, oder ist das einfach so
bash
?
Antwort1
Verwenden Sie
env
es, um es aufzurufen.$ env kill kill: not enough arguments $ kill kill: usage: kill [-s sigspec | -n signum | -sigspec] pid | jobspec ... or kill -l [sigspec]
Alle Shells und Befehlsprozessoren.
Antwort2
Zu Ihrer ersten Frage: Ja, es gibt eine Einstellung, die standardmäßig die Ausführung des externen Befehls anstelle des internen Befehls bewirkt.
Sie können die integrierte Funktion deaktivieren, indem Sie
enable -n COMMAND
Sie können die integrierte Funktion einschalten, indem Sie
enable COMMAND
oder Sie können die Priorität des Befehls ändern. Die Priorität des Bash-Befehls ist:
- alias, es ist die höchste
- Funktion
- eingebaut
- externer Befehl in $PATH
Zu Ihrer zweiten Frage: Ich denke, Sie können immer davon ausgehen, dass der interne Befehl vor dem externen Befehl kommt. Das ist nicht nur eine Bash-Sache.