Differenze tra / bin, / sbin, / usr / bin, / usr / sbin, / usr / local / bin, / usr / local / sbin


283

Ho sei directory con file di comando. Questi sono /bin, /sbin, /usr/bin, /usr/sbin, /usr/local/bine /usr/local/sbin.

Quali sono le differenze tra questi? Se sto scrivendo i miei script, dove dovrei aggiungerli?


Relazionato:



@Keelan La tua domanda è vicina a una domanda che ho pubblicato un anno + fa: askubuntu.com/questions/830074/…
WinEunuuchs2Unix

Risposte:


349

Per questo fare riferimento al Filesystem Hierarchy Standard (FHS) per Linux .

  • /bin: Per i binari utilizzabili prima del /usrmontaggio della partizione. Questo è usato per binari banali usati nella fase di avvio molto precoce o quelli che devi avere disponibili in modalità di avvio per utente singolo. Pensate a come file binari cat, lsecc

  • /sbin : Lo stesso, ma per i file binari con privilegi di superutente (root) richiesti .

  • /usr/bin: Uguale al primo, ma per i binari generali di tutto il sistema .

  • /usr/sbin : Come sopra, ma per i file binari con privilegi di superutente (root) richiesti.


se sto scrivendo i miei script, dove devo aggiungerli?

Nessuno dei precedenti. È necessario utilizzare /usr/local/bino /usr/local/sbinper gli script disponibili a livello di sistema. Il localpercorso significa che non è gestito dai pacchetti di sistema (questo è un errore per i pacchetti Debian / Ubuntu).

Per gli script con ambito utente , utilizzare ~/bin(una cartella bin personale nella directory home).

L'FHS dice per /usr/local:

Gerarchia terziaria per dati locali, specifica per questo host . Ha tipicamente ulteriori sottodirectory, ad esempio, bin/, lib/, share/.


così / bin è dove sono installati tutti i file core. come ls, cat, pwd, ecc? Quindi, / usr / bin è dove si trovano le app installate dall'utente? quali sono alcuni esempi di cosa dovrebbe essere in / usr / bin?
Patoshi パ ト シ

1
Il posizionamento degli script /bincausa problemi? Ho spostato i miei copioni in base alla tua risposta, ma sono ancora curioso
Rumesh,

5
@RumeshSudhaharan non dovresti farlo, perché è gestito dalla gestione dei pacchetti. Se anche qualsiasi altro pacchetto desidera utilizzare quel percorso, sovrascriverà il tuo file. I file nei pacchetti non possono mai sovrapporsi (almeno per i repository ufficiali), quindi sei più sicuro durante l'installazione nel percorso locale. Inoltre, è solo per tua comodità e sicurezza. In un percorso locale non è possibile rovinare il sistema in modo così brutto e non è possibile sostituire accidentalmente un binario di sistema.
gertvdijk,

8
Mi piace la spiegazione sulla pagina di errore:Severity:Serious Certainty:Certain
cutrightjm

1
Ho messo alcuni file in / usr / local / bin e posso eseguirli, tuttavia non posso modificarli, ls -lanon mostra nulla
M. Reza Nasirloo

6

Anch'io ho fatto una domanda simile un anno fa: la migliore directory per posizionare i miei script bash?

Directory di sistema per i binari

man hier(gerarchia) elenca tutte le directory. Per ottenere quelli solo per i binari usare:

$ 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

Dove mettere i tuoi script?

Per tutti gli utenti di accedere ai tuoi script puoi inserirli /usr/local/bin. Tieni presente che devi sudoaccedere per aggiungere / modificare i file qui. Vedi: Esiste un posto standard per posizionare script Linux personalizzati?

Per il tuo ID utente, inseriscili negli script /home/YOUR_NAME/bin. Tieni presente che devi prima creare questa directory e riavviare il terminale per ottenere la configurazione automatica del percorso ~/.profile. Vedi: Come aggiungere / home / username / bin a $ PATH?


Quello che so non lo so

Sto pensando di prendere alcuni dei miei script bash più complessi in Chiedi a Ubuntu e di impostarli con gli script di installazione attivi github. Ecco alcuni esempi:

Penso che gli script dovrebbero essere installati in quello /usr/binche si trova nel $ PATH, ma non sono ancora sicuro del posto appropriato.


1
Apprezzo il tuo sforzo, ma, tranne la parte "Quello che so di non sapere", hai ripetuto la risposta di Gertvdijk.
danzel,

1
@danzel Penso che la parte chiave sia la man hiersezione alla quale la risposta di gertvdijk non ha affrontato. vale a dire che è possibile ottenere la struttura gerarchica della directory nella riga di comando senza dover ricorrere alla lettura sul web (ovvero qui).
WinEunuuchs2Unix

1
sono informazioni interessanti, sono d'accordo. Ma gertvdijk ha già menzionato il Filesystem Hierarchy Standard (che man hierè un estratto informativo insufficiente dell'IMO). Tuttavia, questa potrebbe essere la mia opinione personale.
Danzel,

@danzel Sono d'accordo che i siti Web abbiano un'analisi molto più approfondita rispetto a ciò che è presente sui nostri dischi rigidi. Sto solo cercando di sottolineare che le informazioni sono sui nostri dischi rigidi senza ricorrere a Internet. Inoltre manca il link di Wikipedia citato /usr/X11R6/bine /usr/local/binche è incluso in man heir.
WinEunuuchs2Unix

@ WinEunuuchs2Unix, re last para; Perché non /usr/local/bindal momento che non sei il gestore dei pacchetti?
Pacerier,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.