Você entendeu errado como open
funciona: Com seu comando open /Application/Emacs.app foo.txt
você diz open
para abrir dois arquivos, o Emacs e o arquivo txt, mas estas são duas operações diferentes: Primeiro, o emacs será iniciado e depois foo.txt
será carregado com o programa padrão para .txt
files, que aparentemente é o Emacs no seu caso.
Contanto que o Emacs seja o padrão para este tipo de arquivo, usar open foo.txt
abriria o arquivo no Emacs, mas se não fosse o padrão, você teria que usar open foo.txt -a /Applications/Emacs.app
(a opção -a
diz abra o aplicativo a ser usado) ou talvez você possa entregá-lo como um parâmetro com a opção --args
desta forma: open /Applications/Emacs.app --args foo.txt
.