The following currently fails in Eshell: $ sudo bzgrep # Or any shell script in PATH /bin/sh: /sudo:root@localhost:/usr/bin/bzgrep: No such file or directory This is apparently so because eshell/sudo translates that to a Tramp remote location, but eshell-external-command fails to handle it as a remote command. It instead passes the default-directory containing Tramp syntax directly to the command (shell script), which obviously fails as it doesn't understand Tramp syntax. The patch below fixes this issue. (Was there any specific reason for earlier only considering "ftp" being remote, instead of all Tramp methods?) --- esh-ext.el.orig 2011-02-18 20:57:50.000000000 +0200 +++ esh-ext.el 2011-02-18 20:58:12.000000000 +0200 @@ -203,7 +203,7 @@ (defun eshell-external-command (command args) "Insert output from an external COMMAND, using ARGS." (setq args (eshell-stringify-list (eshell-flatten-list args))) - (if (string-equal (file-remote-p default-directory 'method) "ftp") + (if (file-remote-p default-directory) (eshell-remote-command command args)) (let ((interp (eshell-find-interpreter command))) (assert interp)