Isso é meio complexo. Primeiro de tudo, os detalhes dependem do tipo de shell que você está executando. Para me plagiar :
-
Quando você abre um emulador de terminal (
gnome-terminal, por exemplo), está executando o que é conhecido como um shell interativo, sem login . -
Ao efetuar login na sua máquina a partir da linha de comando ou executar um comando como
su - username, você está executando um shell login interativo . -
Quando você faz login graficamente, você está executando algo completamente diferente, os detalhes dependerão do seu sistema e ambiente gráfico, mas em geral é o shell gráfico que lida com seu login. Embora muitos shells gráficos (incluindo o padrão do Ubuntu) leiam
/etc/profilee~/.profilenem todos eles fazem isso. -
Finalmente, quando você executa um script de shell, ele é executado em um shell não-interativo, não-login .
Os arquivos que o bash lerá quando lançado dependem do tipo de shell em que ele está sendo executado. A seguir, um trecho da seção INVOCATION de man bash (ênfase minha):
Quando o bash é invocado como um shell de login interativo , ou como um shell não interativo com a opção --login, primeiro lê e executa comandos do arquivo / etc / profile , se esse arquivo existir. Depois de ler esse arquivo, ele procura por ~ / .bash_profile, ~ / .bash_login e ~ / .profile, nessa ordem , e lê e executa comandos do primeiro que existe e é legível. A opção --noprofile pode ser usada quando o shell é iniciado para inibir esse comportamento.
Quando um shell interativo que é não um shell de login é iniciado, o bash lê e executa comandos de /etc/bash.bashrc e ~ / .bashrc , se esses arquivos existem. Isso pode ser inibido usando a opção --norc. A opção de arquivo --rcfile forçará o bash a ler e executar comandos do arquivo em vez de /etc/bash.bashrc e ~ / .bashrc.
Esses são os arquivos de inicialização. Você também tem /etc/environment , onde é possível definir variáveis ambientais globais, mas isso é lido em vez de originado (os comandos dentro dele não são executados, mas as definições de variáveis são definidas).
Agora, a saudação que você vê é outra coisa novamente. Isso é definido em /etc/motd e é exibido por meio de pam_motd . Conforme explicado em man motd :
O conteúdo de / etc / motd é exibido por pam_motd (8) após um login bem-sucedido, mas antes de executar o shell de login.
A abreviatura "motd" significa "mensagem do dia", e esta arquivo tem sido tradicionalmente usado para exatamente isso (requer muito menos espaço em disco do que o correio para todos os usuários).
No Debian GNU / Linux, o conteúdo de /run/motd.dynamic também é exibido. Este arquivo é gerado por /etc/init.d/motd na inicialização.
Para remover a mensagem, basta esvaziar o arquivo /etc/motd e certificar-se de que nada esteja sendo gerado por /etc/init.d/motd , se houver.
De qualquer forma, com base na saída exibida, parece que você está fazendo login via ssh , o que significa que você está executando um shell de login interativo , veja acima o que isso significa.
Então, em resumo, as coisas de que você gosta são originadas quando você faz login (e nesta ordem):
- O daemon SSH, através do módulo
pam_motdda biblioteca PAM, exibe o conteúdo de/etc/motd. Por meio do módulopam_env, ele define as variáveis de ambiente de/etc/environmente~/.pam_environment. - Um shell de login é iniciado e os seguintes arquivos são lidos em ordem:
-
/etc/profile -
/etc/bash.bashrc(o padrão do Ubuntu/etc/profilesources/etc/bash.bashrc). -
%código%. Os outros arquivos que poderiam ter sido lidos aqui (
~/.bash_profilee~/.profile) são ignorados porque~/.bash_loginexiste.
-