A primeira parte desta questão refere-se a como, que NÃO está tornando o programa disponível em qualquer lugar - está disponibilizando o programa a partir desse script de init específico, que é a solução correta para tal tarefa.
A segunda parte lista a solução correta para disponibilizá-la de qualquer lugar. Se você vir páginas de manual para bash(1)
, poderá ver a diferença na descrição:
/etc/profile
The systemwide initialization file, executed for login shells
~/.bashrc
The individual per-interactive-shell startup file
Então a diferença é
- quando o arquivo é carregado: inicialização do shell OU login
- se estiver disponível para o usuário específico OU para todos os usuários
A diferença profile.d
version é apenas que você escreve em outro arquivo, mas eu acho que você pode inventar que tem o mesmo significado que colocar em /etc/profile
.