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 ist das Äquivalent zum tcsh setenv
Funktion in Bash?
Gibt es ein direktes Analogon? Die Umgebungsvariablen dienen zum Auffinden der ausführbaren Datei.
export VAR=value
Setzt VAR auf den Wert. Setzen Sie es in einfache Anführungszeichen, wenn Sie Leerzeichen wie export VAR='my val'
Wünschen. Wenn die Variable interpoliert werden soll, verwenden Sie doppelte Anführungszeichen wie export VAR="$MY_OTHER_VAR"
.
Der Grund, warum Leute oft das Schreiben vorschlagen
VAR=value
export VAR
statt der kürzeren
export VAR=value
ist, dass die längere Form in mehr verschiedenen Schalen als die kurze Form funktioniert. Wenn Sie wissen, dass Sie es mit bash
zu tun haben, funktioniert das natürlich auch.
Suchen Sie nach einer lokalen oder Umgebungsvariablen für eine Variable mit dem Namen LOL in Bash:
[email protected] /home/el $ set | grep LOL
[email protected] /home/el $
[email protected] /home/el $ env | grep LOL
[email protected] /home/el $
Sanity Check, keine lokale oder Umgebungsvariable namens LOL.
Setzen Sie eine lokale Variable namens LOL in local, aber nicht environment. Setzen Sie sie also:
[email protected] /home/el $ LOL="so wow much code"
[email protected] /home/el $ set | grep LOL
LOL='so wow much code'
[email protected] /home/el $ env | grep LOL
[email protected] /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 exec bash
Ausführen.
Setzen Sie eine lokale Variable und löschen Sie dann alle lokalen Variablen in Bash
[email protected] /home/el $ LOL="so wow much code"
[email protected] /home/el $ set | grep LOL
LOL='so wow much code'
[email protected] /home/el $ exec bash
[email protected] /home/el $ set | grep LOL
[email protected] /home/el $
Sie können auch einfach die eine Variable entfernen:
[email protected] /home/el $ LOL="so wow much code"
[email protected] /home/el $ set | grep LOL
LOL='so wow much code'
[email protected] /home/el $ unset LOL
[email protected] /home/el $ set | grep LOL
[email protected] /home/el $
Lokale Variable LOL ist weg.
Heraufstufen einer lokalen Variablen zu einer Umgebungsvariablen:
[email protected] /home/el $ DOGE="such variable"
[email protected] /home/el $ export DOGE
[email protected] /home/el $ set | grep DOGE
DOGE='such variable'
[email protected] /home/el $ env | grep DOGE
DOGE=such variable
Beachten Sie, dass beim Exportieren sowohl eine lokale als auch eine Umgebungsvariable angezeigt wird.
Die exportierte Variable DOGE überlebt einen Bash-Reset:
[email protected] /home/el $ exec bash
[email protected] /home/el $ env | grep DOGE
DOGE=such variable
[email protected] /home/el $ set | grep DOGE
DOGE='such variable'
Alle Umgebungsvariablen entfernen:
Sie müssen eine Dose Chuck Norris herausnehmen, um alle Umgebungsvariablen ohne Abmelden/Anmelden zurückzusetzen:
[email protected] /home/el $ export CAN="chuck norris"
[email protected] /home/el $ env | grep CAN
CAN=chuck norris
[email protected] /home/el $ set | grep CAN
CAN='chuck norris'
[email protected] /home/el $ env -i bash
[email protected] /home/el $ set | grep CAN
[email protected] /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 wie folgt manuell setzen und entfernen:
[email protected] /home/el $ export FOO="bar"
[email protected] /home/el $ env | grep FOO
FOO=bar
[email protected] /home/el $ unset FOO
[email protected] /home/el $ env | grep FOO
[email protected] /home/el $
VAR=value
setzt VAR auf Wert.
Nachdem export VAR
wird es auch untergeordneten Prozessen geben.
export VAR=value
ist eine Abkürzung für beides.
Ich glaube, Sie suchen nach export
- obwohl ich mich irren könnte. Ich habe noch nie mit tcsh gespielt. Verwenden Sie die folgende Syntax:
export VARIABLE=value