Why are these files not a part of /etc/profile if they are also critical to Bash startup ?
Se você quer dizer: "Por que eles não são apenas combinados em um script gigante?", a resposta é:
- Porque isso seria um pesadelo de manutenção para as pessoas responsáveis pelos scripts.
- Porque ter os scripts carregados como módulos independentes torna todo o sistema mais ajustável dinamicamente - os scripts individuais podem ser adicionados e removidos sem afetar os outros. Etc.
- Porque eles são carregados via / etc / profile, o que faz deles parte do bash "profile" da mesma maneira, de qualquer maneira.
If these files are application-specific startup files not critical to Bash startup, then why are they part of the startup process ? Why are they not run only when the specific applications, for which they contain settings, are executed ?
Parece-me uma questão de filosofia de design mais ampla que dividirei em dois. A primeira questão é sobre o valor e a adequação do uso do ambiente shell. Tem valor positivo? Sim, é útil. É a melhor solução para todos os problemas de configuração? Não, mas é muito eficiente para gerenciar parâmetros simples e também amplamente reconhecido e compreendido. Contraste que dizer, decidindo configurar tais coisas de forma heterogênea, talvez $ PATH pudesse ser gerenciado por uma ferramenta independente separada, ferramentas preferenciais como $ EDITOR poderiam estar em um arquivo sqlite em algum lugar, $ lang coisas poderiam estar em um arquivo de texto com um formato personalizado em algum outro lugar, etc - não apenas usando variáveis env e /etc/profile.d
de repente parece mais simples? Você provavelmente já sabe o que é uma variável env, como eles funcionam e como usá-los, versus aprender 5 mecanismos completamente diferentes para 5 diferentes aspectos onipresentes do que é apropriadamente chamado "o ambiente".
A segunda pergunta é: "A inicialização é o momento apropriado para isso?", o que levanta a objeção de que não é muito eficiente (todos os dados que podem ou não ser usados, etc). Mas:
- Realisticamente, não são tantos dados, em parte porque ninguém em sã consciência os usaria para mais do que alguns parâmetros simples (já que existem outros meios de configurar um aplicativo).
- Se for usado com sabedoria, com relação a coisas que são comumente invocadas, a configuração, por exemplo, padrão $ CFLAGS de um arquivo em algum lugar sempre que você chamar
gcc
seria menos eficiente. Tenha em mente que a quantidade de memória envolvida é, novamente, infinitesimal. - Pode envolver coisas sistêmicas com as quais mais de um aplicativo pode estar envolvido, e o shell é um terreno comum .
Mais poderia ser adicionado a essa lista, mas esperamos que isso lhe dê uma idéia sobre os prós e contras do problema - o principal 'pro' e o principal 'con' é que ele é um namespace global.