Различия между /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin, /usr/local/sbin

У меня есть шесть каталогов с командными файлами. Это /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bin и /usr/local/sbin.

В чем разница между ними? Если я пишу свои собственные сценарии, куда я должен их добавлять?


Связанный:

Пожалуйста, обратитесь к Стандарт иерархии файловой системы (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 в Спросите Ubuntu и настройка их с помощью скриптов установки на github. Вот несколько примеров:

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

Related question: filesystems - /usr/bin vs /usr/local/bin on Linux - Unix & Linux Stack Exchange

@Keelan Ваш вопрос близок к вопросу, который я опубликовал более года назад: Where should I put my bash scripts - Ask Ubuntu