2012-03-24 5 views
2

스크립트 내부에서의 결정 방법 - eshell 또는 일반 쉘 (bash 등)에서 실행되었는지 여부?스크립트의 실행 환경 (eshell vs bash)

+0

다른 이맥스 셸 옵션에서 사용할 수있는 환경 변수와 비슷한 환경 변수를 eshell이 ​​추가해야한다는 것이 합당한 것처럼 보일 수 있으므로이 보고서 ('M-x report-emacs-bug')에 대한 버그 보고서를 로깅 할 가치가 있습니다. – phils

답변

0

단순히 ~/이맥스에 (에서는 setenv "EMACS", "t")를 추가 스크립트의 부모 프로세스에 보일 것이다. 그래서이 행동은 모든 이맥 껍질에서 동일합니다.

+1

물론 eshell에서 실행하는 사람을 위해 잘 작동하는 휴대용 스크립트를 작성하려는 경우이 방법은 도움이되지 않습니다. – phils

1

나는 처음 How do I tell a shell that it is running from within Emacs?의 중복으로이 표시,하지만 난 그것을 명시 적으로 eshell을 언급하지만, 단지 shelltermansi-term에 적용 할 것 같은 대답은, 결함 또는 오래된 있다고 생각합니다. eshell이 이맥스에서 실행할 수있는 유일한 종류의 쉘이어야합니다.은 명백한 환경 변수를 설정합니까?

+0

맞음 - 그 질문에 대한 대답은 여기에 적합하지 않습니다 : 두 경우 모두'echo $ EMACS'는 emacs와 bash 등을위한 eshell에는 아무 것도주지 않습니다. 그래서이 질문에 'duplicate'라고 표시하지 마십시오. – egor7

+0

투표를 삭제할 수는 없지만 질문을 복제본으로 닫는 데 여러 표가 필요하므로 걱정할 필요가 없습니다. – phils

5

Eshell은 특정 환경 변수를 설정하지 않습니다. $TERM을 확인할 수 있습니다 : Eshell에서 dumb으로 설정되어 있습니다.

보다 정확한 검사가

if [ -t 1 ] && [ "$TERM" = "dumb" ] && [ "$(ps -o comm= -p $PPID)" = "emacs" ]; then 
    echo "This looks a lot like eshell" 
fi