脚本的执行环境(eshell vs bash)
答
只需添加(SETENV “EMACS”, “T”)到〜/的.emacs的父进程。所以这个行为在所有的emacs shell中都是一样的。
+1
当然,如果意图是编写一个便携式脚本,而这个脚本恰好适用于在eshell下运行它的任何人,这将无济于事。 – phils 2012-03-28 11:17:38
答
我最初被标记将此作为How do I tell a shell that it is running from within Emacs?重复,但我认为答案有硬伤的或过时的,因为尽管它明确提到eshell
,似乎只适用于shell
和term
和ansi-term
。 eshell
必须是唯一一种你可以在Emacs中运行的shell,不会设置一个明显的环境变量?
答
Eshell没有设置任何特定的环境变量。您可以检查$TERM
:它在Eshell下设置为dumb
。
一个更精确的检查会看剧本
if [ -t 1 ] && [ "$TERM" = "dumb" ] && [ "$(ps -o comm= -p $PPID)" = "emacs" ]; then
echo "This looks a lot like eshell"
fi
可能值得为此记录一个错误报告('M-x report-emacs-bug'),因为'eshell'应该将类似的环境变量添加到可用于其他Emacs shell选项的环境变量似乎是完全合理的。 – phils 2012-03-26 00:47:35