Пример: в Ubuntu всегда есть .local
каталог в домашнем каталоге и .profile
включает эту строку:
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
$HOME/.local/bin
по умолчанию не существует, но если он создан, он уже находится внутри, $PATH
и внутри него можно найти исполняемые файлы.
Это не совсем упомянуто в спецификации каталога XDG, но, похоже, является производным от него.
Что мне интересно, так это то, достаточно ли это распространено, что обычно предполагается, что оно существует в самых распространенных дистрибутивах для конечных пользователей. Это, например, во всех производных Debian или, по крайней мере, в Ubuntu? Как насчет экосистемы Red Hat / Fedora / CentOS? И так далее с Арком, Сьюз, и тем, что люди используют в настоящее время.
Чтобы быть более ясным, это только для $HOME/.local/bin
, а не $HOME/bin
.
Из любопытства не стесняйтесь включать BSD, OS / X и другие, если у вас есть информация. :)
источник
/etc/skel/.profile
не менее 14.04 проверяет наличие пользователя$HOME/bin
и добавляет его,PATH
если он существует; напротив, 16.04, кажется, добавляет$HOME/bin
и$HOME/.local/bin
безоговорочно. Я не помню, чтобы ранее Ubuntus добавлял$HOME/.local/bin
- но я не вижу ничего релевантного в журналеbash
изменений пакета (который предположительно принадлежит/etc/skel/.profile
).Ответы:
В
~/.local
каталогах входят в Systemd спецификации файловой иерархии и являются расширением спецификации XDG пользовательских DIRSЭто может сбивать с толку, поскольку производные от Debian пакеты
bash
потеряли~/.local
путь, когда они перебазировали на bash 4.3, они были в bash 4.2.Это ошибка , и патч уже некоторое время находится в системе Debian.
Эта ошибка является причиной, по которой в Ubuntu 16.04 был ~ / .local, а в Ubuntu 17.04 - нет.
Если вы запускаете
systemd-path
как пользователь, и вы увидите, что он предназначен для пути.Теоретически, ответом на ваш запрос является любой дистрибутив, который использует systemd или хочет поддерживать совместимость с systemd.
Больше информации в
file-hierarchy(7)
источник
На RPM-дистрибутивах ситуация выглядит так
sudo su -l johndoe
но не будет работать, если вы не используете-l
переключатель.Если вы хотите, чтобы эти ошибки были отсортированы, пожалуйста, не забудьте проголосовать / прокомментировать их, так как это подчеркнет важность проблемы.
источник