Eshell不设置任何特定的环境变量。您可以检查
如何在脚本内部确定它是从eshell还是从普通shell(bash等)执行的?
$TERM
:在Eshell下设置为dumb
。
更精确的检查将查看脚本的父进程
if [ -t 1 ] && [ "$TERM" = "dumb" ] && [ "$(ps -o comm= -p $PPID)" = "emacs" ]; then
echo "This looks a lot like eshell"
fi
我最初将其标记为How do I tell a shell that it are running from in Emacs?的副本?,但我认为那里的答案是有缺陷或过时的,因为尽管它明确提到了eshell
,但它似乎只适用于shell
、term
和ansi-term
。eshell
必须是您可以在Emacs中运行的唯一一种不设置明显环境变量的shell?
只需将(setenv"EMACS"t")添加到~/.EMACS。因此,所有EMACS shell中的行为都是相同的。