Ein frisch installiertes Debian hat als Teil des Pakets
bash die Datei »
/etc/skel/.profile«, die jeder neu angelegte User als »
~/.profile« bekommt und in der steht unter anderem
Code: Alles auswählen
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/.local/bin" ] ; then
PATH="$HOME/.local/bin:$PATH"
fi
In den meisten Fällen muss man also überhaupt nichts unternehmen, damit das in $PATH landet, außer vielleicht sich ab- und wieder anmelden, wenn das Verzeichnis gerade erst erstellt worden ist.
buhtz hat geschrieben: 02.04.2022 04:53:45
EDIT: Das Debian hier zwischen "Login" und "Non-Login" unterscheidet, konnte ich natürlich bereits in den Kommentaren der Dateien nachlesen. Diese Begriffe habe ich aber nie verstanden. Wenn ich einen Benutzernamen und ein Passwort eingebe, ist das für mich immer ein Login; egal ob SSH, tty oder eine Terminal-Emulator.
Es ist nicht immer dasselbe, da bin ich aber auch schon darüber gestolpert.
Meldest du dich auf der Textkonsole an, dann wird die Shell als login-Shell gestartet und »
~/.profile« wird ausgeführt. Ob du dann eine Subshell startest oder eine andere nicht-Login-Shell startest, ändert daran in den meisten Fällen nichts, weil die Subshell oder die anderen Shell das bereits gesetzte $PATH übernimmt.
Über ssh erhält man ebenfalls eine Login-Shell, wenn ich mich jetzt gerade nicht füchterlich vertue.
Bei einer grafischen Anmeldung kann es gut sein, dass als erstes ein Skript, also auch eine Shell ausgeführt wird, deren Variablen, speziell $PATH, dann die weiters gestarteten Programme, also auch nicht-Login-Shells übernehmen. Dann gibt es kein Problem, weil die Shells der Terminalemulatoren, die normalerweise nicht als Login-Shells gestartet werden, die Variable einfach übernehmen.
Es kann aber auch sein, dass da etwas anderes gestartet wird und entweder »
~/.profile« nie ausgeführt wird oder die Variablen wieder verloren gehen. Ein Beispiel dafür ist laut Dokumentation die Gnome Wayland Session [1]
Als Abhilfe kann man in den Einstellungen des Terminalemulators normalerweise festlegen, dass die Shell als Login-Shell gestartet werden soll, dann führt jede Terminal-Shell beim Start die »
~/.profile« aus.
Manchmal will man aber auch dass $PATH für die ganze grafische Umgebung gilt, in deinem Fall könnte es z.B. sein, dass du willst, dass die Python-Programme auch von grafischen Programmen gefunden und ausgeführt können werden sollen und dann muss man sich eben etwas anderes zum Setzen der Umgebungsvariablen überlegen. Ein Vorschlag steht in [1], aber der hat meiner Erfahrung nach nicht mit jeder Gnome Version funktioniert (und es gibt auch noch andere Möglichkeiten).
und noch ein kleines Detail:
Andere Shells führen nicht zwangsläufig auch »
~/.profile« aus, bei zsh musste ich z.B. selbst dafür sorgen.
[1]
https://wiki.gnome.org/Initiatives/Wayland/SessionStart