Você está igualando as configurações locais às configurações remotas .
Localmente, uma instância do bash, o shell em execução no qual você escreve:
ssh user@host command
Vai executar o comando ssh (nada mais) como um cliente ssh.
Para fazer isso, o shell local precisa não para iniciar um sub-shell ou um novo shell ou login.
O comando é executado como um comando ls
é: localmente.
É o comando ssh do cliente que abre uma conexão de rede para um sistema remoto , onde, se autenticado corretamente, um shell novo será iniciado para executar o comando escrito como um argumento para ssh, ou, se nenhum argumento for fornecido, espere mais comandos nessa conexão.
Esse novo shell Remoto necessariamente será um shell de login, pois o usuário remoto (para esse sistema) precisa ser autenticado para efetuar login. Ou, se algum comando específico for fornecido, basta executar esse comando com os privilégios de usuário autenticados.
Você pode ver quais arquivos são originados adicionando um $file sourced
ao início de cada arquivo (no sistema remoto ) (o root é necessário para alterar os arquivos /etc/
):
$ a=(~/.bashrc ~/.profile /etc/bash.bashrc /etc/profile)
$ for f in "${a[@]}"; do sed -i '1 i\echo "'"$f"' was read"\n' "$f"; done
E depois é só iniciar um console do ssh:
$ ssh sorontar@localhost
/etc/profile was read
/etc/bash.bashrc was read
/home/sorontar/.profile was read
/home/sorontar/.bashrc was read
Nesse caso, os dois arquivos bashrc
foram lidos porque cada arquivo profile
tinha comandos para incluí-los, não porque o shell de login os originasse diretamente.
$ ssh sorontar@localhost :
/etc/bash.bashrc was read
/home/sorontar/.bashrc was read
Neste sistema, onde bashrc
é lido em ambos os casos.
Não é necessário adicionar source ~/.bashrc
ao comando para executar.
Alterar o PATH
Tudo o que você precisa fazer é incluir as configurações corretas para alterar o "$ PATH", seja em /etc/bash.bashrc
para todos os usuários que iniciam um shell neste sistema. Ou em ~/.bashrc
para cada usuário que precisar. Você pode adicionar (ou editar) um esqueleto de um usuário .bashrc
to /etc/skel/
para que qualquer novo usuário criado tenha o arquivo correto disponível.
O acima é válido apenas para bash. Se você precisar que a configuração funcione para todos os shells, provavelmente configurando a variável de ambiente PATH usando o arquivo ssh ~/.ssh/environment
para cada usuário que precisar. Ou use /etc/ssh/sshrc
para uma configuração global no sistema em que o servidor ssh está em execução (por favor, leia a seção Arquivos em man sshd
para mais detalhes).