O comportamento que você descreve é o esperado. As variáveis de ambiente são definidas em .profile , que é lido quando você efetua login. Iniciar uma nova sessão do tmux não faz o seu login. O Tmux inicia um shell de login por padrão, mas você desativou isso na configuração, portanto, As janelas tmux apenas herdam o ambiente externo.
Se você colocar source .profile no seu .zshrc , isso substituirá qualquer ambiente em que o shell estiver sendo executado. Isso significa que você não pode executar um shell em um ambiente diferente do padrão, por exemplo, para tentar algo com um diferente PATH .
Basta remover source .profile de .zshrc . Você terá seu ambiente padrão, definido no tempo de login, em todos os shells.
Se o seu shell de login for zsh, observe que ele lê .zprofile no tempo de login, não .profile . Isso é diferente do bash, que lê .profile se não houver .bash_profile . O Zsh funciona de maneira diferente porque sua sintaxe é diferente de sh, portanto, ele não pode ler .profile diretamente. Se você quiser ter um .profile que trabalhe sob sh para logins GUI e também usar o mesmo arquivo para logins em modo texto, e você tiver zsh configurado como seu shell de login, use a seguinte linha como seu ~/.zprofile :
emulate sh -c 'source ~/.profile'
Se o tmux estiver configurado para executar um shell de login, todas as janelas do tmux substituirão o ambiente ao redor, em vez de herdá-lo. Isto significa que se você definir novas variáveis fora do tmux, você ainda as terá na sessão do tmux, mas se você alterar os valores das variáveis que já estão definidas então suas mudanças serão perdidas dentro do tmux. Tudo somado, o comportamento padrão do tmux não faz muito sentido. Evitar isso é o ponto da linha set-option -g default-command $SHELL em ~/.tmux.conf .
Se você usa o tmux como uma maneira de fazer um “login fresco”, você pode preferir que cada janela seja executada em um ambiente novo. Se assim for, então provavelmente você deve limpar seu ambiente com algo como
set-option -g default-command env -i USER="$USER" LOGNAME="$LOGNAME" $SHELL
E lembre-se de que, se o seu shell de login for zsh, ele lerá .zprofile , não .profile .