A opção -e
é um mecanismo de compatibilidade no terminal simples . O comando e os argumentos que você passa, com ou sem -e
, são executados diretamente, por simples bifurcação de terminal e, em seguida, executando execvp()
no processo filho exatamente no comando e nos argumentos que ele recebe. Não há shell envolvido e os argumentos passados para st
são enviados exatamente como estão para o programa de destino.
Você passou tudo como um único argumento. Portanto, o terminal simples está realmente tentando executar um comando chamado, literalmente, trans $(xclip -o) -t en; read
(se estiver entre aspas simples ou modificado por qualquer que seja o resultado da expansão, se você usar aspas duplas). Obviamente, você não tem nenhum comando chamado assim.
Para usar uma linha de comando do shell - como você tem aqui com expansões, comandos internos do shell e sintaxe de comando do shell - você precisa invocar explicitamente um shell para compreendê-lo:
st -e sh -c 'trans "$(xclip -o)" -t en; read'
Isso executa st
, que inicia um shell sh
que executa um script de shell curto, que contém seus comandos.