Wie werden sitzungsweite Umgebungsvariablen und PATH festgelegt?

Wie werden sitzungsweite Umgebungsvariablen und PATH festgelegt?

Ich habe im Internet gesehen, dass auch andere Leute dieses Problem hatten, aber die Lösungen waren nicht schlüssig, deshalb wollte ich noch einmal darauf aufmerksam machen.

Laut dieser Seite im Ubuntu-Wiki: https://help.ubuntu.com/community/EnvironmentVariables Die empfohlene Methode zum Festlegen sitzungsweiter Umgebungsvariablen besteht darin, ~/.pam_environment zu ändern.

Hier ist mein Ziel:

  1. Ich möchte eine Umgebungsvariable ANDROID_HOME erstellen, die als Wert einen Pfad zu einem bestimmten Speicherort in meinem Home-Ordner hat.
  2. Ich möchte dem PATH zwei Ordner hinzufügen.

Folgendes habe ich getan. Die Datei ~/.pam_environment existierte nicht, also habe ich sie erstellt und die folgenden Zeilen hinzugefügt:

ANDROID_HOME=${HOME}/Android/Sdk
PATH DEFAULT=${PATH}:${ANDROID_HOME}/tools:${ANDROID_HOME}/platform-tools

Abgemeldet und wieder angemeldet.

Das Ergebnis entspricht nicht meinen Erwartungen. Ich habe das Terminal geöffnet und $ANDROID_HOME wiederholt und das ist, was ich bekommen habe:

${HOME}/Android/Sdk

Sieht so aus, als ob es ${HOME}nicht durch meinen Home-Ordnerpfad ersetzt wird. Warum ist das so?

Beachten Sie cd-ing zu $ANDROID_HOME (das Android/Sdk befindet sich tatsächlich in meinem Home-Ordner):

anvar@crazymachine:~$ cd $ANDROID_HOME
bash: cd: ${HOME}/Android/Sdk: No such file or directory

Auch das Echo von $PATH ergab Folgendes:

/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:${HOME}/Android/Sdk/tools:${HOME}/Android/Sdk/platform-tools

Warum werden die Variablen nicht durch ihre Werte ersetzt, wie es logisch wäre, insbesondere wenn das Beispiel auf der oben genannten Site den Eindruck erweckt hat, dass Variablen innerhalb der Werte verwendet werden können?

Wie kann ich sitzungsweite Umgebungsvariablen richtig festlegen, auf die auch GUI-Programme Zugriff haben?

Antwort1

Das Beispiel indas Wiki, zum Setzen von Sitzungsvariablen über ~/.pam_environment, gibt in einer Anmerkung an:

Damit die Variablenerweiterung funktioniert, ist die zum Ändern von PATH verwendete Syntax erforderlich, die sich von der in Skriptdateien unterscheidet.

Daher sollte Ihre erste Zeile wie folgt aussehen:

ANDROID_HOME DEFAULT=${HOME}/Android/Sdk

Antwort2

Zwei Vorschläge:

1. Die Form Ihrer Umwelterklärungen sollte sein:

ANDROID_HOME=$HOME/Android/Sdk
PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

zweitens, platzieren Sie Ihre neuen Umgebungsanweisungen in~/.profile

Antwort3

Ich denke, Sie benötigen möglicherweise eine, export HOMEnachdem Sie die Pfadvariable eingerichtet haben (in ~/.bashrc tun wir das).

verwandte Informationen