GNU/Linux >> Tutoriales Linux >  >> Linux

¿A Env o no a Env?

¿Cuál es la diferencia entre el comando

$ env FOO=bar baz

y

$ FOO=bar baz

¿Qué efecto tiene env tienes?

Respuesta aceptada:

Son funcionalmente equivalentes.

La principal diferencia es que env FOO=bar baz implica invocar un proceso intermediario entre el shell y baz , donde como con FOO=bar baz el shell invoca directamente a baz .
Entonces, en ese sentido, FOO=bar baz es preferible.

Las únicas situaciones en las que me encuentro usando env FOO=bar in es donde tengo que pasar un comando a otro comando.
Como ejemplo específico, digamos que tengo un script contenedor que realiza algunas modificaciones del entorno y luego llama a exec en el comando que se le pasó, como:

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

Si lo ejecuta como myscript FOO=bar baz , el exec arrojará un error como exec FOO=bar baz no es válido.
En su lugar, lo llama como myscript env FOO=bar baz que se ejecuta como exec env FOO=bar baz , y es perfectamente válido.


Linux
  1. ifrename:comando no encontrado

  2. id:comando no encontrado

  3. w:comando no encontrado

  4. df:comando no encontrado

  5. du:comando no encontrado

¿Por qué Cd no es un programa?

¿Ssh-agent no se configura (ssh_auth_sock, Ssh_agent_pid Env Vars no configurado)?

Ejemplos de comandos env en Linux

aws-shell:comando no encontrado

ln:comando no encontrado

Archivo oculto .env no copiado usando Docker COPY