Conectado a “-bash”, não a “bash”. e qual é a diferença?

1

Eu efetuei login via ssh em uma máquina Ubuntu remota.

Por padrão, estou em um terminal chamado -bash (observe o hífen). Este bash não carrega / usa meu ~ / .bashrc.

Ao inserir bash no terminal, chego a um terminal, que também usa meu .bashrc.

Agora, qual é a diferença entre -bash e bash . Por que estou logado por padrão na versão -bash . Eu executei chsh -s /bin/bash e reiniciei a máquina já, o que de acordo com esta postagem define ambiente padrão. Isso parece falhar. E por último mas não menos importante, se eu não posso mudar para o bash "normal", como posso obter -bash para usar o meu .bashrc?

Para ilustrar meu problema, aqui está o fluxo de trabalho mostrando a saída do console:

user@machine:~$ echo $0
-bash
user@machine:~$ bash
~: echo $0
bash
    
por muuh 10.12.2016 / 20:57

1 resposta

3

Para shells, prefixing argv [0] com um traço é uma forma tradicional de solicitar que ele seja um "shell de login" (equivalente a, por exemplo, bash --login ). Os shells de login diferem dos "regulares", pois usam um script de inicialização diferente (por exemplo, ~/.profile em vez de ~/.bashrc ) - ele pode mostrar uma saudação, verificar email, iniciar ssh-agent e assim por diante ... em outras palavras, tarefas que só precisam ser feitas uma vez.

Normalmente, o shell de login precisa ser informado manualmente para carregar .bashrc usando:

. ~/.bashrc

ou:

source ~/.bashrc

no final do script ~/.bash_profile .

    
por 10.12.2016 / 21:07