3

スクリプトの内部を判断する方法-スクリプトがeshellから実行されたのか、通常のシェル(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

私は最初にこれを複製としてマークしました。Emacs内から実行されていることをシェルに伝えるにはどうすればよいですか?、しかし、そこにある答えには欠陥があるか時代遅れだと思います。明示的に言及されていますが、それはandとeshellにのみ当てはまるようです。明らかな環境変数を設定しないEmacsで実行できる唯一の種類のシェルでなければなりませんか?shelltermansi-termeshell

于 2012-03-24T23:34:31.223 に答える
0

〜/ .emacsに(setenv "EMACS" "t")を追加するだけです。したがって、動作はすべてのemacsシェルで同じになります。

于 2012-03-26T12:50:01.283 に答える