Rahmen von "setenv" in csh Versus "export" in der bash
Von dem, was ich gelesen habe, setenv
in csh und export
im bash-äquivalent sind. Allerdings fand ich einige seltsame Probleme während der Arbeit mit den beiden.
Wenn ich putty öffnen und mit der Eingabe beginnen:
setenv TEMP yes
echo $TEMP //this give me "yes"
dann gehe ich in die bash und geben
echo $TEMP //this give me "yes" as well
Jedoch, wenn ich es in das Gegenteil um, es würde nicht geben Sie die gleichen Ergebnisse. Speziell, wenn ich zum ersten bash und geben
export TEMP=no
echo $TEMP //this give me "no"
dann gehe ich zurück zu csh-und Typ
echo $TEMP //this give me "Undefined Variable"
Sollte es nicht geben Sie mir "Nein"? Bin ich etwas fehlt?
Danke!
was meinst du mit "dann gehe ich zurück zu csh"? Was genau willst du geben auf "gehen Sie zurück zu csh"?
csh ist mein login-shell, also wenn ich in bash und geben Sie "exit", geht es zurück zur csh.
Recht. beim exportieren einer variable, es wird exportiert, um Kinder, aber es wird nicht exportiert, um das übergeordnete Element. Wenn Sie geben Sie "exit", alle Variablen verschwinden.
wenn Sie sich angemeldet haben, mit
csh ist mein login-shell, also wenn ich in bash und geben Sie "exit", geht es zurück zur csh.
Recht. beim exportieren einer variable, es wird exportiert, um Kinder, aber es wird nicht exportiert, um das übergeordnete Element. Wenn Sie geben Sie "exit", alle Variablen verschwinden.
wenn Sie sich angemeldet haben, mit
csh
dann ist die Antwort natürlich rici gab. Sie sagte, Sie habe dieses "in umgekehrter Reihenfolge", was bedeutete, dass Sie bekam dieses ungewöhnliche Ergebnis aus einer csh
login gehen sh
und dann bash/sh
login gehen csh
. Sie sollten dies verdeutlichen die in Ihrer Frage.
InformationsquelleAutor Dao Lam | 2013-06-27
Du musst angemeldet sein, um einen Kommentar abzugeben.
Exportieren einer Variablen bedeutet, dass eine Kopie der variable wird in der Umgebung von neu erstellten untergeordneten Prozessen. Es ist eine Kopie der Variablen an; wenn das Kind-Prozess ändert die variable, die Eltern nicht sehen, die änderung. Außerdem, wenn ein Kind exportiert eine variable, Sie wird nicht sichtbar, in den übergeordneten.
Daher, Ihr beiden Fälle sind symmetrisch. Wenn Sie beginnen, in csh, exportieren Sie eine variable, und dann starten Sie die bash, bash sieht das exportierte variable. Wenn Sie dann exportieren Sie eine neue variable in der bash und der Ausstieg aus der bash zurück zu gehen, csh, alle erstellten Variablen in der bash-Sitzung verschwinden.
Wenn Sie waren exportieren, eine variable in der bash und dann starten Sie ein Kind csh (durch Eingabe
csh
), würden Sie fast sicher finden Sie die exportierte variable.InformationsquelleAutor rici