Quelles distributions ont $ HOME / .local / bin dans $ PATH?

43

Exemple: dans Ubuntu, il y a toujours un .localrépertoire dans le répertoire personnel et .profilecomprend cette ligne:

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

$HOME/.local/binn'existe pas par défaut, mais s'il est créé, il existe déjà $PATHet les exécutables peuvent être trouvés.

Ceci n'est pas mentionné exactement dans la spécification du répertoire XDG, mais semble en être dérivé.

Ce que je me demande, c’est si cela est suffisamment courant pour qu’on puisse supposer qu’il existe dans les distributions d’utilisateur final les plus courantes. Est-ce, par exemple, dans tous les dérivés de Debian, ou du moins dans ceux d'Ubuntu? Qu'en est-il de l'écosystème Red Hat / Fedora / CentOS? Et ainsi de suite avec Arch, Suse et ce que les gens utilisent actuellement.

Pour être très clair, c'est seulement pour $HOME/.local/bin, pas $HOME/bin .

Par curiosité, n'hésitez pas à inclure des BSD, OS / X et autres, si vous avez les informations. :)

Stoffe
la source
J'ai déjà vu cette question, mais je n'ai pas rencontré de système qui le fasse. Pour que la question soit d' actualité plutôt que d' opinion , vous pouvez éliminer les considérations de «suffisamment communes» et simplement demander d'où elle vient et donner des exemples de systèmes qui le font pour les nouveaux comptes d'utilisateurs. Fedora "récente" fait cela, par exemple.
Thomas Dickey
Je peux reformuler pour demander simplement "qui" le fasse, bien sûr. C'est un peu difficile de formuler la question, car ce que je veux, ce n'est pas une réponse définitive, mais surtout une idée de ce qui peut raisonnablement être supposé dans la plupart des cas en 2016.
Stoffe
1
Je ne l'ai pas sur mon chemin et je ne vais certainement pas le mettre là. (Debian, mais xdm / fvwm, ni Gnome ni KDE en tant que bureau).
dirkt
1
J'ai vérifié pour un système qui pourrait l'avoir. Aucun de mes comptes de développement n'utilise bash , et les gestionnaires de paquets ne sont tout simplement pas assez approfondis pour le remarquer, à moins que je ne fasse une vérification spéciale (voir newpath ).
Thomas Dickey
1
Les tests effectués par l'IRC Ubuntu, /etc/skel/.profilejusqu'à 14.04 au moins, sur la présence d'un utilisateur, $HOME/binet l'ajoutent au PATHcas échéant. en revanche, 16.04 semble ajouter les deux $HOME/binet $HOME/.local/bininconditionnellement. Je ne me souviens pas du tout que Ubuntus ait ajouté auparavant $HOME/.local/bin- mais je ne vois rien de pertinent dans le bashpaquet changelog (qui est censé en être propriétaire /etc/skel/.profile).
Steeldriver

Réponses:

42

Les ~/.localrépertoires font partie de la spécification systemd de la hiérarchie de fichiers et constituent une extension de la spécification xdg user-dirs.

Cela peut prêter à confusion, car les paquets dérivés de Debian pour bashlost the ~/.localpath ont été perdus quand ils se sont réorientés en bash 4.3, ils l'ont eu dans bash 4.2.

C'est un bogue et un correctif est installé dans le système Debian depuis un moment maintenant.

Ce bug est la raison pour laquelle Ubuntu 16.04 a ~ / .local dans le chemin et Ubuntu 17.04 pas.

Si vous vous exécutez en systemd-pathtant qu'utilisateur et que vous verrez qu'il est destiné à être dans le chemin.

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

En théorie, la réponse à votre question est Toute distribution utilisant systemd ou désirant maintenir la compatibilité avec systemd.

Il y a plus d'informations dans file-hierarchy(7)

Gdahlm
la source
1
Merci! Par pure curiosité, était-ce également le cas à une époque avancée? Demander seulement parce que ma mémoire dit qu'il était là plus tôt que systemd, mais il est tout aussi probable que je ne m'en souvienne pas!
Stoffe
Je doute que ce soit avant systemd, pour toujours la convention était ~ / bin.
Pfalcon
Cependant, ce virus semble aussi être arrivé en 16.04, gracieuseté d'une bash 4.3.
Adrian
Fonctionne dans Ubuntu 18.04.
Daniel
1

Sur les distributions basées sur RPM, la situation semble ressembler à ceci

  • RHEL 7 - l'ajoute à la fin de PATH, voir https://bugzilla.redhat.com/show_bug.cgi?id=1583227 lorsque vous utilisez un shell de connexion. Cela fonctionnera avec, sudo su -l johndoemais cela ne fonctionnera pas si vous n'utilisez pas le -lcommutateur.
  • CentOS 7 - voir RHEL, il suit toujours RHEL.
  • Fedora 28 (probablement aussi plus ancienne) - idem RHEL / CentOS, ajoutée à la fin de PATH

Si vous voulez voir ces bugs triés, n'oubliez pas de voter / commenter ceux-ci car cela soulignerait l'importance de la question.

sorin
la source