Ho sei directory con file di comando. Questi sono /bin
, /sbin
, /usr/bin
, /usr/sbin
, /usr/local/bin
e /usr/local/sbin
.
Quali sono le differenze tra questi? Se sto scrivendo i miei script, dove dovrei aggiungerli?
Relazionato:
Ho sei directory con file di comando. Questi sono /bin
, /sbin
, /usr/bin
, /usr/sbin
, /usr/local/bin
e /usr/local/sbin
.
Quali sono le differenze tra questi? Se sto scrivendo i miei script, dove dovrei aggiungerli?
Relazionato:
Risposte:
Per questo fare riferimento al Filesystem Hierarchy Standard (FHS) per Linux .
/bin
: Per i binari utilizzabili prima del /usr
montaggio 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
, ls
ecc
/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/bin
o /usr/local/sbin
per gli script disponibili a livello di sistema. Il local
percorso 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/
.
/bin
causa problemi? Ho spostato i miei copioni in base alla tua risposta, ma sono ancora curioso
Severity:Serious Certainty:Certain
ls -la
non mostra nulla
Anch'io ho fatto una domanda simile un anno fa: la migliore directory per posizionare i miei script bash?
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
Per tutti gli utenti di accedere ai tuoi script puoi inserirli /usr/local/bin
. Tieni presente che devi sudo
accedere 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?
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/bin
che si trova nel $ PATH, ma non sono ancora sicuro del posto appropriato.
man hier
sezione 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).
man hier
è un estratto informativo insufficiente dell'IMO). Tuttavia, questa potrebbe essere la mia opinione personale.
/usr/X11R6/bin
e /usr/local/bin
che è incluso in man heir
.
/usr/local/bin
dal momento che non sei il gestore dei pacchetti?