소스 스크립트에서 현재 쉘의 절대 경로를 얻는 방법은 무엇입니까? [복사]

소스 스크립트에서 현재 쉘의 절대 경로를 얻는 방법은 무엇입니까? [복사]

어떤

. some_script

또는

source some_script

some_script절대 경로를 결정하는 방법현재의.쉘(즉, 또는 명령을 실행하는 쉘 source)? (일반적으로 이 경로는 의 값과 다릅니다 $SHELL.)

즉, 내가 찾고 있는 "절대 경로" 대응물입니다 $$. 현재 쉘 프로세스가 실행 파일의 소스를 알아야 한다고 생각했는데 AFAICT, 환경 변수에 저장되어 있지 않습니다.

내가 생각할 수 있는 최선의 방법은 ps -p $$생성된 출력의 적절한 변형을 잡는 것입니다. 예를 들어:

CURRENT_SHELL=${"$( PS_FORMAT=cmd PS_PERSONALITY=linux ps -p $$ -h )"% *}

이것은 이식성이 좋지 않을 수 있습니다. (그리고 그것은 추악하다.)


나는 현재 쉘이 무엇인지에 주로 관심이 있습니다 zsh. (해당 답변에 이차적 관심이 있습니다 bash.)

답변1

이것이 내가 사용하는 것입니다:

head -n 1 /proc/$$/status | cut -f2

모든 Unices에 이식 가능한지는 잘 모르겠지만 Linux와 Cygwin에서는 작동합니다.

관련 정보