bashrc não carregado no shell / bin / bash

4

Quando eu ssh em um servidor (4.3.3-2-ARCH), meu .bashrc não está carregado (no entanto, eu posso carregá-lo manualmente pelo sourcing).

Eu não tenho nenhum outro arquivo na minha pasta pessoal, como .profile. O shell também está correto

$ echo $SHELL
/bin/bash

Quando faço o login usando ssh -t myserver /bin/bash , meu .bashrc IS é carregado corretamente.

No modo detalhado do SSH, vejo que /etc/bash.bashrc e ~ / .bashrc são carregados usando o último comando. Ao usar o comando ssh padrão, nenhum deles está sendo carregado ...

O que devo configurar para ter o .bashrc (e /etc/bash.bashrc) carregado ao usar o comando ssh padrão?

    
por intrixius 07.01.2016 / 10:07

4 respostas

10

o arquivo ~/.bashrc é carregado para shells interativos que não são de login, é por isso que executar /bin/bash de ssh funciona conforme o esperado.

Para shells de login (entre outros) ~ / .bash_profile é lido. Normalmente, seu ~/.bash_profile contém algo como

if [ -f ~/.bashrc ]; then
        . ~/.bashrc
fi

O que garante que ~/.bashrc seja carregado se seu shell for um shell de login.

Se o seu ~/.bash_profile contiver os itens acima e ~/.bashrc não estiver sendo carregado, você poderá depurar os scripts usando set -x como de costume.

    
por 07.01.2016 / 10:16
1

Normalmente, quando um usuário é criado, ele copia um monte de arquivos para seu novo diretório (se você escolher criar um).

Você pode verificar o diretório /etc/skel desses arquivos. Deve haver o .bash_profile que você esperava.

    
por 07.01.2016 / 10:56
0

O Bash lê o grupo de arquivos, dependendo da invocação do shell:

  • Shell de login: Basicamente, um shell que é anexado a um tty e vem de um processo de autenticação. Este tipo de shell lê / etc / profile, ~ / .bash_profile, ~ / .bash_login e ~ / .profile
  • Login não - shell interativo: shells interativos que são abertos sem um processo de autenticação. Este tipo de shell lê /etc/bash.bashrc e ~ / .bashrc

Você pode encontrar mais informações sobre: man bash, section INVOCATION

    
por 10.01.2016 / 12:45
0

Como nenhum dos anteriores, parece que o usuário não tem um shell atribuído, por isso, basta mostrar o caractere $ como prompt.
Eu tive que atribuir um shell para o usuário, executando o comando:

sudo usermod --shell /bin/bash username

Depois disso, o usuário fez login automaticamente com um shell bash.

    
por 29.10.2018 / 21:43