脚本的执行环境(eshell vs bash)

时间:2012-03-24 15:50:49

标签: emacs eshell

如何确定脚本内部 - 是从eshell还是从普通shell(bash等)执行的?

3 个答案:

答案 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,但它似乎只适用于shelltermansi-term。 {em}

答案 2 :(得分:0)

只需将(setenv“EMACS”“t”)添加到〜/ .emacs即可。因此,所有emacs shell中的行为都是相同的。