3

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

4

3 回答 3

5

Eshell 没有设置任何特定的环境变量。您可以检查$TERM:它设置为dumb在 Eshell 下。

更精确的检查将查看脚本的父进程

if [ -t 1 ] && [ "$TERM" = "dumb" ] && [ "$(ps -o comm= -p $PPID)" = "emacs" ]; then
  echo "This looks a lot like eshell"
fi
于 2012-03-25T23:31:15.330 回答
1

我最初将其标记为如何告诉 shell 它是从 Emacs 中运行的副本?,但我认为那里的答案有缺陷或过时,因为虽然它明确提到eshell,但它似乎只适用于shellandtermansi-termeshell必须是您可以在 Emacs 中运行的唯一一种设置明显环境变量的 shell?

于 2012-03-24T23:34:31.223 回答
0

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

于 2012-03-26T12:50:01.283 回答