Editado para refletir o problema que realmente queria resolver:
Preciso configurar meu ambiente ruby para poder implantar via Capistrano.
export PATH=$HOME/.rbenv/bin:$PATH
eval "$(rbenv init -)"
Eu os coloquei em ~ deploy / .profile, mas quando ssh, eles não estão sendo executados. Ideias?
Estou executando o Ubuntu 12.04.
A pergunta original era:
Quando ssh em outra conta no localhost, ele não carrega meu .profile. Como forçar o ssh a carregá-lo? Estou executando o Ubuntu 12.04.
.profile
é carregado apenas para shells de logon, o que não é uma sessão ssh (por padrão). Se você deseja que algo seja executado na inicialização de todos os shells interativos, insira-o.bashrc
(.zshrc
ou o que seu shell usar).Além disso, se você quiser apenas fazer login em outra conta na máquina local, o ssh provavelmente será um exagero. Você pode querer usar
su
ou algo assim.fonte
.bashrc
também não está carregado.Usar o bash deve resultar em leitura
~/.bashrc
. O seguinte pode ajudar com ksh e sh (bash no modo sh) ou quando você~/.bashrc
não for executado durante o login.O sshd consulta
~/.ssh/environment
(verifique se há permissões no sshd_config (5)) e~/.ssh/sshrc
ou~/.ssh/rc
. Isto dá a possibilidade de configurarENV=~/.profile
ouBASH_ENV=~/.profile
eSSH_LOGIN=Y
No
~/.profile
eu tenho o seguinte layout (SubstituaENV
porBASH_ENV
ao usar o bash):fonte
O Bash lê
~/.profile
apenas quando é um shell de login e~/.bash.bashrc
apenas se tiver um terminal, nenhum dos quais é verdadeiro por padrão ao chamar um comando com ssh. No entanto, existem várias outras opções para definir o ambiente, no servidor, todas infelizmente dependendo da configuração do sistema:~/.zshenv
mesmo neste caso; embora não haja um arquivo de configuração correspondente para o bash.PermitUserEnvironment
opção estiver/etc/sshd_config
ativada, o ssh lerá~/.ssh/environment
. Infelizmente, esta opção é desativada.pam_env.so
for chamado comuser_readenv=1
in/etc/pam.d/sshd
, ele lerá~/.pam_environment
. Embora não seja o padrão do módulo, é chamado assim pelo menos no Ubuntu .command=
diretiva no arquivo de chaves autorizadas chamando um script de wrapper que define o ambiente e executa$SSH_ORIGINAL_COMMAND
o final (se o comando é um para shell, então eval é apropriado aqui, mas não tenho certeza) .fonte
Você provavelmente tem um
~/.bash_profile
, que substitui~/.profile
.fonte