Quando você executa ssh example.com
, o daemon ssh inicia um shell de login e o shell de login lê seu ~/.profile
(ou ~/.bash_profile
ou ~/.zprofile
ou ~/.login
dependendo do seu shell de login). Quando você especifica um comando para ser executado remotamente (com ou sem -t
), o daemon ssh inicia um shell comum, portanto, seu .profile
não é lido. Solução:
ssh example.com -t '. /etc/profile; . ~/.profile; tmux attach'
A maioria dos daemons ssh são configurados para recusar variáveis de ambiente de transmissão, exceto LC_*
. Se o daemon ssh em example.com
permitir, você pode abusar de uma variável LC_*
personalizada para iniciar o tmux automaticamente - coloque isso em seu ~/.profile
:
if [ -n "$LC_tmux_session" ] && tmux has -t "$LC_tmux_session"; then
exec tmux attach -t "$LC_tmux_session"
elif [ -n "${LC_tmux_session+1}" ] && tmux has; then
exec tmux attach
fi
faça o login com LC_tmux_session= ssh example.com
ou LC_tmux_session=session_name ssh example.com
.
Esta resposta tem mais informações sobre passar variáveis de ambiente em ssh.