Среда выполнения скрипта (eshell vs bash) - PullRequest
2 голосов
/ 24 марта 2012

Как определить внутри скрипта - был ли он выполнен из eshell или из обычной оболочки (bash и т. Д.)?

Ответы [ 3 ]

5 голосов
/ 26 марта 2012

Eshell не устанавливает никаких переменных среды.Вы можете проверить $TERM: он установлен на dumb в Eshell.

Более точная проверка будет смотреть на родительский процесс скрипта

if [ -t 1 ] && [ "$TERM" = "dumb" ] && [ "$(ps -o comm= -p $PPID)" = "emacs" ]; then
  echo "This looks a lot like eshell"
fi
1 голос
/ 25 марта 2012

Я изначально пометил это как дубликат Как мне сказать оболочке, что она запускается из Emacs? , но я думаю, что ответ там некорректен или устарел, как будто явно упоминает eshell, кажется, это применимо только к shell и term и ansi-term. eshell должен быть единственным видом оболочки, который вы можете запустить в Emacs, который не устанавливает очевидную переменную окружения?

0 голосов
/ 26 марта 2012

Просто добавьте (setenv "EMACS" "t") в ~ / .emacs. Таким образом, поведение будет одинаковым во всех оболочках Emacs.

...