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

ego*_*or7 2 emacs eshell

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

Gil*_*il' 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
Run Code Online (Sandbox Code Playgroud)