Perché tanti programmi vivono in PERCORSO?


10

Una cosa che mi confonde almeno su Linux desktop è che quasi tutto è nel mio PERCORSO. Con tutto intendo ogni applicazione desktop, comprese cose come gnome-character-map e glchess. Questi non hanno interfacce da riga di comando di cui parlare, quindi non riesco a pensare a un caso in cui li avvierei regolarmente da un terminale - e, in quel caso improbabile, non riesco a immaginare di essere disturbato dalla necessità di digitare il loro pieno percorsi. Sembra solo disordine, ma forse c'è una buona ragione.

Quindi, perché non è successo? C'è qualche notevole impatto sulle prestazioni o sulla manutenibilità?

Risposte:


14

Tutti i comandi che un utente potrebbe voler eseguire sono nel PERCORSO. Ecco a cosa serve. Questo include comandi che si esegue direttamente, i comandi che gli altri corrono direttamente e comandi che voi o altre persone di gestione indiretta, perché sono invocati da altri comandi. Questo non si limita ai comandi eseguiti da un terminale: i comandi eseguiti da una GUI vengono anche cercati nel percorso di ricerca dei comandi (di nuovo, questo è quello che serve).

Avere bisogno di digitare il percorso completo sarebbe terribile: dovresti scoprire qual è il percorso completo! Dovresti tenere traccia del fatto che sia in /usr/bin(che contiene la maggior parte dei programmi forniti con il sistema operativo) o in /usr/local/bin(che contiene programmi installati manualmente dall'amministratore, nonché i programmi che non fanno parte del sistema operativo principale su alcuni varianti unix) o in un'altra directory specifica del sistema o da qualche parte nella home directory dell'utente.

È difficile rispondere dell '"impatto sulle prestazioni o sulla manutenibilità" perché non dici a cosa lo stai confrontando. Se stai confrontando la necessità di digitare il percorso completo ovunque, è un incubo per la manutenibilità: se mai trasferisci un programma o se desideri installare una versione più recente di quella fornita con il sistema operativo o è stata installata da un amministratore di sistema, devi sostituire quel percorso completo ovunque. L'impatto sulle prestazioni di cercare il nome in alcune directory è trascurabile.

Se stai confrontando con Windows, è anche peggio: alcuni programmi aggiungono non solo l'eseguibile, ma anche tutti i tipi di schifezze al PERCORSO, e finisci con una PATHvariabile lunga un miglio che non include ancora tutti i programmi, perché molti programmi non si aggiungono al PERCORSO di sistema quando li installi.


Sembra una logica piuttosto razionale. Grazie per la spiegazione! L'idea di sostituire un programma ha molto senso. Non ci avevo pensato affatto :) La parte che mi colpisce è che mi piace avere spazi dei nomi piccoli e descrittivi quando penso alla programmazione, mentre qui tutto è un po 'nello stesso spazio dei nomi globale (e, quando lo facciamo guarda i percorsi completi, in luoghi piuttosto anonimi come * / bin). Immagino che siano cose piuttosto diverse, però.
Dylan McCall,

4

La variabile PATH contiene un elenco di percorsi di directory. Quando l'utente digita un comando senza fornire il percorso completo, questo elenco viene verificato se contiene un percorso che conduce al comando. Non c'è nulla intrinsecamente terminale o specifico della riga di comando al riguardo.

Inoltre non c'è nulla di specifico su Desktop Linux a riguardo. Il PERCORSO dal mio sistema XP contiene % SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem che probabilmente copre la maggior parte dei file binari di Windows.

Le directory in PATH vengono cercate nell'ordine specificato e si interrompono non appena viene trovata una corrispondenza. Le directory di sistema sono generalmente all'inizio per dare loro la massima precedenza. Gli utenti dovrebbero aggiungere percorsi di ricerca personalizzati alla fine.

Per quanto riguarda le prestazioni: la maggior parte delle shell moderne memorizza nella cache il contenuto di PATH in modo che non debbano eseguire la scansione del disco ogni volta che l'utente immette un comando.


Il PERCORSO di Windows copre la maggior parte dei file binari forniti con Windows, ma le normali applicazioni installate non si trovano normalmente nel PERCORSO. (Bene, le app con un componente da riga di comando si aggiungeranno al PERCORSO, ma quelle normalmente solo per la GUI non lo fanno.)
cjm

Fantastico, ho sempre contemplato l'ordine e il suo significato. Che ne dici di una regola empirica? Ho (quasi) ogni combinazione di usr, local, bine sbin(escludendo la mia home directory dell'utente).
Emanuel Berg,
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.