Ubuntu 16.04 Scripts em /etc/profile.d

2

No momento, estou tentando configurar algumas definições de bash (funções, variáveis) que precisam estar disponíveis para todos os usuários que acessam uma estação de trabalho. Eu criei shell scripts com a extensão .sh no diretório /etc/profile.d/ que tem todo o necessário. Em teoria, eles devem ser executados quando o usuário fizer login no sistema.

Infelizmente, nenhum deles está disponível para os usuários quando eles usam a estação de trabalho. A solução atual é manualmente source deles.

O que me intriga é que esses scripts são executados quando os usuários logam remotamente via ssh. : |

O que estou perdendo aqui?

    
por feverDream 01.03.2017 / 02:16

1 resposta

1

/etc/profile e os arquivos em /etc/profile.d são lidos por shells de login. Isso é bom para fazer coisas como configurar variáveis de ambiente, que são herdadas por processos filhos: dessa forma eles são definidos em todos os programas da sessão. Não é bom para configurações de shell, como definições de função, pois elas estão disponíveis apenas nessa instância de shell. Para configurações de shell, você precisa usar um arquivo de configuração de shell em vez de um arquivo de configuração de sessão. Para o bash, isso é ~/.bashrc e (nos sistemas em que está ativado) /etc/bash.bashrc .

Para obter mais informações, consulte Existe um arquivo equivalente" .bashrc "lido por todos os shells? e Diferença entre o login shell e o non-login shell?

    
por 02.03.2017 / 00:12