Se você realmente precisa usar o tmux, e seus comandos não são interativos, então você pode adicionar um segundo comando ao primeiro comando que sinaliza de alguma forma que o primeiro comando foi concluído. Uma maneira simples de fazer isso usando um comando interno do tmux é wait-for
com a opção -L channel
para bloquear e -U channel
para desbloquear. Você pode ter muitos canais arbitrários. Quando você bloquear um canal, outras tentativas de bloqueio serão bloqueadas até um desbloqueio.
Veja um exemplo:
tmux wait-for -L my1\; \
send-keys 'sleep 5' Enter 'tmux wait-for -U my1' Enter\; \
wait-for -L my1
Isso trava o canal my1
, envia o comando sleep 5
para o shell, imediatamente seguido pelo comando tmux wait-for
unlock shell, então tenta obter o bloqueio novamente, então ele bloqueia.
Após 5 segundos, o sono termina, o shell executa o destravamento do tmux, e agora o bloqueio pode ser feito, e somente então o comando tmux acima retorna.
Para voltar ao normal, um wait-for -U
deve ser feito, talvez pela emissão de outro comando send-keys ... wait-for -U ...
combinado como acima.