Ignorer les variables d'un autre shell

0

Je suis sur un poste de travail Linux dans un réseau, avec un "ancien" distributeur. De plus, le shell de connexion est imposé à CSH. J'ai déjà demandé aux administrateurs s'il serait possible de passer à un autre (j'aimerais bien avoir bash), mais c'était un non-aller ...

Par conséquent, je lance bash depuis la ligne de commande, en tant que shell interactif sans connexion (en fait, j'utilise gnome et gnome-terminal avec un profil qui exécute / bin / bash -i en tant que commande). Beaucoup, si pas tous mes scripts utilisent bash, je les lance en appelant bash avec un script. C'est désordonné mais ça fonctionne.

J'ai .cshrc avec des variables d'environnement, des alias et des options pour csh définis dans un fichier .login et des fichiers .cshrc dans mon $ HOME. J'ai aussi un .bashrc / .bash_profile (qui redirige vers .bashrc s'il s'agit d'un shell interactif) /. Bash_aliases avec quelques autres variables et d'autres identiques. Lorsque j'exécute le shell bash, j'hérite des variables d'environnement définies dans mon fichier .login. Je voudrais ignorer tout ce qui est mis en place dans celui-ci lorsque je lance bash.

J'aimerais savoir s'il existe une option pour exécuter bash, en ignorant toutes les autres variables d'environnement définies précédemment à partir de ma session de connexion CSH lorsque j'exécute mon shell BASH.

Avez-vous des idées?

Je vous remercie

Marc-Olivier Titeux
la source

Réponses:

2

Au lieu de supprimer manuellement les variables dont vous ne voulez pas hériter, exécutez bash à l'aide de la envcommande suivante:

env -i bash

L' -iindicateur a bashpour effet d'ignorer son environnement hérité.

Chepner
la source
C'est exactement ce que je cherchais! Merci!
Marc-Olivier Titeux
0

Vous voulez exécuter bash en tant que shell non interactif, à l'intérieur de CSH, avec des variables bash définies dans .bash_profile, n'est-ce pas?

Vous pouvez donner un coup de feu:

./bash --login
source ./bash --login

mais je ne peux pas le tester.

okobaka
la source
Merci de répondre. Il n'a pas fait ce que je voudrais aussi: un ensemble $ PLOUC "PLOUZ" défini dans .cshrc me donne toujours un PLOUZ lorsque je fais un echo $ PLOUC après / bin / bash --login
Marc-Olivier Titeux
donc après ./bash --logincelasource .bash_profile
okobaka
Même résultat malheureusement ...
Marc-Olivier Titeux
Bash lui-même pourrait hériter de var de l'environnement qui a été exécuté, chercher le commutateur approprié man bash. Si vous souhaitez simplement supprimer des variables de l'environnement, simplement unset VARNAME1 VARNAME2.
okobaka
1
Imprimez-les tous env | awk -F= '/^\w/ {print $1}' | xargs, puis supprimez ceux qui sont importants et défaites.
okobaka