Ignoriere Variablen aus einer anderen Shell

0

Ich bin auf einer Linux-Workstation in einem Netzwerk mit einer "alten" Distribution. Darüber hinaus wird die Login-Shell für CSH erzwungen. Ich habe bereits bei Admins nachgefragt, ob es möglich wäre, zu einem anderen zu wechseln (ich hätte gerne eine Bash), aber es war ein No-Go ...

Daher führe ich bash über die Befehlszeile als interaktive Shell ohne Anmeldung aus (tatsächlich verwende ich gnome und gnome-terminal mit einem Profil, das / bin / bash -i als Befehl ausführt). Sehr oft, wenn nicht alle meine Skripte bash verwenden, so starte ich sie damit und rufe bash mit einem Skript auf. Es ist chaotisch, aber es funktioniert.

Ich habe CSHRC mit Umgebungsvariablen, Aliasnamen und Optionen für csh, die in einer .login- und einer .cshrc-Datei in meinem $ HOME definiert sind. Ich habe auch ein .bashrc / .bash_profile (das zu .bashrc umleitet, wenn dies eine interaktive Shell ist) / .bash_aliases mit einigen anderen Variablen und einigen, die gleich sind. Wenn ich die Bash-Shell ausführe, erbe ich die Umgebungsvariablen, die in meiner .login-Datei definiert sind. Ich würde gerne alles ignorieren, was in diesem Setup eingerichtet ist, wenn ich bash laufen lasse.

Ich möchte wissen, ob es eine Option zum Ausführen von bash gibt, bei der alle anderen Umgebungsvariablen ignoriert werden, die zuvor in meiner CSH-Anmeldesitzung definiert wurden, wenn ich meine BASH-Shell ausführe.

Hast du eine Idee?

Vielen Dank

Marc-Olivier Titeux
quelle

Antworten:

2

Anstatt Variablen, die Sie nicht erben möchten, manuell zu deaktivieren, führen Sie bash mit dem Befehl aus env Befehl:

env -i bash

Das -i Flagge verursacht bash seine vererbte Umgebung zu ignorieren.

chepner
quelle
Genau das habe ich gesucht! Vielen Dank!
Marc-Olivier Titeux
0

Sie möchten bash als nicht interaktive Shell in CSH ausführen, wobei bash-Variablen in .bash_profile definiert sind, oder?

Sie könnten ein Shooting geben:

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

aber ich kann es nicht testen.

okobaka
quelle
Danke für die Antwort. Es hat nicht das getan, was ich mir auch gewünscht hätte: Ein in .cshrc definiertes setenv $ PLOUC "PLOUZ" gibt mir immer noch eine PLOUZ, wenn ich nach / bin / bash --login ein Echo von $ PLOUC mache
Marc-Olivier Titeux
so danach ./bash --login führe dies aus source .bash_profile
okobaka
Gleiches Ergebnis leider ...
Marc-Olivier Titeux
Bash selbst könnte var von der Umgebung erben, aus der es ausgeführt wurde man bash. Wenn Sie einfach nur Variablen aus der Umgebung entfernen möchten unset VARNAME1 VARNAME2.
okobaka
1
Drucken Sie sie alle: env | awk -F= '/^\w/ {print $1}' | xargs, dann entfernen Sie die wichtigen und deaktivieren.
okobaka