如何确定脚本内部 - 它是从 eshell 还是从普通 shell(bash 等)执行的?
问问题
335 次
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
,但它似乎只适用于shell
andterm
和ansi-term
。eshell
必须是您可以在 Emacs 中运行的唯一一种不设置明显环境变量的 shell?
于 2012-03-24T23:34:31.223 回答
0
只需将 (setenv "EMACS" "t") 添加到 ~/.emacs。因此,所有 emacs shell 中的行为都是相同的。
于 2012-03-26T12:50:01.283 回答