GNU/Linux >> Tutoriels Linux >  >> Linux

Env ou pas env ?

Quelle est la différence entre la commande

$ env FOO=bar baz

et

$ FOO=bar baz

Quel effet fait env avez ?

Réponse acceptée :

Ils sont fonctionnellement équivalents.

La principale différence est que env FOO=bar baz implique l'invocation d'un processus intermédiaire entre le shell et baz , où comme avec FOO=bar baz le shell invoque directement baz .
Donc, à cet égard, FOO=bar baz est préféré.

Les seules situations dans lesquelles je me trouve en utilisant env FOO=bar in est l'endroit où je dois passer une commande à une autre commande.
Comme exemple spécifique, disons que j'ai un script wrapper qui effectue quelques modifications de l'environnement, puis appelle exec sur la commande qui lui a été passée, par exemple :

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

Si vous l'exécutez en tant que myscript FOO=bar baz , le exec lancera une erreur comme exec FOO=bar baz n'est pas valide.
Au lieu de cela, vous l'appelez comme myscript env FOO=bar baz qui est exécuté comme exec env FOO=bar baz , et est parfaitement valide.


Linux
  1. gestionnaire d'abonnement :commande introuvable

  2. dnf :commande introuvable

  3. bc :commande introuvable

  4. id :commande introuvable

  5. w :commande introuvable

Les variables d'environnement dans /etc/environment ne sont pas globalement visibles ?

Ssh-agent n'est pas configuré (ssh_auth_sock, Ssh_agent_pid Env Vars Not Set) ?

Quoi ne pas mettre sur un SSD ?

env Exemples de commandes sous Linux

nc :commande introuvable

aws-shell :commande introuvable