the echo will appear after 24 hours in the
tmuxsession's stdout
Se você se referir à sessão tmux que inicia no script, isso não é verdade. bash process executando o script esperará que tmux new-session -d bash seja encerrado, então ele executará sleep 1d e assim por diante. Observe que tmux new-session -d bash sai quase imediatamente devido a -d (o outro bash dentro da recém criada tmux sessão não sai, mas é irrelevante agora).
Altere o atraso para sleep 10 e execute o script. Espere um pouco e você verá echo -es no seu terminal atual . Em seguida, invoque tmux ls para ver que há uma nova sessão inútil deixada para trás. Você pode anexar a ele e verificar se nada foi echo -ed lá.
I can't use
sleepin my base session because it would make the session unusable
O seu script também funciona em primeiro plano. Como sobre um trabalho de fundo? Você não precisa de tmux :
(sleep 20s; echo surprise) &
Em geral, você pode escrever em outro terminal, se você tiver permissões apropriadas. O que segue é o que eu posso fazer no meu Debian. Digamos que eu queira escrever a partir da sessão B, então o texto é visível em bash session A. Primeiro eu preciso saber qual dispositivo o stdout de A realmente é:
readlink /proc/$pid_of_bash_A/fd/1
De dentro do bash A, isso é mais simples graças ao parâmetro $$ special:
readlink /proc/$$/fd/1
A saída é /dev/pts/3 no meu caso. Então na sessão B:
echo Hello World! > /dev/pts/3