Ich denke hier werden die verschiedenen Möglichkeiten sehr gut erklärt:
(aus: https://stackoverflow.com/ques…ly-set-path-on-linux-unix)
There are multiple ways to do it. The actual solution depends on the purpose.
The variable values are usually stored in either a list of assignments or a shell script that is run at the start of the system or user session. In case of the shell script you must use a specific shell syntax and
export
orset
commands.System wide
/etc/environment
List of unique assignments. Allows references. Perfect for adding system-wide directories like/usr/local/something/bin
toPATH
variable or definingJAVA_HOME
. Used by PAM and systemd./etc/environment.d/*.conf
List of unique assignments. Allows references. Perfect for adding system-wide directories like/usr/local/something/bin
toPATH
variable or definingJAVA_HOME
. The configuration can be split into multiple files, usually one per each tool (Java, Go, and Node.js). Used by systemd that by design do not pass those values to user login shells./etc/xprofile
Shell script executed while starting X Window System session. This is run for every user that logs into X Window System. It is a good choice forPATH
entries that are valid for every user like/usr/local/something/bin
. The file is included by other script so use POSIX shell syntax not the syntax of your user shell./etc/profile
and/etc/profile.d/*
Shell script. This is a good choice for shell-only systems. Those files are read only by shells in login mode./etc/<shell>.<shell>rc
. Shell script. This is a poor choice because it is single shell specific. Used in non-login mode.User session
~/.pam_environment
. List of unique assignments, no references allowed. Loaded by PAM at the start of every user session irrelevant if it is an X Window System session or shell. You cannot reference other variables includingHOME
orPATH
so it has limited use. Used by PAM.~/.xprofile
Shell script. This is executed when the user logs into X Window System system. The variables defined here are visible to every X application. Perfect choice for extendingPATH
with values such as~/bin
or~/go/bin
or defining user specificGOPATH
orNPM_HOME
. The file is included by other script so use POSIX shell syntax not the syntax of your user shell. Your graphical text editor or IDE started by shortcut will see those values.~/.profile
,~/.<shell>_profile
,~/.<shell>_login
Shell script. It will be visible only for programs started from terminal or terminal emulator. It is a good choice for shell-only systems. Used by shells in login mode.~/.<shell>rc
. Shell script. This is a poor choice because it is single shell specific. Used by shells in non-login mode.
Übersetzt:
ZitatEs gibt verschiedene Möglichkeiten, wie Umgebungsvariablen gesetzt werden können. Die tatsächliche Lösung hängt vom Zweck ab.
Die Werte der Variablen werden normalerweise entweder in einer Liste von Zuweisungen oder in einem Shell-Skript gespeichert, das beim Start der System- oder Benutzersitzung ausgeführt wird. Bei einem Shell-Skript muss eine spezielle Shell-Syntax sowie die Befehle
export
oderset
verwendet werden.Systemweit
- /etc/environment: Liste von eindeutigen Zuweisungen. Erlaubt Referenzen. Perfekt, um systemweite Verzeichnisse wie
/usr/local/something/bin
zur PATH-Variablen hinzuzufügen oder JAVA_HOME zu definieren. Wird von PAM und systemd verwendet.- /etc/environment.d/*.conf: Liste von eindeutigen Zuweisungen. Erlaubt Referenzen. Perfekt, um systemweite Verzeichnisse wie
/usr/local/something/bin
zur PATH-Variablen hinzuzufügen oder JAVA_HOME zu definieren. Die Konfiguration kann auf mehrere Dateien aufgeteilt werden, normalerweise eine pro Tool (Java, Go, Node.js). Wird von systemd verwendet, gibt diese Werte jedoch standardmäßig nicht an Benutzer-Login-Shells weiter.- /etc/xprofile: Shell-Skript, das beim Start der X Window System-Sitzung ausgeführt wird. Es wird für jeden Benutzer ausgeführt, der sich in das X Window System einloggt. Eine gute Wahl für PATH-Einträge, die für jeden Benutzer gültig sind, wie
/usr/local/something/bin
. Die Datei wird von einem anderen Skript eingebunden, daher sollte die POSIX-Shell-Syntax und nicht die Syntax der Benutzershell verwendet werden.- /etc/profile und /etc/profile.d/: Shell-Skript. Eine gute Wahl für rein Shell-basierte Systeme. Diese Dateien werden nur von Shells im Login-Modus gelesen.
- /etc/<shell>.<shell>rc: Shell-Skript. Eine schlechte Wahl, da sie spezifisch für eine einzige Shell ist. Wird im Nicht-Login-Modus verwendet.
Benutzersitzung
- ~/.pam_environment: Liste von eindeutigen Zuweisungen, keine Referenzen erlaubt. Wird von PAM beim Start jeder Benutzersitzung geladen, unabhängig davon, ob es sich um eine X Window System-Sitzung oder eine Shell handelt. Sie können keine anderen Variablen, einschließlich HOME oder PATH, referenzieren, daher ist die Verwendung eingeschränkt. Wird von PAM verwendet.
- ~/.xprofile: Shell-Skript. Wird ausgeführt, wenn sich der Benutzer in das X Window System einloggt. Die hier definierten Variablen sind für jede X-Anwendung sichtbar. Perfekte Wahl, um PATH mit Werten wie
~/bin
oder~/go/bin
zu erweitern oder benutzerspezifische Werte wie GOPATH oder NPM_HOME zu definieren. Die Datei wird von einem anderen Skript eingebunden, daher sollte die POSIX-Shell-Syntax verwendet werden. Ihr grafischer Texteditor oder IDE, die per Verknüpfung gestartet werden, sehen diese Werte.- ~/.profile, ~/.<shell>_profile, ~/.<shell>_login: Shell-Skript. Es wird nur für Programme sichtbar sein, die vom Terminal oder Terminal-Emulator aus gestartet werden. Eine gute Wahl für rein Shell-basierte Systeme. Wird von Shells im Login-Modus verwendet.
- ~/.<shell>rc: Shell-Skript. Eine schlechte Wahl, da es spezifisch für eine einzige Shell ist. Wird von Shells im Nicht-Login-Modus verwendet.
Möglicherweise sind deine Pfade in Dateien hinterlegt, die bei einem Update vom Linux überschrieben werden?