Consequências de ter uma variável de ambiente $ PATH longa?

6

O recurso que eu realmente preciso é ser capaz de criar "diretórios virtuais", mesclando uma coleção de diretórios reais (para que o seu /usr/bin é realmente uma coisa virtual que aponta para uma matriz de diretórios).

No entanto, esse recurso, embora disponível em alguns sistemas operacionais, não é difundido, e você não pode esperar que ele seja suportado no sistema operacional que você usará no próximo ano, por exemplo.

Por enquanto, estou usando a variável $ PATH como uma solução alternativa, armazenando nela toda a coleção de diretórios que desejo "mesclar" (e planejo usar outras, como $ MANPATH, para páginas de manual, também como equivalentes análogos para bibliotecas).

Eu não estou atingindo nenhum problema de desempenho no momento, já que a coleção de "diretórios mesclados" não é grande, mas estou pensando se poderia ter problemas caso o número chegue no futuro a centenas de diretórios ( Eu não sei se um número tão grande vai acontecer, no entanto).

O número esperado de diretórios "mesclados" que estou supondo no futuro previsível é sobre 40 para 50 .

As soluções encontradas para este recurso são baseadas principalmente no gerenciamento de links simbólicos, espelhando efetivamente todos os arquivos de todos os diretórios mesclados como links simbólicos apontando para eles a partir do diretório "unificado". No entanto, essa abordagem parece uma complexidade esmagadora para mim. Não parece uma solução limpa e limpa.

Você acha que eu poderia continuar com a abordagem do $ PATH ou deveria parar, reconsiderar e estudar outras opções?

    
por cesss 22.01.2017 / 11:59

2 respostas

6

O shell geralmente armazena em cache as informações sobre onde os utilitários externos são encontrados, o que significa que ele realmente só precisa fazer uma única pesquisa para cada utilitário não armazenado em cache.

Eu não esperaria que ter um longo $PATH imporia sérios problemas de desempenho se estivesse usando uma concha sensível.

Para uma solução alternativa, dê uma olhada em GNU Stow .

    
por 22.01.2017 / 12:05
4

A solução $PATH é altamente dependente de $PATH sendo configurada com sucesso na inicialização, fazendo com que a configuração inteira falhe se a configuração do ambiente for danificada / excluída de alguma forma.

O método de ligação simbólica é mais robusto, pois é mais autossuficiente, embora um pouco mais complexo de configurar.

O projeto GNU Stow e nixOS são duas maneiras de usar o método de link simbólico que você pode usar ou examinar para ter uma ideia de como ele funciona na prática .

    
por 22.01.2017 / 12:24