Muitas perguntas ...
A resposta básica para sua pergunta é sim, cada script é executado em seu próprio shell, ou melhor, cada processo que é exec'd contém uma cópia do ambiente base + essas variáveis que são incluídas por essa fonte + quaisquer variáveis de ambiente adicionais que são incluídos quando o serviço é iniciado.
Mover esses includes, como vars.sh
, para o nível de runlevel seria uma má ideia, porque então cada shell os teria nesse runlevel. A maior parte do encanamento que esses scripts estão criando é extremamente específica para os serviços que estão sendo executados no shell resultante, que é o subproduto desses arquivos sendo originados.
Lembre-se também de que muito é armazenado em buffer e armazenado em cache, blocos lidos do disco, por exemplo, para que você não esteja necessariamente entrando em contato com o disco todas as vezes para releituras subseqüentes desses arquivos. Isso é parte do que está acontecendo quando você olha para o seu sistema e vê que está consumindo muita memória RAM.
$ free -m
total used free shared buffers cached
Mem: 7782 7086 696 0 218 883
-/+ buffers/cache: 5984 1797
Swap: 7823 1550 6273
A linha -/+ buffers/cache
é o armazenamento em cache desses tipos de blocos, relacionados a E / S de disco.
Direções futuras
Grande parte do init deriva do Sistema V (veja o Artigo da Wikipédia sobre init para a história completa). Pelos padrões de hoje, é antiquado, mas tem servido bem por cerca de 20 anos. Mas há definitivamente áreas onde é deficiente.
Então, para tentar abordá-los, 2 recém-chegados, Systemd & Upstart foram desenvolvidos e estão começando a ser adotados por várias distribuições Linux.
A adoção de Upstart tem sido uma pequena montanha-russa. Ele é desenvolvido pela Canonical, então já faz parte do Ubuntu há algum tempo, e fazia parte do Fedora e também do RHEL, CentOS e openSUSE por algum tempo, antes de mudar para o systemd. Na verdade, ainda está no RHEL & CentOS até certo ponto.
Ambos os sistemas fazem melhorias marcadas sobre o init do SysV, especialmente na área de poder iniciar serviços em paralelo. Uma das principais deficiências do init. Mas com esses sistemas, foi a simplicidade de abrir alguns scripts em vim
e ajustar suas rotinas de inicialização. Estas são tecnologias completas que exigem tempo para crescer e entender completamente.