Welche Distributionen haben $ HOME / .local / bin in $ PATH?

42

Beispiel: In Ubuntu gibt es im Ausgangsverzeichnis immer ein .localVerzeichnis, das .profiledie folgende Zeile enthält:

PATH="$HOME/bin:$HOME/.local/bin:$PATH"

$HOME/.local/binist standardmäßig nicht vorhanden, aber wenn es erstellt wurde, ist es bereits in $PATHund ausführbare Dateien in können gefunden werden.

Dies wird in der XDG-Verzeichnisspezifikation nicht genau erwähnt , scheint jedoch davon abgeleitet zu sein.

Ich frage mich, ob dies so häufig vorkommt, dass normalerweise angenommen werden kann, dass es in den gängigsten Endbenutzer-Distributionen vorhanden ist. Ist es zum Beispiel in allen Debian-Derivaten oder zumindest in den Ubuntu-Derivaten? Wie wäre es mit dem Red Hat / Fedora / CentOS-Ökosystem? Und so weiter mit Arch, Suse und dem, was die Leute heutzutage benutzen.

Um es noch deutlicher zu machen: Dies ist nur für $HOME/.local/bin, nicht für $HOME/bin .

Wenn Sie neugierig sind, können Sie BSDs, OS / X und andere hinzufügen, wenn Sie die Informationen haben. :)

Stoffe
quelle
Ich habe diese Frage schon einmal gestellt gesehen, bin aber nicht auf ein System gestoßen, das dies tut. Um die Frage nicht als Meinung , sondern als aktuell zu bezeichnen , können Sie Überlegungen zu "häufig genug" streichen und einfach fragen, woher sie stammt und Beispiele für Systeme, die dies für neue Benutzerkonten tun. "Recent" Fedora macht das zum Beispiel.
Thomas Dickey
Ich kann umformulieren, um einfach zu fragen, "welche" es tun, sicher. Es ist ein bisschen schwierig, die Frage zu formulieren, da das, wonach ich suche, keine eindeutige Antwort ist, sondern hauptsächlich ein Gefühl dafür, ob dies in den meisten Fällen 2016 vernünftigerweise angenommen werden kann.
Stoffe
1
Ich habe es nicht im Weg und werde es mit Sicherheit nicht dort ablegen. (Debian, aber xdm / fvwm, weder Gnome noch KDE als Desktop).
Dirkt
1
Ich habe nach einem System gesucht, das es haben könnte. Keines meiner Entwicklungskonten verwendet Bash , und die Paketbauer sind einfach nicht gründlich genug, um es zu bemerken, es sei denn, ich mache eine spezielle Prüfung (siehe newpath ).
Thomas Dickey
1
IIRC Ubuntu prüft /etc/skel/.profilebis einschließlich 14.04, ob ein Benutzer vorhanden ist, $HOME/binund fügt ihn dem hinzu, PATHwenn er vorhanden ist. Im Gegensatz dazu scheint 16.04 beides $HOME/binund $HOME/.local/binbedingungslos hinzuzufügen . Ich kann mich nicht erinnern, dass Ubuntus früher etwas hinzugefügt hat $HOME/.local/bin- aber ich sehe nichts Relevantes im bashPaket Changelog (das angeblich gehört /etc/skel/.profile).
Steeldriver

Antworten:

41

Die ~/.localVerzeichnisse sind Teil der systemd-Dateihierarchiespezifikation und eine Erweiterung der xdg-Benutzerverzeichnisspezifikation

Es kann verwirrend sein, da von Debian abgeleitete Pakete bashden ~/.localPfad verloren haben, als sie auf Bash 4.3 umgestiegen sind und es in Bash 4.2 hatten.

Es ist ein Fehler , und ein Patch sitzt jetzt schon eine Weile im Debian-System.

Dieser Fehler ist der Grund, warum Ubuntu 16.04 ~ / .local im Pfad hatte und Ubuntu 17.04 nicht.

Wenn Sie systemd-pathals Benutzer ausgeführt werden und sehen, dass er im Pfad enthalten sein soll.

$ systemd-path user-binaries
/home/foo/.local/bin

Theoretisch lautet die Antwort auf Ihre Frage Jede Distribution, die systemd verwendet oder die Kompatibilität mit systemd aufrechterhalten möchte.

Weitere Informationen finden Sie in file-hierarchy(7)

gdahlm
quelle
1
Vielen Dank! War dies aus reiner Neugier auch in der Anfangszeit der Fall? Ich frage nur, weil mein Gedächtnis sagt, dass es früher als systemd da war, aber es ist genauso wahrscheinlich, dass ich mich nur falsch erinnere!
Stoffe
Ich würde bezweifeln, dass es vor dem System war, für immer war die Konvention ~ / bin.
Pfalcon
Arrgh, dieser Bug scheint auch in 16.04 mit freundlicher Genehmigung eines Backported Bash 4.3
Adrian
Funktioniert in Ubuntu 18.04.
Daniel
1

Auf RPM-basierten Distributionen sieht die Situation anscheinend so aus

  • RHEL 7 - fügt es am Ende von PATH hinzu (siehe https://bugzilla.redhat.com/show_bug.cgi?id=1583227), wenn Sie eine Anmeldeshell verwenden. Es wird funktionieren, sudo su -l johndoeaber es wird nicht funktionieren, wenn Sie den -lSchalter nicht verwenden .
  • CentOS 7 - siehe RHEL, es folgt immer RHEL.
  • Fedora 28 (wahrscheinlich auch älter) - wie RHEL / CentOS, hinzugefügt am Ende von PATH

Wenn Sie diese Fehler sortiert sehen möchten, vergessen Sie bitte nicht, diese abzustimmen / zu kommentieren, da dies die Wichtigkeit des Problems hervorheben würde.

Sorin
quelle