Wie füge ich Umgebungsvariablen hinzu?

Ich verwende Ubuntu 11.04. Ich benutze das Terminal, um eine Bash-Sitzung zu starten, und ich 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 zeigt nicht THEVAR Mehr- env | grep THEVAR gibt nichts zurück.

Ebenso Skripte mit export (export THEVAR=/example) oder andere Variablenzuweisungen (THEVAR=/example) fügen Sie 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 Antwort mit den meisten Stimmen und lasse den bearbeiteten Titel - das war nicht das, was ich gefragt habe)

env führt ein Programm in einer geänderten Umgebung aus und verwirft dann alle Änderungen.

Variable setzen nur für aktuelle shell:

VARNAME="my value"

Um es für die aktuelle Shell festzulegen und alle Prozesse gestartet von der aktuellen Shell:

export VARNAME="my value"      # shorter, less portable version

Um es einzustellen dauerhaft fügen Sie für alle zukünftigen Bash-Sitzungen eine solche Zeile zu Ihrem hinzu .bashrc datei in Ihrem $HOME Verzeichnis.

Um es dauerhaft zu setzen, und systemweite (alle Benutzer, alle Prozesse) Fügen Sie eine Set-Variable in / etc / environment hinzu:

sudo -H gedit /etc/environment

Diese Datei akzeptiert nur Variablenzuweisungen wie:

VARNAME="my value"

Verwenden Sie nicht die export stichwort hier.

Sie müssen sich vom aktuellen Benutzer abmelden und erneut anmelden, damit Änderungen an den Umgebungsvariablen vorgenommen werden.

Um eine Umgebungsvariable einmal zu setzen, verwenden Sie die export befehl in der Eingabeaufforderung, nicht in einem Shell-Skript:

$ export THEVAR=/example

Die Variable wird für den Rest der Shell-Sitzung oder bis zur Deaktivierung gesetzt.

Um jedes Mal eine Umgebungsvariable festzulegen, verwenden Sie die export befehl im .bashrc datei (oder die entsprechende Initialisierungsdatei für Ihre Shell).

Um eine Umgebungsvariable aus einem Skript zu setzen, verwenden Sie die export befehl im Skript und dann source Skript. Wenn Sie das Skript ausführen, funktioniert es nicht.

Eine Erläuterung des Unterschieds zwischen Beschaffung und Ausführung finden Sie in dieser Antwort: https://superuser.com/questions/176783/what-is-the-difference-between-executing-a-bash-script-and-sourcing-a-bash-script/176788#176788

Führen Sie die folgenden Schritte aus, um eine neue Umgebungsvariable in Ubuntu dauerhaft hinzuzufügen (nur in 14.04 getestet):

  1. Öffnen Sie ein Terminal (durch Drücken von CtrlAltT)
  2. sudo -H gedit /etc/environment
  3. Geben Sie Ihr Passwort ein
  4. Bearbeiten Sie die gerade geöffnete Textdatei:
    zB wenn Sie hinzufügen möchten FOO=bar, dann schreib einfach FOO=bar in einer neuen Zeile
  5. Speichern Sie es
  6. Nach dem Speichern abmelden und erneut anmelden.
  7. Ihre gewünschten Änderungen werden vorgenommen.

Damit die Umgebungs- / Variablenänderungen nach Abschluss des Skripts bestehen bleiben, müssen Sie Folgendes verwendensource ./script.sh oder die Kurznotation für Quelle, ".", wie . ./script.sh

Source führt die Befehle im Skript so aus, als hätten Sie sie eingegeben... es ändert also einige Aspekte des Skripts, z. B. das Beenden... wenn Ihr Skript also etwas überprüft und beschließt, bei false zu beenden, z. B. durch Aufrufen exit 0, es wird Ihre aktuelle Terminal- / Shell-Sitzung beenden.

Ich weiß, es ist ziemlich spät, aber wenn Sie eine Umgebungsvariable für alle Benutzer hinzufügen möchten (z. B. JAVA-Verwendung), können Sie Folgendes tun:

1) Öffnen /etc/bash.bashrc mit Nano (Sie können jeden Editor verwenden, ich bevorzuge VIM nicht, da es in Bezug auf Benutzerfreundlichkeit das Schlimmste ist - nichts Persönliches).

2) An die Datei anhängen:

export VAR=path export PATH=$PATH:/bin3) (Besser, wenn Sie die Box bouncen können) - oder öffnen Sie einfach eine neue SSH-Sitzung und bestätigen Sie mit dem Befehl `env'.

WENN Sie jedoch möchten, dass jeder Benutzer eine separate Einstellung dafür hat, müssen Sie eine Änderung (Skript) vornehmen .bashrc datei unter ~/.bashrc (oder /home/$USER/ wenn Sie neu in Linux-Systemen sind)

Wenn Sie Dinge über ein Skript erledigen, können Sie die Umgebungsvariable auf einfache Weise dauerhaft festlegen, indem Sie die folgende Anweisung in Ihr Skript einfügen,

if [[ ! -d "$MyVar" ]]; then     export MyVar="abc"    echo 'export MyVar="abc"' >> ~/.bashrcfi

Wenn Sie Ausdrücke wie pwd auswerten müssen, können Sie dies zum Beispiel verwenden,

echo "export EIGEN_ROOT=\"$(pwd)/eigen\"" >> ~/.bashrc

Wenn Sie Ubuntu oder ein Unix-basiertes System verwenden, exportieren Sie die Variablen in die ~/.bashrc Datei. Es ist eine versteckte Datei, die Sie über das Terminal oder durch Ausblenden versteckter Dateien im Dateisystem erreichen können.

Bearbeiten Sie dann die Datei und stellen Sie ein export THEVAR=/example dort speichern und fertig.

Wenn Sie JAVA-Anwendungen mit TOMCAT bereitstellen, können Sie Umgebungsvariablen folgendermaßen festlegen:

1.sudo su und cd nach / var / lib / tomcat8 / bin / (oder was auch immer Ihr Tomcat-Bin-Pfad ist)

  1. berühren setenv.sh (wenn es nicht existiert), wenn die Datei bereits vorhanden ist, tun Sie 'vi setenv.sh '

  2. chmod 777 setenv.sh (Datei ausführbar machen)

  3. vi setenv.sh und setze die folgende Zeile in setenv .shexport Schlüssel = Wert

  4. sudo systemctl Tomcat neu starten.Service

In Ihrer Java-Datei können Sie den folgenden Code verwenden, um zu überprüfen, ob die Variable gesetzt ist

private static void printEnv() {    System.out.println("******************************Environment Vars*****************************");    Map<String, String> enviorntmentVars = System.getenv();    enviorntmentVars.entrySet().forEach(System.out::println);    System.out.println("******************************system Vars*****************************");    Properties enviorntmentProperties = System.getProperties();    enviorntmentVars.entrySet().forEach(System.out::println);}

Der andere handelt von globalen Variablen, dieser fügt keine solche Einschränkung hinzu. Ich würde es getrennt halten.

https://help.ubuntu.com/community/EnvironmentVariables

Wenn definiert / exportiert in .bashrc, es funktioniert richtig.

Wie wäre es mit THEVAR=/ example?

mögliches Duplikat von [Google Earth und $ BROWSER Umgebungsvariable] (Google Earth and $BROWSER environment variable - Ask Ubuntu )