Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

unset

3 réponses
Avatar
Thomas
bonjour :-)


est ce que c'est possible de supprimer d'un coup toutes les variables
d'environnement, sans avoir à les nommer une par une ?

--
Téléassistance / Télémaintenance
http://www.portparallele.com/ThomasDECONTES/

3 réponses

Avatar
Thierry B
On 2009-06-24, Thomas wrote:

est ce que c'est possible de supprimer d'un coup toutes les variables
d'environnement, sans avoir à les nommer une par une ?




Avec la commande 'env'...

--
Croire en plusieurs dieux sans rien attendre d'eux est un bon moyen
d'éviter de se mettre la rate au court-bouillon.
Avatar
Stephane CHAZELAS
2009-06-24, 15:52(+02), Thomas:
[...]
est ce que c'est possible de supprimer d'un coup toutes les variables
d'environnement, sans avoir à les nommer une par une ?




env -i cmd

lance cmd sans passer de variable d'environnement a cmd.

e() { unset "${1%%=*}"; }
eval "$(export -p | sed "s/export /e /")"

unset toutes les variables d'environnement (dans un sh POSIX).

Mais note que les shells passent la variable _ quoiqu'il arrive,
donc seul env -i passera un environnement vide.

$ sh -c 'e() { unset "${1%%=*}"; }; eval "$(export -p | sed "s/export /e /")"; /usr/bin/env'
_=/usr/bin/env
$ env -i /usr/bin/env
$

Note aussi que certains shells auront des problemes pour les
variables d'environnement qui ne peuvent pas etre mappee sur une
variable shell.

--
Stéphane
Avatar
Thomas
In article ,
Stephane CHAZELAS wrote:

2009-06-24, 15:52(+02), Thomas:
[...]
> est ce que c'est possible de supprimer d'un coup toutes les variables
> d'environnement, sans avoir à les nommer une par une ?


env -i cmd

lance cmd sans passer de variable d'environnement a cmd.

e() { unset "${1%%=*}"; }
eval "$(export -p | sed "s/export /e /")"

unset toutes les variables d'environnement (dans un sh POSIX).



merci :-)


le but c'est de suivre le conseil de lucas


donc comme j'aimerais si possible tout écrire dans le même script, env
ne convient pas mais la 2eme proposition si :-)


par contre, je ne comprend pas tout
peux tu m'expliquer un petit peu stp ? :-)

si j'ai bien compris, je n'ai pas besoin de export -p pour régénérer les
variables après, je vais faire un nouveau shell avec () pour être sur de
récupérer *exactement* l'état précédent :-)



Mais note que les shells passent la variable _ quoiqu'il arrive,
donc seul env -i passera un environnement vide.

$ sh -c 'e() { unset "${1%%=*}"; }; eval "$(export -p | sed "s/export /e
/")"; /usr/bin/env'
_=/usr/bin/env
$ env -i /usr/bin/env
$

Note aussi que certains shells auront des problemes pour les
variables d'environnement qui ne peuvent pas etre mappee sur une
variable shell.



pas de pb,
je vais ajouter ogednjugf en dur aux noms de variables et dans le code,
de façon à court-circuiter les variables en lecture seule :-)

à la limite, même, je préférerais garder PATH

--
Téléassistance / Télémaintenance
http://www.portparallele.com/ThomasDECONTES/