Ich kann die Umgebungsvariablen nicht mithilfe einer .csh
anderen Datei festlegen .tcsh
, die diese Datei als Quelle verwendet:
- Dadurch werden die Umgebungsvariablen nicht festgelegt:
$PERC_PATH/bin/runperc.csh ...<some arguments>
- Während dies die Umgebungsvariablen festlegt:
source $PERC_PATH/bin/runperc.csh ..<some arguments>
Beide sind ausführbar, Shebangs sind ausführbar /usr/bin/csh
und runperc.csh
die Quellen perc_setup.csh
darin:
source $PERC_PATH/perc_setup.csh
perc_setup.csh
enthältsetenv
und einige andere Befehle:setenv MGC_RVEDB_DIR {$PERC_PATH}/setup:{$HOME}
Wie lege ich die Umgebungsvariablen im Terminal fest, ohne source
den Skriptpfad explizit angeben zu müssen?
Antwort1
Umgebungsvariablen können niemals von einer externen ausführbaren Datei „nach oben“ in die Shell übertragen werden. Wenn sie von einem CSH-Skript gesetzt werden müssen, dannmüssen source
dieses Skript – verbergen Sie die „Quelle“ hinter einem Alias, wenn Sie möchten.
alias perc 'source $PERC_PATH/bin/runperc.csh'
Es gibt einige Alternativen – z. B. die Ausgabe der Umgebungsvariablen des Skripts auf stdout, damit sie vom übergeordneten Element ausgewertet werden können –, diese wären jedoch noch ausführlicher und würden weiterhin erfordern, dass Sie den Code direkt in der übergeordneten Shell ausführen.