Различия между /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin
У меня есть шесть каталогов с командными файлами. Это /bin
, /sbin
, /usr/bin
, /usr/sbin
, /usr/local/bin
а также /usr/local/sbin
,
Каковы различия между ними? Если я пишу свои собственные сценарии, где я должен их добавить?
Связанные с:
2 ответа
Пожалуйста, обратитесь к Стандарту Иерархии Файловой Системы (FHS) для Linux для этого.
/bin
: Для двоичных файлов, используемых до/usr
перегородка смонтирована. Это используется для простых двоичных файлов, используемых на самой ранней стадии загрузки, или для тех, которые должны быть доступны в однопользовательском режиме загрузки. Думайте о двоичных файлах какcat
,ls
, так далее./sbin
: То же, но для бинарных файлов с привилегиями суперпользователя (root)./usr/bin
: То же, что и сначала, но для общесистемных двоичных файлов./usr/sbin
: То же, что и выше, но для бинарных файлов с привилегиями суперпользователя (root).
если я пишу свои собственные сценарии, где я должен добавить их?
Ни один из вышеперечисленных. Вы должны использовать /usr/local/bin
или же /usr/local/sbin
для общесистемных доступных скриптов. local
путь означает, что он не управляется системными пакетами (это ошибка для пакетов Debian/Ubuntu).
Для пользовательских сценариев используйте ~/bin
(личная папка bin в вашем домашнем каталоге).
FHS говорит для /usr/local
:
Третичная иерархия для локальных данных, характерных для этого хоста. Обычно имеет дополнительные подкаталоги, например,
bin/
,lib/
,share/
,
У меня был похожий вопрос год + назад: лучший каталог для размещения моих скриптов bash?
Системные каталоги для двоичных файлов
man hier
(иерархия) перечисляет все каталоги. Чтобы получить только для двоичных файлов, используйте:
$ man hier | grep -E 'bin$|sbin$|^.{7}(/bin)|^.{7}(/sbin)' -A2
/bin This directory contains executable programs which are needed in single user
mode and to bring the system up or repair it.
--
/sbin Like /bin, this directory holds commands needed to boot the system, but
which are usually not executed by normal users.
--
/usr/X11R6/bin
Binaries which belong to the X-Window system; often, there is a symbolic
link from the more traditional /usr/bin/X11 to here.
--
/usr/bin
This is the primary directory for executable programs. Most programs exe‐
cuted by normal users which are not needed for booting or for repairing the
--
/usr/local/bin
Binaries for programs local to the site.
--
/usr/local/sbin
Locally installed programs for system administration.
--
/usr/sbin
This directory contains program binaries for system administration which
are not essential for the boot process, for mounting /usr, or for system
Где поставить свои скрипты?
Для всех пользователей, чтобы получить доступ к вашим сценариям вы можете поместить их в /usr/local/bin
, Имейте в виду, что вам нужно sudo
Доступ к добавлению / изменению файлов здесь. Смотрите: есть ли стандартное место для размещения пользовательских сценариев Linux?
Для ваших собственных скриптов идентификатора пользователя поместите их в /home/YOUR_NAME/bin
, Имейте в виду, что вы должны сначала создать этот каталог и перезапустить терминал, чтобы автоматически установить путь путем ~/.profile
, Смотрите: Как добавить /home/username/bin в $PATH?
Что я знаю, я не знаю
Я собираюсь взять некоторые из моих более сложных сценариев bash в Ask Ubuntu и настроить их с помощью сценариев установки на github
, Вот несколько примеров:
- Автоматическая регулировка яркости дисплея на основе восхода и захода солнца
- Таймер для одновременной установки различных будильников
- Приложение, которое блокирует экран через определенное количество времени для Ubuntu
- Контроль версий кода между локальными файлами и ответами AU
Я думаю, что сценарии должны быть установлены в /usr/bin
который находится в $PATH, но я еще не уверен в подходящем месте.