In tcsh
funktioniert das folgende Skript:
#!/bin/tcsh
setenv X_ROOT /some/specified/path
setenv XDB ${X_ROOT}/db
setenv PATH ${X_ROOT}/bin:${PATH}
xrun -d xdb1 -i $1 > $2
Was entspricht der tcsh setenv
Funktion in Bash?
Gibt es ein direktes Analogon? Die Umgebungsvariablen dienen zum Auffinden der ausführbaren Datei.
Der Grund, warum Leute oft vorschlagen, zu schreiben
VAR=value export VAR
statt der kürzeren
export VAR=value
ist, dass die längere Form in mehr verschiedenen Schalen arbeitet als die kurze Form. Wenn Sie wissen, dass Sie es zu tun haben
bash
, funktioniert beides natürlich einwandfrei.quelle
Legen Sie mit Bash unter Linux eine lokale Variable und eine Umgebungsvariable fest
Suchen Sie in Bash nach lokalen oder Umgebungsvariablen für eine Variable namens LOL:
el@server /home/el $ set | grep LOL el@server /home/el $ el@server /home/el $ env | grep LOL el@server /home/el $
Sanity Check, keine lokale oder Umgebungsvariable namens LOL.
Legen Sie eine lokale Variable namens LOL in einer lokalen, aber nicht in einer Umgebung fest. So stellen Sie es ein:
el@server /home/el $ LOL="so wow much code" el@server /home/el $ set | grep LOL LOL='so wow much code' el@server /home/el $ env | grep LOL el@server /home/el $
Die Variable 'LOL' existiert in lokalen Variablen, jedoch nicht in Umgebungsvariablen. LOL verschwindet, wenn Sie das Terminal neu starten, sich abmelden / anmelden oder ausführen
exec bash
.Legen Sie eine lokale Variable fest und löschen Sie dann alle lokalen Variablen in Bash
el@server /home/el $ LOL="so wow much code" el@server /home/el $ set | grep LOL LOL='so wow much code' el@server /home/el $ exec bash el@server /home/el $ set | grep LOL el@server /home/el $
Sie können auch nur die eine Variable deaktivieren:
el@server /home/el $ LOL="so wow much code" el@server /home/el $ set | grep LOL LOL='so wow much code' el@server /home/el $ unset LOL el@server /home/el $ set | grep LOL el@server /home/el $
Lokale Variable LOL ist weg.
Heraufstufen einer lokalen Variablen zu einer Umgebungsvariablen:
el@server /home/el $ DOGE="such variable" el@server /home/el $ export DOGE el@server /home/el $ set | grep DOGE DOGE='such variable' el@server /home/el $ env | grep DOGE DOGE=such variable
Beachten Sie, dass beim Exportieren sowohl eine lokale Variable als auch eine Umgebungsvariable angezeigt wird.
Die oben exportierte Variable DOGE überlebt einen Bash-Reset:
el@server /home/el $ exec bash el@server /home/el $ env | grep DOGE DOGE=such variable el@server /home/el $ set | grep DOGE DOGE='such variable'
Deaktivieren Sie alle Umgebungsvariablen:
Sie müssen eine Dose Chuck Norris herausziehen, um alle Umgebungsvariablen ohne Abmelden / Anmelden zurückzusetzen:
el@server /home/el $ export CAN="chuck norris" el@server /home/el $ env | grep CAN CAN=chuck norris el@server /home/el $ set | grep CAN CAN='chuck norris' el@server /home/el $ env -i bash el@server /home/el $ set | grep CAN el@server /home/el $ env | grep CAN
Sie haben eine Umgebungsvariable erstellt und dann das Terminal zurückgesetzt, um sie zu entfernen.
Oder Sie können eine Umgebungsvariable manuell wie folgt festlegen und deaktivieren:
el@server /home/el $ export FOO="bar" el@server /home/el $ env | grep FOO FOO=bar el@server /home/el $ unset FOO el@server /home/el $ env | grep FOO el@server /home/el $
quelle
VAR=value
setzt VAR auf value.Danach
export VAR
wird es auch untergeordneten Prozessen gegeben.export VAR=value
ist eine Abkürzung für beides.quelle
Ich denke, Sie suchen
export
- obwohl ich mich irren könnte. Ich habe noch nie mit tcsh gespielt. Verwenden Sie die folgende Syntax:export VARIABLE=value
quelle