Por que tantos programas residem no PATH?

10

Uma coisa que me intriga sobre o Linux de desktop, pelo menos, é que quase tudo está no meu PATH. Por tudo, quero dizer, todo aplicativo de desktop, incluindo coisas como gnome-character-map e glchess. Eles não têm interfaces de linha de comando para falar, então não posso pensar em um caso em que eu estaria regularmente lançando esses de um terminal - e, dentro desse caso improvável, não posso imaginar ser incomodado pela necessidade de digitar sua totalidade caminhos. Parece apenas cluttery, mas talvez haja uma boa razão.

Então, por que isso acontece? Existe algum impacto notável no desempenho ou manutenção?

    
por Dylan McCall 15.08.2012 / 23:57

2 respostas

14

Todos os comandos que um usuário pode querer executar estão no PATH. É para isso. Isso inclui comandos que você executam diretamente, comandos que outras pessoas executam diretamente e comandos que você ou outras pessoas executam indiretamente porque são chamados por outros comandos. Isso não se limita aos comandos executados a partir de um terminal: os comandos executados a partir de uma GUI também são pesquisados no caminho de pesquisa do comando (novamente, é para isso).

A necessidade de digitar o caminho completo seria terrível: você precisaria descobrir qual é o caminho completo! Você precisaria acompanhar se está em /usr/bin (que contém a maioria dos programas fornecidos com o sistema operacional) ou em /usr/local/bin (que contém programas instalados manualmente pelo administrador, bem como programas que não fazem parte do sistema operacional central em algumas variantes unix), ou em algum outro diretório específico do sistema, ou em algum lugar no diretório pessoal do usuário.

É difícil responder sobre o "impacto no desempenho ou manutenção" porque você não diz com o que está comparando. Se você está comparando com ter que digitar o caminho completo em todos os lugares, isso é um pesadelo para a manutenção: se você realocar um programa ou se quiser instalar uma versão mais recente do que a que veio com o sistema operacional ou se foi instalada por um administrador do sistema, você tem que substituir o caminho completo em todos os lugares. O impacto no desempenho de procurar o nome em alguns diretórios é insignificante.

Se você está comparando com o Windows, é ainda pior: alguns programas adicionam não apenas o executável, mas também todo tipo de lixo ao PATH, e você acaba com uma variável PATH de uma milha que ainda não possui. • inclua todos os programas, porque muitos programas não se adicionam ao PATH do sistema quando você os instala.

    
por 16.08.2012 / 03:24
4

A variável PATH contém uma lista de caminhos de diretório. Quando o usuário digita um comando sem fornecer o caminho completo, essa lista é verificada se contiver um caminho que leve ao comando. Não há nada inerentemente terminal ou específico de linha de comando sobre isso.

Além disso, não há nada específico sobre o Desktop Linux sobre isso. O PATH do meu sistema XP contém % SystemRoot% \ system32;% SystemRoot%;% SystemRoot% \ System32 \ Wbem que provavelmente cobre a maioria dos binários do Windows.

Os diretórios no PATH são pesquisados na ordem especificada e param assim que uma correspondência é encontrada. Os diretórios do sistema geralmente estão no início para dar a eles a mais alta precedência. Os usuários devem anexar caminhos de pesquisa personalizados no final.

Quanto ao desempenho: a maioria dos shells modernos armazena em cache o conteúdo do PATH, para que eles não precisem varrer o disco toda vez que o usuário inserir um comando.

    
por 16.08.2012 / 00:11