如何确定脚本内部 - 是从eshell还是从普通shell(bash等)执行的?
答案 0 :(得分:5)
Eshell不会设置任何特定的环境变量。您可以检查$TERM
:它在Eshell下设置为dumb
。
更精确的检查会查看脚本的父进程
if [ -t 1 ] && [ "$TERM" = "dumb" ] && [ "$(ps -o comm= -p $PPID)" = "emacs" ]; then
echo "This looks a lot like eshell"
fi
答案 1 :(得分:1)
我最初将此标记为How do I tell a shell that it is running from within Emacs?的副本,但我认为答案存在缺陷或过时,因为虽然它明确提及eshell
,但它似乎只适用于shell
和term
和ansi-term
。 {em}
答案 2 :(得分:0)
只需将(setenv“EMACS”“t”)添加到〜/ .emacs即可。因此,所有emacs shell中的行为都是相同的。