Comment get un environnement propre dans un shell ksh?

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?

  • Version Ksh: Version M-11/16 / 88i
  • OS: Solaris 10

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:

  • J'ai utilisé un shell pour voir l'environnement qui en résulte, n'importe quelle command peut être utilisée (devinez ce que env - /usr/bin/env renvoie)
  • (commentaire de @ jlliagre 🙂 env est une command standard POSIX.

Modifier Clarifié la réponse.