GNU/Linux >> Linux Esercitazione >  >> Linux

Env o non Env?

Qual è la differenza tra il comando

$ env FOO=bar baz

e

$ FOO=bar baz

Che effetto ha env hai?

Risposta accettata:

Sono funzionalmente equivalenti.

La differenza principale è che env FOO=bar baz implica invocare un processo intermedio tra la shell e baz , dove come con FOO=bar baz la shell invoca direttamente baz .
Quindi, a questo proposito, FOO=bar baz è preferito.

Le uniche situazioni in cui mi trovo ad usare env FOO=bar in è dove devo passare un comando a un altro comando.
Come esempio specifico, diciamo che ho uno script wrapper che esegue alcune modifiche dell'ambiente, e quindi chiama exec sul comando che gli è stato passato, come ad esempio:

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

Se lo esegui come myscript FOO=bar baz , il exec genererà un errore come exec FOO=bar baz non è valido.
Invece lo chiami come myscript env FOO=bar baz che viene eseguito come exec env FOO=bar baz , ed è perfettamente valido.


Linux
  1. Perché Cd non è un programma?

  2. Env Vars In /etc/environment non è visibile a livello globale?

  3. Ssh-agent non viene configurato (ssh_auth_sock, Ssh_agent_pid Env Vars non impostato)?

  4. ifrename:comando non trovato

  5. ln:comando non trovato

env Esempi di comandi in Linux

aws-shell:comando non trovato

du:comando non trovato

rm:comando non trovato

mv:comando non trovato

File nascosto .env non copiato utilizzando Docker COPY