Различия между /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, Вот несколько примеров:

Я думаю, что сценарии должны быть установлены в /usr/bin который находится в $PATH, но я еще не уверен в подходящем месте.

Другие вопросы по тегам