Graças à sugestão de JohnKiller, percebi que .bashrc executa ambos quando um novo tty é aberto e quando o TMUX é aberto em um terminal.
Para futuros leitores: A variável $ TMUX é normalmente referenciada para ver se o TMUX está sendo executado, mas você também pode usar o "pidof tmux". A variável $ TMUX será preenchida com algo como: "/ tmp / tmux-0 / default, 27389,0" se o TMUX estiver sendo executado.
No meu caso particular, eu estou rodando o CentOS 6, e ele está configurado para login automático com root, já que é apenas uma imagem de teste. Eu consegui fazer isso editando o /etc/init/tty.conf:
exec /bin/mingetty --autologin root $TTY
Agora que está definido para login automático, adicionei o seguinte ao /root/.bashrc:
if [[ 'tty' == "/dev/tty1" ]] && [[ -z "$TMUX" ]];then
tmux
fi
Para iniciantes lendo isto, isso diz "Se meu terminal for terminal 1 e a variável $ TMUX for de tamanho zero, execute o tmux".
É seguido por:
if [[ -n "$TMUX" ]] && [[ ! -e "/root/.automatic_start_occurred" ]];then
touch /root/.automatic_start_occurred
/usr/bin/hello_world
fi
Novamente para iniciantes, isso diz "Se $ TMUX tiver comprimento diferente de zero, e o arquivo" .automatic_start_occurred "não existir (o"! "na instrução if), faça o arquivo" /root/.automatic_start_occurred "e então execute" hello_world "em / usr / bin.
Isso é exatamente o que eu estava procurando que meu sistema fizesse - Após a inicialização, o TTY1 irá aparecer com o TMUX, e os outros TTYs serão deixados em paz. Quando o TMUX aparece pela primeira vez, ele executa alguns comandos arbitrários e nunca os executa novamente, a menos que o arquivo ".automatic_startup_occurred" seja removido.