GNU/Linux >> Znalost Linux >  >> Linux

Env či ne Env?

Jaký je rozdíl mezi příkazem

$ env FOO=bar baz

a

$ FOO=bar baz

Jaký účinek má env mít?

Přijatá odpověď:

Jsou funkčně ekvivalentní.

Hlavní rozdíl je v tom, že env FOO=bar baz zahrnuje vyvolání zprostředkujícího procesu mezi shellem a baz , kde jako u FOO=bar baz shell přímo vyvolá baz .
Takže v tomto ohledu FOO=bar baz je preferováno.

Jediné situace, ve kterých se nacházím, používám env FOO=bar in je místo, kde musím předat příkaz jinému příkazu.
Jako konkrétní příklad řekněme, že mám obalový skript, který provádí některé úpravy prostředí a poté volá exec na příkaz, který mu byl předán, například:

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

Pokud jej spustíte jako myscript FOO=bar baz , exec vyvolá chybu jako exec FOO=bar baz je neplatný.
Místo toho jej nazýváte myscript env FOO=bar baz který se provede jako exec env FOO=bar baz , a je dokonale platný.


Linux
  1. Subscription-manager:příkaz nenalezen

  2. dnf:příkaz nenalezen

  3. bc:příkaz nenalezen

  1. id:příkaz nenalezen

  2. w:příkaz nenalezen

  3. df:příkaz nenalezen

  1. Proč není CD program?

  2. du:příkaz nenalezen

  3. Skrytý soubor .env nebyl zkopírován pomocí Docker COPY