Различный синтаксис
Поскольку eshell
позволяет смешивать код elisp
с командами оболочки, он имеет довольно необычный синтаксис, с которым вам нужно быть осторожным.
OneОстерегайтесь синтаксиса расширения команд: zsh
использует синтаксис
file $(which foo)
, но в eshell
это означает в основном то же самое, что и
file (which foo)
, что означаетвыполнить команду file
в результате вычисления выражения elisp (which foo)
, что обычно приводит к ошибке, подобной этой:
Symbol's function definition is void: which
Оказывается, что способ написать это в eshell на самом деле
file ${which foo}
Переносимость
Поскольку eshell
написан на независящем от платформы Emacs Lisp-коде, он работает по существу в Windows Emacsen, как и в * nix, верноиз коробки (хотя, конечно, вы, вероятно, захотите coreutils
и тому подобное);заставить shell-mode
работать с * nix-оболочкой там, по-видимому, по крайней мере, немного сложнее.
Я думаю, что я видел некоторую неожиданность с завершением абсолютных путей, хотя из-за двоеточия после буквы диска, ноэто не совсем шоу-стоппер ...