Подтвердить что ты не робот

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

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

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

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

4b9b3361

Ответ 1

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

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

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

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

Ответ 2

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

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

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

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

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

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

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

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

[...]

Каталоги/opt/bin,/opt/doc,/opt/include,/opt/info,/opt/lib, и /opt/man зарезервированы для использования локальным системным администратором. пакеты могут предоставлять файлы "front-end", предназначенные для размещения (путем связывания или копирование) этих зарезервированных каталогов локальным системным администратором, но должны нормально функционировать в отсутствие этих зарезервированных каталоги.

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

Ответ 3

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

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

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