2016-05-13 6 views

Antwort

0

$ die exec

/usr/bin/die: kein exec in (/ sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin /)

$ man bash

... SHELL BUILTIN BEFEHLE

... exec [-cl] [-a name] [Befehl [Argumente]]

Duh! exec ist keine ausführbare Linux-Datei, die Sie im PATH finden können. es ist ein Shell integrierten Befehl - wie unset oder alias oder if .. then .. else .. fi

Aber Sie können eine Shell starten nur exec heißt

bash -c "echo 'IN SUB-PROCESS' ; exec echo 'this is really a complicated way to run ECHO and terminate' ; echo 'NOT EXECUTED, EXEC TERMINATED THE SUB-PROCESS'" 
+0

Vielen Dank viel für Ihre kompakte Erklärung laufen. Genau das möchte ich wissen. Aber ich würde gerne wissen, warum Exec immer noch aufgerufen werden kann, obwohl es keine ausführbare Linux-Datei ist? Ist eingebettet ist die Shell-Binärdatei? – Rui

+0

Die Shell führt einen Parser auf die Befehle, die Sie eingeben, dann filtert die * eingebaut * Befehle für die interne Verarbeitung und für den Rest versucht es eine passende ausführbare Datei zu finden. Das ist "eingebaut". Und mit 'csh' Shell hätten Sie übrigens sehr unterschiedliche Einbauten mit unterschiedlicher Syntax. –