Se esiste una directory nel percorso di ricerca in cui qualcuno di cui non ti fidi potrebbe scrivere file, la directory non dovrebbe trovarsi nel percorso, punto.
L'ordine conta solo se un comando è presente in più di una voce nell'elenco. Quindi, l'unico caso da considerare è quando qualcuno in modo fidato ha organizzato una voce che ne oscura un altro, deliberatamente o meno.
Se è stato deliberato, l'ordine dovrebbe essere quello di cercare le directory in ordine di gestione locale: in genere ciò significa prima ~/bin
o equivalente se in esecuzione con un account che ha tale directory (non applicabile alla maggior parte degli account di sistema) , quindi /usr/local/bin
, quindi le directory gestite dal gestore pacchetti /usr/bin/
e /bin
.
In linea di principio, non dovrebbe esserci ombra tra le directory sbin
e bin
. sbin
delle directory sono per i comandi che sono utili solo per un amministratore di sistema (questo è il motivo per cui queste directory normalmente non si trovano nel percorso di utenti diversi da root). In linea di principio potrebbe esserci un nome di comando per il quale si desidera eseguire un eseguibile diverso come root, quindi sbin
directory dovrebbe essere avanti rispetto alla corrispondente directory bin
- altrimenti …/sbin/foo
non verrebbe mai eseguito poiché sarebbe ombreggiato da …/bin/foo
per tutti.
L'unico caso in cui vi è un'ambiguità è che potrebbe esserci stato uno shadowing accidentale. In quel caso non c'è una risposta ovvia. Generalmente, non ha molto senso inserire /usr/local/bin
dopo /usr/bin
: se non vuoi la scelta dei comandi dell'amministratore locale, non mettere affatto /usr/local/bin
nel percorso di ricerca (e rimuovere /usr/local/lib
dal percorso di ricerca della libreria, ecc.).
Tra /usr/bin
e /bin
, in linea di principio, si potrebbe voler ombreggiare un eseguibile da /bin
(versione piccola solo per il tempo di avvio) con uno da /usr/bin
(versione grande da un% co_de montato separatamente % partizione), ma piccole partizioni root con un /usr
separato sono una pratica molto rara al giorno d'oggi. Era una pratica più comune nei giorni in cui i sistemi operativi utilizzavano spazio su disco significativo, ma anche in questo caso l'ombreggiamento delle utilità in /usr
con le versioni da /bin
era raro. L'altro ordine, ponendo prima /usr/bin
, ha un leggero vantaggio in termini di prestazioni ( /bin
di solito è molto più piccolo). Sulla maggior parte dei sistemi non c'è una strong ragione per preferire un ordine all'altro. (Su alcuni sistemi /bin
e /bin
sono la stessa directory, ma non dovresti dare per scontato che a meno che tu non lavori solo su versioni recenti di una delle distribuzioni che fanno ciò.)
/usr/bin
(o PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
) è in genere l'impostazione giusta per i lavori eseguiti come root e PATH=/usr/local/sbin:/usr/sbin:/sbin:/usr/local/bin:/usr/bin:/bin
per i lavori non eseguiti come root. Non vedo alcuna buona ragione per deviare da quella (tranne per PATH=/usr/local/bin:/usr/bin:/bin
rispetto a /usr
inversione) eccetto per far fronte a variazioni locali (es. Una directory specifica del sito su * BSD distinta dai pacchetti installati in /
). Per quanto riguarda la sicurezza, non importa, ma in termini di funzionalità, mettendo /usr/local
davanti a /usr/local
e /usr
è indifferente o necessario.