47 votes

Désinfecter l'environnement avec une commande ou un script bash ?

Dans le shell Bash, je souhaite désinfecter l'environnement en premier lors de l'exécution d'une commande.

Je souhaite supprimer toutes les variables d'environnement et ne définir que celles qui sont essentielles au fonctionnement du shell, ainsi que celles dont mon script a besoin pour terminer sa tâche.

Existe-t-il un moyen de le faire d'une manière simple et propre?

13voto

Eric Leschinski Points 14289

Désactiver toutes les variables d'environnement bash linux

Commande : env -i bash

Exemple, créez des variables locales et d'environnement, puis réinitialisez les valeurs par défaut :

 el@defiant ~$ LOCAL_DOGE="such variable"
el@defiant ~$ ENVIRONMENT_DOGE="much code"
el@defiant ~$ export ENVIRONMENT_DOGE
el@defiant ~$ set | grep DOGE
ENVIRONMENT_DOGE='much code'
LOCAL_DOGE='such variable'
el@defiant ~$ env | grep DOGE
ENVIRONMENT_DOGE=much code
el@defiant ~$ env -i bash
el@defiant ~$ set | grep DOGE
el@defiant ~$ env | grep DOGE
el@defiant ~$

Alors wow, LOCAL_DOGE et ENVIRONMENT_DOGE sont partis avec une seule commande.

Désactivez toutes les variables d'environnement bash linux, de manière alternative.

 env - /bin/bash

Exemple:

 el@defiant ~$ DOGE1="one"
el@defiant ~$ export DOGE2="two"
el@defiant ~$ set | grep DOGE
DOGE1=one
DOGE2=two
el@defiant ~$ env | grep DOGE
DOGE2=two
el@defiant ~$ env - /bin/bash
el@defiant ~$ set | grep DOGE
el@defiant ~$ env | grep DOGE

9voto

chrisaycock Points 12900

Cela a fonctionné quand je l'ai essayé:

 for c in $(set | cut -d '=' -f 1); do unset $c; done

Il a craché des erreurs sur les variables const, mais j'ai pu les ignorer.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X