J'ai besoin de se débarrasser de toutes les variables d'environnement dans un shell Ksh. Je peux fourrer une nouvelle instance, mais il fournira inévitablement des files init (pour autant que je sache .kshrc
, .kshrc
). Existe-t-il un moyen de contourner l'origine de ces files et de tout autre file qui pourrait être lu au moment de l'initialisation?
J'espère que je suis assez clair.
~/.profile
est seulement lu par les coquilles de connection. ~/.kshrc
n'est exécuté que pour les shells interactifs.
L' env
Solaris prend en charge la syntaxe (désormais obsolète, mais conservée dans Solaris, qui prend sérieusement en count la compatibilité descendante) env - /path/to/command
pour exécuter /path/to/command
dans un environnement vide. Ainsi, env - /usr/bin/ksh -c /path/to/script
exécutera le script dans un environnement vide et ne fournira aucun script de profil. Ksh peut définir certaines variables d'environnement de sa propre initiative: Je ne sais pas sur ksh88, mais ksh93 définit _
et PWD
, et pdksh définit _
et PATH
.
Vous pouvez sélectivement ou indistinctement effacer les variables d'environnement de l'intérieur de ksh.
unset x for x in $(typeset +x); do unset $x done
me@local:~ $ env - /path/to/shell $ env _=/usr/bin/env PATH=/usr/bin:/bin RANDOM=24395 $
Remarques:
env - /usr/bin/env
renvoie) env
est une command standard POSIX. Modifier Clarifié la réponse.