쉘 스크립트에서 명령 인터프리터를 감지하는 방법은 무엇입니까? [복사]

쉘 스크립트에서 명령 인터프리터를 감지하는 방법은 무엇입니까? [복사]

중복 가능성:
터미널에서 사용 중인 셸을 어떻게 테스트하나요?

쉘 스크립트가 어떤 인터프리터를 사용하고 있는지 감지하고 싶습니다. 예를 들어 다음 스크립트는 다음과 같습니다.

#!/bin/bash

issue_interpreter_name()

통역사에게 다음 사항을 공개해야 합니다.

bash

답변1

#!/bin/sh  
ps h -p $$ -o args='' | cut -f1 -d' '
  • ps프로세스 목록
  • h열 헤더를 인쇄하지 않음
  • -p <PID>프로세스 ID PID만 나열
  • $$현재 PID를 사용하는 쉘로 대체됨
  • -o args다른 정보 없이 명령줄 인쇄
  • cut출력을 여러 부분으로 분할
  • -f1첫 번째 필드만 인쇄
  • -d' '공백을 필드 구분 기호로 사용

    $ ./testje

    /bin/sh

답변2

로컬 사용자인 경우 /etc/passwd의 7번째 필드가 쉘입니다. 현재 사용 가능한 쉘을 찾고 계십니까?

관련 정보