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.