スクリプトの内部を判断する方法-スクリプトがeshellから実行されたのか、通常のシェル(bashなど)から実行されたのか?
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で実行できる唯一の種類のシェルでなければなりませんか?shell
term
ansi-term
eshell
于 2012-03-24T23:34:31.223 に答える
0
〜/ .emacsに(setenv "EMACS" "t")を追加するだけです。したがって、動作はすべてのemacsシェルで同じになります。
于 2012-03-26T12:50:01.283 に答える