GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Env oder nicht Env?

Was ist der Unterschied zwischen dem Befehl

$ env FOO=bar baz

und

$ FOO=bar baz

Was bewirkt env haben?

Akzeptierte Antwort:

Sie sind funktional gleichwertig.

Der Hauptunterschied besteht darin, dass env FOO=bar baz beinhaltet das Aufrufen eines zwischengeschalteten Prozesses zwischen der Shell und baz , wo wie bei FOO=bar baz die Shell ruft direkt baz auf .
Also in dieser Hinsicht FOO=bar baz wird bevorzugt.

Die einzigen Situationen, in denen ich mich mit env FOO=bar befinde in ist, wo ich einen Befehl an einen anderen Befehl übergeben muss.
Nehmen wir als spezifisches Beispiel an, ich habe ein Wrapper-Skript, das einige Änderungen an der Umgebung durchführt und dann exec aufruft auf den Befehl, der ihm übergeben wurde, wie zum Beispiel:

#!/bin/bash
FOO=bob
some stuff
exec "[email protected]"

Wenn Sie es als myscript FOO=bar baz ausführen , die exec wird einen Fehler als exec FOO=bar baz ausgeben ist ungültig.
Stattdessen nennen Sie es als myscript env FOO=bar baz was als exec env FOO=bar baz ausgeführt wird , und ist vollkommen gültig.


Linux
  1. Subscription-Manager:Befehl nicht gefunden

  2. dnf:Befehl nicht gefunden

  3. bc:Befehl nicht gefunden

  4. id:Befehl nicht gefunden

  5. w:Befehl nicht gefunden

Warum ist Cd kein Programm?

Env Vars in /etc/environment nicht global sichtbar?

env-Befehlsbeispiele in Linux

ifrename:Befehl nicht gefunden

nc:Befehl nicht gefunden

aws-shell:Befehl nicht gefunden