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/profile
e~/.profile
nem 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_motd
da biblioteca PAM, exibe o conteúdo de/etc/motd
. Por meio do módulopam_env
, ele define as variáveis de ambiente de/etc/environment
e~/.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/profile
sources/etc/bash.bashrc
). -
%código%. Os outros arquivos que poderiam ter sido lidos aqui (
~/.bash_profile
e~/.profile
) são ignorados porque~/.bash_login
existe.
-