Para entender o que está acontecendo aqui, você precisa entender um pouco das informações básicas sobre como as shells (bash, neste caso) são executadas.
-
Quando você abre um emulador de terminal (
gnome-terminal
, por exemplo), está executando o que é conhecido como um shell interativo, sem login . -
Quando você faz login na sua máquina a partir da linha de comando, via
ssh
, ou executa um comando comosu - username
, você está executando um shell login interativo . -
Quando você faz login graficamente, está executando algo completamente diferente, os detalhes dependerão do sistema e do ambiente gráfico, mas, em geral, é o shell gráfico que lida com seu login. Enquanto muitos shells gráficos (incluindo o padrão do Ubuntu) vão ler
/etc/profile
nem todos eles fazem. -
Finalmente, quando você executa um shell script, ele é executado em um shell não-interativo, não-login .
Agora, os arquivos que o bash lerá quando lançado dependerão do tipo de shell em que ele está sendo executado. A seguir, um trecho da seção INVOCATION de man bash
(ênfase minha):
When bash is invoked as an interactive login shell, or as a non-interactive shell with the --login option, it first reads and executes commands from the file /etc/profile, if that file exists. After reading that file, it looks for ~/.bash_profile, ~/.bash_login, and ~/.profile, in that order, and reads and executes commands from the first one that exists and is readable. The --noprofile option may be used when the shell is started to inhibit this behavior.
When an interactive shell that is not a login shell is started, bash reads and executes commands from /etc/bash.bashrc and ~/.bashrc, if these files exist. This may be inhibited by using the --norc option. The --rcfile file option will force bash to read and execute commands from file instead of /etc/bash.bashrc and ~/.bashrc.
O que tudo isso significa é que você está editando o arquivo errado. Você pode testar isso largando para um console virtual usando Ctrl + Alt + F2 (retorne à GUI com Alt + F7 , ou F8 dependendo da sua configuração) e logando lá. Você verá que seu prompt e aliases estão disponíveis.
Portanto, para que a configuração desejada seja aplicada a shells que não são de login, o tipo que você recebe toda vez que abrir um terminal, você deve fazer as alterações em ~/.bashrc
. Alternativamente, você também pode colocar seus aliases no arquivo ~/.bash_aliases
(no entanto, note que este é um recurso do Ubuntu e você não deve esperar que ele funcione em outras distribuições).
Para mais detalhes sobre qual arquivo deve ser usado para o quê, veja aqui .
NOTAS:
-
O Debian (e por extensão o Ubuntu) também tem o padrão
~/.profile
source~/.bashrc
. Isto significa que quaisquer mudanças que você fizer em~/.bashrc
também serão herdadas por shells de login, mas i) este não é o caso em todas as máquinas Linux / Unix e ii) o inverso não é verdade, razão pela qual você deve sempre trabalhar com~/.bashrc
& co em vez de~/.profile
ou/etc/profile
. -
Além disso, uma observação geral sobre o uso, as alterações feitas nos arquivos de configuração em
/etc
afetarão todos usuários. Isso geralmente não é o que você quer fazer e deve ser evitado. Você deve sempre usar os arquivos equivalentes em seu diretório pessoal (~/
). -
Os vários arquivos de configuração são lidos sequencialmente. Especificamente, para shells de login, a ordem é:
/etc/profile -> /etc/profile.d/* (in alphabetical order) -> ~/.profile
Isso significa que qualquer configuração em
~/.profile
sobrescreverá qualquer coisa definida nos arquivos anteriores.