Você pode usar ps -o comm= -p $PPID (obter o nome do comando para o processo pai) para ver qual programa invocou zsh.
Você também pode verificar a variável de ambiente TERM , mas muitos emuladores de terminal apenas configuram para xterm porque são compatíveis com o xterm. O que os terminais integrados do IDE definem TERM depende de quão funcional seu terminal é. Por exemplo, o Emacs usa TERM=dumb em M-x shell (linha de comando simples, onde o Emacs mantém o controle dos recursos da edição), mas TERM=eterm-color em M-x term (um emulador de terminal completo).
Alguns aplicativos definem variáveis de ambiente, por exemplo como observado por muru Iterm define ITERM_PROFILE . Tenha em atenção que, se lançar um emulador de terminal diferente a partir de uma shell, a shell no segundo emulador herda das variáveis da primeira. Portanto, você pode querer definir $ITERM_PROFILE apenas após verificar se o processo pai é Iterm.
Uma abordagem alternativa ou complementar é permitir que o programa de chamada faça o trabalho. Zsh lê seus arquivos de configuração a partir do diretório $ZDOTDIR , retornando ao seu diretório pessoal se ZDOTDIR não estiver definido. Você pode carregar, e. $HOME/.zshrc de um .zshrc em um diretório diferente, se você quiser aplicar as configurações padrão com algumas modificações.