Стандартный каталог Unix для размещения пользовательских исполняемых файлов или скриптов? [закрытый]
Если у меня есть пользовательский сценарий оболочки или программы, которые я создал сам или загрузил из интернета, и я хочу иметь возможность выполнить это из CLI, есть ли стандартное расположение, чтобы поместить это в структуру каталогов Linux/Unix?
/usr/bin ?
/usr/local/bin ?
/usr/lib ?
/usr/sbin ?
/bin ?
/sbin ?
/var ?
обычно я помещаю его в папку ~/bin и помещаю его в путь, но он не кажется чистым. И каждый раз, когда я загружал новую программу, я должен снова поставить ее на путь.
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
. Хотя у него есть некоторые проблемы с безопасностью... особенно с загруженными скриптами.