Isso está acontecendo porque quando você faz o login via SSH, o shell que você obtém é um login shell . Em contraste, para usar a terminologia da documentação bash
, quando você abre uma janela do Terminal em uma sessão de login gráfica já iniciada, o shell que você obtém ainda é um shell interativo , mas é não é um shell de login .
Em man bash
:
Quando bash é chamado como um shell de login interativo ou como shell não interativo com a opção - login , ele primeiro lê e executa comandos do arquivo
/etc/profile
, se esse arquivo existir. Depois de ler esse arquivo, ele procura~/.bash_profile
,~/.bash_login
e~/.profile
, nessa ordem, e lê e executa comandos do primeiro que existe e é legível. o A opção - noprofile pode ser usada quando o shell é iniciado para inibir esse comportamento.Quando um shell de login sai, o bash lê e executa comandos do arquivo
~/.bash_logout
, se existir.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 existirem. Isso pode ser inibido usando o Opção - norc . A opção - rcfile arquivo forçará o bash a ler e executar comandos do arquivo em vez de/etc/bash.bashrc
e~/.bashrc
.
Então você deve verificar se tem algum desses arquivos:
-
~/.bash_profile
-
~/.bash_login
-
~/.profile
Se fizer isso, edite o primeiro que encontrar e adicione $HOME/bin
ao seu caminho. Se você não fizer isso, crie um deles para essa finalidade. (O melhor para criar é ~/.profile
, já que outros shells usarão isso também.)
Você quase certamente tem ~/.profile
, já que o comportamento padrão do Ubuntu é criar isso com qualquer nova conta de usuário (incluindo a primeira conta, criada quando você instala o Ubuntu).
No entanto, por padrão, esse arquivo já contém as linhas necessárias para adicionar seu diretório bin
privado ao $PATH
:
# set PATH so it includes user's private bin if it exists
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Então, é um pouco estranho que isso não esteja funcionando para você.
Dependendo de suas necessidades, convém fazer ~/.profile
(ou ~/.bash_login
ou ~/.bash_profile
) chamar ~/.bashrc
:
source ~/.bashrc
Mas seria ainda melhor incluir apenas linhas adicionando $HOME/bin
ao seu $PATH
em ~/.profile
(ou ~/.bash_login
ou ~/.bash_profile
), mas não ~/.bashrc
. Afinal, se você fizer isso para cada shell de login, isso também deve acontecer quando você fizer login graficamente e for herdado por todos os seus shells interativos que não são shells de login.