Ich verwende Ubuntu 11.04. Ich starte mit dem Terminal eine Bash-Sitzung und möchte eine Umgebungsvariable hinzufügen:
$r@hajt:~$ env THEVAR=/example
Aber es funktioniert nicht. Es zeigt alle Variablen an, wobei THEVAR die letzte ist, aber ein weiterer Aufruf von env
nicht mehr zeigt THEVAR
- env | grep THEVAR
gibt nichts zurück.
In ähnlicher Weise fügen Skripte mit export ( export THEVAR=/example
) oder anderen Variablenzuweisungen ( THEVAR=/example
) die Umgebungsvariable nicht hinzu.
Ich weiß, dass ich etwas falsch mache, ich weiß, dass es etwas Einfaches sein sollte, aber ich kann einfach nicht finden, was.
UPDATE: Die wahre Bedeutung meiner Frage war diese: https://stackoverflow.com/questions/496702/can-a-shell-script-set-environment-variables-of-the-calling-shell
(Wie auch immer, ich wähle die am häufigsten gewählte Antwort und lasse den bearbeiteten Titel - das war nicht das, wonach ich gefragt habe.)
env
führt ein Programm in einer geänderten Umgebung aus und verwirft dann alle Änderungen.
THEVAR=/example
?Antworten:
So legen Sie die Variable nur für die aktuelle Shell fest:
So legen Sie es für die aktuelle Shell und alle Prozesse fest, die von der aktuellen Shell gestartet wurden:
Um es für alle zukünftigen Bash-Sitzungen dauerhaft festzulegen, fügen Sie eine solche Zeile zu Ihrer
.bashrc
Datei in Ihrem$HOME
Verzeichnis hinzu.Um es dauerhaft und systemweit (alle Benutzer, alle Prozesse) festzulegen, fügen Sie die festgelegte Variable in / etc / environment hinzu:
Diese Datei akzeptiert nur Variablenzuweisungen wie:
Verwenden Sie hier nicht das
export
Schlüsselwort.Sie müssen sich vom aktuellen Benutzer abmelden und erneut anmelden, damit die Umgebungsvariablen geändert werden.
quelle
Shell config files such as ~/.bashrc, ~/.bash_profile, and ~/.bash_login are often suggested for setting environment variables. While this may work on Bash shells for programs started from the shell, variables set in those files are not available by default to programs started from the graphical environment in a desktop session.
help.ubuntu.com/community/EnvironmentVariablesecho $myvar
Um eine Umgebungsvariable einmal festzulegen, verwenden Sie den
export
Befehl in der Eingabeaufforderung und nicht in einem Shell-Skript:Die Variable wird für den Rest der Shell-Sitzung oder bis zur Deaktivierung gesetzt.
Verwenden Sie den
export
Befehl in der.bashrc
Datei (oder die entsprechende Initialisierungsdatei für Ihre Shell) , um jedes Mal eine Umgebungsvariable festzulegen .Verwenden Sie zum Festlegen einer Umgebungsvariablen aus einem Skript den
export
Befehl im Skript und dannsource
das Skript. Wenn Sie das Skript ausführen, funktioniert es nicht.Eine Erläuterung der Differenz zwischen Beschaffung und Ausführung sehen Sie diese Antwort: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a- Bash-Skript / 176788 # 176788
quelle
Führen Sie die folgenden Schritte aus, um eine neue Umgebungsvariable in Ubuntu dauerhaft hinzuzufügen (nur in 14.04 getestet):
sudo -H gedit /etc/environment
Wenn Sie z. B. hinzufügen möchten
FOO=bar
, schreiben Sie einfachFOO=bar
eine neue Zeilequelle
sudo gedit
(siehe askubuntu.com/questions/270006/… ) undchmod 777
. Letzteres sollte niemals in einer Systemkonfigurationsdatei durchgeführt werden.if
odertest
)Foo="bar"
?Um zu erreichen, dass die Umgebungs / var-Änderungen nach Abschluss des Skripts beibehalten werden, müssen Sie
source ./script.sh
die Kurzschreibweise "." Als Quelle verwenden. ./script.sh
Source führt die Befehle im Skript so aus, als ob Sie sie eingegeben hätten. Dadurch werden einige Aspekte des Skripts geändert, z. Durch einen Anruf
exit 0
wird die aktuelle Terminal- / Shell-Sitzung beendet.quelle
Wenn Sie Dinge über ein Skript erledigen, können Sie die Umgebungsvariable auf einfache Weise dauerhaft unter der Anweisung in Ihrem Skript festlegen.
Wenn Sie Ausdrücke wie pwd auswerten müssen, können Sie dies zum Beispiel verwenden,
quelle
Ich weiß, dass es ziemlich spät ist, aber wenn Sie eine Umgebungsvariable für alle Benutzer hinzufügen möchten (z. B. JAVA-Nutzung), können Sie Folgendes tun:
1) Öffnen
/etc/bash.bashrc
mit Nano (Sie können jeden Editor verwenden, ich bevorzuge VIM nicht, da es das schlechteste ist, wenn es um Benutzerfreundlichkeit geht - nichts Persönliches).2) An die Datei anhängen:
export VAR=path export PATH=$PATH:/bin
3) (Besser, wenn Sie die Box bouncen können) - oder öffnen Sie einfach eine neue SSH-Sitzung und bestätigen Sie mit dem Befehl `env '.ABER WENN Sie möchten, dass jeder Benutzer eine separate Einstellung dafür hat, müssen Sie eine Änderung (Skript) an der
.bashrc
Datei unter vornehmen~/.bashrc
(oder/home/$USER/
wenn Sie neu in Linux-Systemen sind)quelle