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

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.


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.


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.