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.