/ etc / profile não originado para usuários

3

No servidor ubuntu que eu executo, adicionei personalizações em /etc/bash.bashrc e como .sh arquivos em /etc/profile.d , para adicionar alguns aliases e funcionalidades úteis para meus usuários. Todos eles correm corretamente para minha conta.

No entanto, ao fazer login em outras contas (incluindo as dos mesmos grupos que o meu), seja por meio de su ou ssh , essas personalizações não são carregadas. Executar manualmente . /etc/profile é o truque, mas isso deve acontecer automaticamente na inicialização em shells de login interativos. A execução de echo $0 de todas as contas retorna -bash , então presumo que estejam efetivamente em tais shells.

Por que outro motivo poderia estar acontecendo e como posso corrigi-lo?

    
por kadu 16.04.2018 / 23:49

2 respostas

0

Algo em ~/.profile e ~/.bashrc é executado após /etc/profile e /bash.bashrc . Assim, quaisquer apelidos ou variáveis configurados no primeiro substituirão os definidos no último caso compartilhem o mesmo nome.

Para quem quer que isso possa ajudar: o problema específico que eu estava enfrentando é que estou migrando servidores e solicitei aos meus usuários que fizessem backup de todos os arquivos importantes que tivessem e o colocassem de volta no novo servidor. Quando eles fizeram isso, eles incluíram ~/.bashrc porque ele tinha "o truque que faz o python funcionar" (isto é, estava definindo a variável PATH para incluir o diretório anaconda ), bem como algumas das personalizações que eu tinha feito em suas computadores no servidor anterior. Isso estava em conflito com os novos aliases que estou definindo (por exemplo, o alias para source activate , que se tornou conda activate ) e, a partir de 4.4, conda.sh deve ser adicionado a /etc/profiles.d/ em vez de configurar manualmente a variável PATH .

    
por 18.04.2018 / 21:52
1

Eu encontro o mesmo problema. Eu encontrei minha solução enquanto checava o arquivo /etc/profile

...
if [ -d /etc/profile.d ]; then
  for i in /etc/profile.d/*.sh; do
    if [ -r $i ]; then
      . $i
    fi
  done
  unset i
fi

Portanto, é só verificar arquivos .sh (Ubuntu 18). Eu renomei meu /etc/profile.d/conda para /etc/profile.d/conda.sh e agora funciona como pretendido!

    
por 30.10.2018 / 11:21