![소스 스크립트에서 현재 쉘의 절대 경로를 얻는 방법은 무엇입니까? [복사]](https://linux55.com/image/86649/%EC%86%8C%EC%8A%A4%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%ED%98%84%EC%9E%AC%20%EC%89%98%EC%9D%98%20%EC%A0%88%EB%8C%80%20%EA%B2%BD%EB%A1%9C%EB%A5%BC%20%EC%96%BB%EB%8A%94%20%EB%B0%A9%EB%B2%95%EC%9D%80%20%EB%AC%B4%EC%97%87%EC%9E%85%EB%8B%88%EA%B9%8C%3F%20%5B%EB%B3%B5%EC%82%AC%5D.png)
어떤
. 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에서는 작동합니다.