Iniciar qualquer coisa de .zshenv
é definitivamente a abordagem errada. Este arquivo é executado por todas as instâncias de zsh
, mesmo ao executar um script. Use .zshrc
para coisas que devem ser feitas em shells interativos e .profile
(ou .zprofile
, se você tiver definido zsh como seu shell de login) para coisas que devem ser feitas quando você efetuar login.
Se você quiser o tmux em todos os terminais, inicie o tmux diretamente sob o terminal, por exemplo, gnome-terminal -e tmux
(altere seu ativador GUI para passar esses argumentos). Você pode passar argumentos mesmo com -e
(embora tenha cuidado ao citar), por exemplo gnome-termminal -e 'tmux -s ~/.alternate.tmux.conf'
.
Se você também quiser iniciar o tmux ao efetuar login no ssh, será necessário iniciá-lo a partir do ~/.profile
. Faça isso apenas se o processo pai do shell de login for sshd
:
parent_process_name=$(ps -o comm= -p $PPID')
case ${parent_process_name##*/} in
sshd) type tmux >/dev/null 2>/dev/null && exec tmux;;
esac
Outra abordagem para iniciar o tmux sobre o ssh seria obter um nome de sessão do ambiente. Dessa forma você pode anexar a uma sessão existente. A maneira mais fácil é escrever um pequeno script no lado do servidor, por ex. ~/bin/tmux-login-session
:
#!/bin/sh
if tmux has-session -t "$1"; then
exec tmux attach-session -t "$1"
else
. ~/.profile
exec tmux new-session -s "$1"
fi
Em seguida, use um comando ssh como o seguinte:
ssh -t hostname.example.com bin/tmux-login-session SESSION_NAME