Child Bash ist identisch mit dem Aufruf des übergeordneten Elements

357
Andrew Wood

Ist es möglich, eine Bash so aufzurufen, dass alles über meine Umgebung (Aliase, Funktion, exportierte / nicht exportierte Variablen usw.) in der neuen Shell vorhanden ist?

Ich würde mich damit zufriedengeben, nur die Shell-Variablen zu bekommen, die nicht Teil meiner Umgebung sind. Ich laufe bash --norcund das erste, was mir auffällt, ist, dass ich $ PS1 und meine lsFarben verloren habe. Ich könnte diese Variablen einfach exportieren, bevor bashich anrufe, aber ich mache mir Sorgen um die ganze Menge anderer Dinge, die ich vermisse.

0

2 Antworten auf die Frage

1
cledoux

Vielleicht möchten Sie in den Befehl aliasund schauen set. Wenn ohne Parameter ausgeführt, aliaswerden alle definierten Parameter und setalle Variablen und Funktionen aufgelistet. Wenn Sie die Ausgabe dieser Befehle in eine temporäre Datei verschieben und dann bash mitteilen, dass diese Datei als rc-Datei gelesen werden soll, kann dies Ihren Vorstellungen entsprechen.

Dies ist das nächste, was ich noch nicht war, aber ich habe endlich akzeptiert, dass das, was ich wirklich will, unmöglich ist. Ich möchte ein Perl-Skript schreiben, das meine Umgebung festlegt. Es würde etwas tun, einige Variablen setzen und schließlich `exec bash`. Ich kann es mir nicht leisten, die Umgebung durch rc init-Dateien beschmutzen zu lassen, aber ich möchte Dinge wie ls Coloring und eine absteigende PS1. Ich denke, meine beste Wette ist vielleicht, dass das Perl-Skript die Änderungen der Umgebung druckt und der Benutzer es mit einem Häkchen abrufen lässt. Andrew Wood vor 13 Jahren 0
Lassen Sie es je nach Komplexität des Perl-Skripts seine eigene temporäre RC-Datei schreiben und rufen Sie dann bash mit: bash --rcfile auf Dadurch wird nicht die systemweite oder Benutzer-RC-Datei geladen, sondern nur die angegebene Datei. cledoux vor 13 Jahren 0
Ich war teilweise dabei, genau das zu tun, als mir klar wurde, dass das Skript keinen Zugriff auf die Aliasnamen und Funktionen seiner Eltern haben kann - nur auf die Umgebung. Andrew Wood vor 13 Jahren 0
0
grawity

Nein.

Sie können jedoch den automatischen Export von Funktionen und Variablen aktivieren, indem Sie set -aoben in Ihr rcSkript hinzufügen .