Ok, acho que tenho uma pista do que está acontecendo.
O comportamento que você está observando em zsh e bash ao executar echo $(mc)
é causado por mc
.
Quando você executa mc
normalmente, ele não reage quando a tecla Ctrl + c é pressionada, pois ignora SIGINT
. A maneira de finalizar mc
é pressionando F10 e Enter.
Quando você executa echo $(mc)
, a entrada vai para o processo mc
, então não é de admirar que quando você pressionar Ctrl + c nada acontecerá, porque mc
ignora SIGINT
.
Mas quando você executar echo $(mc)
e pressionar F10 e Enter, ele reagirá.
(Quando eu, em seguida, pressionar F10 e Enter novamente ele realmente sai; ele deve sair na primeira tentativa, mas eu não tenho idéia do por que isso não acontece.)
A partir disso, deduzo que o Midnight Commander está funcionando normalmente, mas a saída dele é colocada no buffer do shell, para que possa ser usada mais tarde por echo
.
Algo que devemos considerar normal.
Além disso, você acha que bash e zsh estão pendurados, mas eu diria que eles não estão pendurados, mas aguardando o retorno do comando echo
.
Mas echo
só pode retornar quando mc
retorna, o que ocorre somente quando F10 e Enter são pressionados.
Com isso, também podemos explicar o que acontece quando você pressiona Ctrl + z .
Pressionando a combinação mc
vai dormir como se você tivesse corrido mc
normalmente e echo
ainda estivesse esperando o mc
dormindo.
Então tudo é comportamento normal.
Exceto pelo que o peixe faz.
peixe parece iniciar comandos executados com echo ($command)
no plano de fundo.
Isso faz sentido, já que tal comando normalmente não precisa de nenhuma entrada.
Por que e como eu não tenho resposta.
Mas você pode ver que ele é executado em segundo plano quando você entra
echo (mc)
jobs