Não acho que a expansão do histórico seja feita após a expansão dos aliases. Por isso, é necessário usar history -p
para fazer isso explicitamente:
alias e='eval "$(history -p !em)"'
Embora isso não funcione neste caso, uma vez que os aliases não são expandidos após a substituição do comando. Mas as funções funcionam, então esses dois devem fazer isso:
em() { emacs -nw "$@"; }
e() { eval "$(history -p !em)"; }
O último pode ser um alias.