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