ubuntuusers.de

$PATH setzen und neu einlesen

Status: Gelöst | Ubuntu-Version: Server 22.04 (Jammy Jellyfish)
Antworten |

Christofer

Avatar von Christofer

Anmeldungsdatum:
2. Februar 2007

Beiträge: 185

Hallo Community,

ich würde gerne die Umgebungsvariable $PATH dauerhaft um ein Verzeichnis erweitern das für alle Nutzer des Systems gilt. Dazu habe ich auch die Wiki-Artikel Umgebungsvariable und Umgebungsvariable/typische Anwendungsfälle gelesen. Demnach wäre der beste Weg über das Anlegen des Verzeichnisses /etc/environment.d/ und z.B. einer Datei /(etc/environment.d/neuer_pfad.conf. In der Datei müsste dann stehen:

PATH=$PATH:/opt/bin

Mir gelingt es aber nicht weil mir ein paar Informationen fehlen. Daher habe ich mal die Möglichkeiten durchgespielt. Ein lokales hinzufügen über

1
export export PATH=$PATH:/opt/bin

funktioniert ohne Probleme. Wenn ich die Datei /etc/environment ergänze:

1
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/bin"

und mich dann auslogge und wieder einlogge erhalte ich trotzdem nur:

1
2
3
4
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
$ sudo cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:opt/bin"

Er unterschlägt die Verzeichnisse: /usr/local/games:/snap/bin:opt/bin

Folgende Fragen habe ich dazu:

1. Wie kann ich die PATH-Variable in der aktuellen Sitzung neu einlesen, ggf. wäre diese Info hilfreich in dem Wiki-Artikel "typische Anwendungsfälle".?

2. Warum unterschlägt er Verzeichnisse aus der /etc/environment?

3. Ich gehe mal davon aus das er in Ubuntu beim neu einlesen der Variable $PATH auch nach einem Verzeichnis /etc/environment.d sucht und alle Dateien *.conf daraus einliest. Ist das korrekt?

4.Wie müssen die Einträge in der /etc/environment.d/ner_pfad.conf stehen, mit export-Befehl oder ohne der Wiki-Artikel suggeriert ohne ?

Danke schon mal für Euer Wissen

Gruß Christofer

Akedia

Anmeldungsdatum:
3. Januar 2018

Beiträge: 94

Versuch mal, in

/etc/profile.d/

eine Datei

    neuer_pfad.sh

zu erstellen, die

1
PATH=$PATH:/opt/bin 

enthält.

Eigene .sh Dateien in /etc/profile.d/ werden bei Updates nicht überschrieben, und für alle User ausgeführt.

Christofer

(Themenstarter)
Avatar von Christofer

Anmeldungsdatum:
2. Februar 2007

Beiträge: 185

Akedia schrieb:

Versuch mal, in

/etc/profile.d/

eine Datei

    neuer_pfad.sh

zu erstellen, die

1
PATH=$PATH:/opt/bin 

enthält.

Eigene .sh Dateien in /etc/profile.d/ werden bei Updates nicht überschrieben, und für alle User ausgeführt.

Das funktioniert soweit und so wie ich recherchiert habe gilt diese Version auch für andere Distributionen, dennoch lasse ich die Frage als offen stehen, da ggf. er Wiki-Artikel überarbeitet werden sollte?

Danke und Gruß

Christofer

san04

Anmeldungsdatum:
19. Januar 2010

Beiträge: 1287

Christofer schrieb:

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games
$ sudo cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:opt/bin"

Da fehlt ein Slash. Versuche es mal mit /opt/bin.

Christofer

(Themenstarter)
Avatar von Christofer

Anmeldungsdatum:
2. Februar 2007

Beiträge: 185

san04 schrieb:

Da fehlt ein Slash. Versuche es mal mit /opt/bin.

stimmt, das hatte ich handschriftlich vergessen, aber leider geht es nicht:

1
2
3
4
$ cat /etc/environment 
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin:/opt/bin"
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

Keine Ahnung warum er die Einträge am Ende verschluckt.

trollsportverein

Avatar von trollsportverein

Anmeldungsdatum:
21. Oktober 2010

Beiträge: 6450

/etc/environment wird einmal beim booten eingelesen. Wenn man dort etwas ändert, dann ist reboot angesagt, um es wirksam zu machen. Es haben sich bereits viele den Kopf zerbrochen, wie man das rebooten umgehen kann. So wirklich zufriedenstellend war bislang nichts davon. Reboot ist einfach und wirkt dann auch sauber.

Akedia

Anmeldungsdatum:
3. Januar 2018

Beiträge: 94

Einen Hinweis gibt evtl. die man-Page zu environment.d:

... Configuration files in the environment.d/ directories contain lists of environment variable assignments for services started by the systemd user instance ...

Also eher nicht für Logins. Da sind die Files in profile.d relevant.

Christofer

(Themenstarter)
Avatar von Christofer

Anmeldungsdatum:
2. Februar 2007

Beiträge: 185

ok danke dafür, das erklärt einiges. Das es eine man-pages zu environmaent.d gibt, das ja standardmäßig nicht erstellt wird, hätte ich nicht gedacht.

Gruß

Christofer

Antworten |