2017-12-20 4 views
1

Was sind Shell-Form und Exec Form von Befehlen? Ich habe mehrere Dokumente durchgelesen, um eine klare Vorstellung von Shell-Form und Exec-Form zu bekommen. Aber alle sahen für mich verwirrend aus. Kann jemand helfen herauszufinden, was der Unterschied zwischen diesen beiden Formen ist?
PS: Obwohl ich auf diese Begriffe gestoßen bin, während ich die docker Datei-Anweisungen durchging (zB: RUN, CMD, ENTRYPOINT), möchte ich den Unterschied zwischen ihnen im Allgemeinen, nicht im Docker Kontext kennen.Was sind Shell-Form und Exec-Form?

+0

Sie würden gut tun, "Docker" als Tag zu Ihrem Q und vielleicht in der Überschrift einzuschließen. Viel Glück. – shellter

Antwort

1

Die Andockfensters Shell-Syntax (die nur eine Zeichenfolge als RUN, ENTRYPOINT ist, und CMD) wird diese Zeichenfolge als Parameter /bin/sh -c auszuführen. Dies gibt Ihnen eine Shell zum Erweitern von Variablen, Unterbefehlen, Rohrleitungsausgaben, Verkettungsbefehlen und anderen Shell-Funktionen.

RUN ls * | grep $trigger_filename || echo file missing && exit 1 

Die exec Syntax läuft einfach die binären Sie mit dem args Sie gehören, aber ohne Funktionen des Shell-Parsing. Im Andockfenster geben Sie dies mit einem json-formatierten Array an.

Der Vorteil der Exec-Syntax ist das Entfernen der Shell aus dem gestarteten Prozess, der die Signalverarbeitung verhindern kann. Die Neuformatierung des Befehls mit /bin/sh -c in der Shell-Syntax kann auch die Verkettung von Ihrem Einstiegspunkt und cmd zusammen brechen.