Стандартный каталог Unix для размещения пользовательских исполняемых файлов или скриптов? [закрытый]


Если у меня есть пользовательский сценарий оболочки или программы, которые я создал сам или загрузил из интернета, и я хочу иметь возможность выполнить это из CLI, есть ли стандартное расположение, чтобы поместить это в структуру каталогов Linux/Unix?

/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?

обычно я помещаю его в папку ~/bin и помещаю его в путь, но он не кажется чистым. И каждый раз, когда я загружал новую программу, я должен снова поставить ее на путь.

3 61

3 ответа:

именно для этой цели, для системы. Для вашего личного пользования,~/bin является стандартом де-факто.

если вы хотите сохранить каждый двоичный файл в своем собственном каталоге, вы можете сделать это, и добавить символическую ссылку на каталог в вашем PATH. Так, например,

curl -o $HOME/downloads/fnord http://fnord.example.com/script.exe
ln -s $HOME/downloads/fnord $HOME/bin/

предоставил $HOME/bin в своем PATH. (Есть такие инструменты, как stow которые делают это - и многое другое-за кулисами для вас.)

это может незначительно отличаться в зависимости от вкуса и Unix. Я предполагаю, что Linux здесь (хотя это может относиться к OSX). Согласно стандарт иерархии файловой системы (FHS) (ссылка получена из стандартная базовая рабочая группа Linux):

The /usr/local иерархия для использования системным администратором, когда локальная установка программного обеспечения. Он должен быть в безопасности от перезаписывается при обновлении системного программного обеспечения. Может быть используется для программы и данные, которые доступны для совместного использования среди группы хостов, но не найдено в /usr.

локально установленное программное обеспечение должно быть помещено в /usr/local а чем /usr если он не устанавливается для замены или обновления программного обеспечения в /usr.

/usr/local/bin часто находится на пути по умолчанию.

обратите внимание, что вы должны только поместить исполняемый файл или ссылку на него в /usr/local/bin, остальные, возможно, придется идти в /usr/local/lib или /usr/local/share.

The /opt дерево также может быть разумным:

/opt зарезервировано для установки дополнительного прикладного программного обеспечения пакеты.

пакет, который будет установлен в /opt, должен найти свои статические файлы в a отдельно /opt/<package> или /opt/<provider> дерево каталогов, где <package> - это имя, которое описывает пакет программного обеспечения и <provider> является зарегистрированным именем поставщика LANANA.

[...]

каталоги /опт/бин /выбрать/док, /опт/включить /опт/инфо /опт/Либ, и /opt / man зарезервированы для использования локальным системным администратором. Пакеты может предоставлять "интерфейсные" файлы, предназначенные для размещения (путем связывания или копирование) эти зарезервированные каталоги локальным системным администратором, но должны нормально функционировать в отсутствие этих зарезервированных справочники.

(вы можете сделать свою собственную ссылку из /opt/your-package/bin/executable на /opt/bin и положил /opt/bin на PATH если он еще не там.)

Ну я бы использовал ~/bin (пока я не корень), но относительно $PATH вы всегда можете сделать

export PATH=".:${PATH}"
# or 
export PATH="${PATH}:."

таким образом, фактический рабочий каталог всегда будет в вашем $PATH. Хотя у него есть некоторые проблемы с безопасностью... особенно с загруженными скриптами.