Mam sześć katalogów z plikami poleceń. Są to /bin
, /sbin
, /usr/bin
, /usr/sbin
, /usr/local/bin
i /usr/local/sbin
.
Jakie są między nimi różnice? Jeśli piszę własne skrypty, gdzie mam je dodać?
Związane z:
Mam sześć katalogów z plikami poleceń. Są to /bin
, /sbin
, /usr/bin
, /usr/sbin
, /usr/local/bin
i /usr/local/sbin
.
Jakie są między nimi różnice? Jeśli piszę własne skrypty, gdzie mam je dodać?
Związane z:
Odpowiedzi:
W tym celu zapoznaj się z Standardem hierarchii systemu plików (FHS) dla systemu Linux .
/bin
: W przypadku plików binarnych używanych przed /usr
zamontowaniem partycji. Jest to używane w przypadku trywialnych plików binarnych używanych na bardzo wczesnym etapie uruchamiania lub takich, które muszą być dostępne w trybie uruchamiania dla jednego użytkownika. Pomyśl o plikach binarnych, takich jak cat
, ls
itp
/sbin
: Tak samo, ale w przypadku plików binarnych z uprawnieniami administratora (root) .
/usr/bin
: Taki sam jak pierwszy, ale dla ogólnych plików binarnych całego systemu .
/usr/sbin
: Tak samo jak powyżej, ale w przypadku plików binarnych z uprawnieniami administratora (root).
jeśli piszę własne skrypty, gdzie mam je dodać?
Żadne z powyższych. Powinieneś używać /usr/local/bin
lub /usr/local/sbin
do skryptów dostępnych w całym systemie. local
Ścieżka oznacza, że nie jest zarządzany przez pakietów systemowych (jest to błąd pakietów Debian / Ubuntu).
W przypadku skryptów o zasięgu użytkownika użyj ~/bin
(osobistego folderu bin w katalogu domowym).
FHS mówi o /usr/local
:
Trzeciorzędna hierarchia danych lokalnych, specyficzna dla tego hosta . Zwykle ma dalsze podkatalogów, na przykład
bin/
,lib/
,share/
.
/bin
powoduje jakieś problemy? Przesunąłem swoje skrypty zgodnie z twoją odpowiedzią, ale nadal jestem ciekawy
Severity:Serious Certainty:Certain
ls -la
nic nie pokazuje
Już rok temu miałem podobne pytanie: najlepszy katalog do umieszczenia moich skryptów bash?
man hier
(hierarchia) zawiera listę wszystkich katalogów. Aby uzyskać te tylko dla plików binarnych, użyj:
$ 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
Aby wszyscy użytkownicy mieli dostęp do twoich skryptów, możesz je umieścić /usr/local/bin
. Pamiętaj, że potrzebujesz sudo
dostępu do dodawania / zmiany plików tutaj. Zobacz: Czy istnieje standardowe miejsce do umieszczania niestandardowych skryptów systemu Linux?
Wstaw własne skrypty identyfikatora użytkownika /home/YOUR_NAME/bin
. Pamiętaj, że musisz najpierw utworzyć ten katalog i ponownie uruchomić terminal, aby automatycznie skonfigurować ścieżkę ~/.profile
. Zobacz: Jak dodać / home / username / bin do $ PATH?
Zastanawiam się nad pobraniem niektórych bardziej złożonych skryptów bash w Ask Ubuntu i skonfigurowaniem ich przy użyciu skryptów instalacyjnych github
. Oto kilka przykładów:
Myślę, że skrypty powinny zostać zainstalowane, w /usr/bin
których znajduje się $ PATH, ale nie jestem jeszcze pewien, jakie jest właściwe miejsce.
man hier
sekcja, której odpowiedź gertvdijk nie dotyczyła. tzn. możesz uzyskać hierarchiczną strukturę katalogu w wierszu poleceń bez konieczności uciekania się do czytania go w Internecie (tj. tutaj).
man hier
jest niewystarczającym informacyjnie fragmentem IMO). Może to być jednak moja osobista opinia.
/usr/X11R6/bin
i /usr/local/bin
który jest zawarty w man heir
.
/usr/local/bin
skoro nie jesteś menedżerem pakietów?