를 입력하여 셸 내장 명령 세트를 찾았 help set
으며 간단한 구문 설명이 표시되었습니다.
settings [-abefhkmnptuvxBCHP] [-o 옵션 이름] [--] [arg ...]
도움말 문서에서는 $- 변수가 set 명령을 사용하여 설정된 모든 현재 매개변수를 보유한다고 설명합니다.
따라서 echo $-
쉘에 대한 모든 매개변수 설정을 표시합니다. 내 것은 다음과 같습니다.
힘BH
모든 문자는 문서와 위의 짧은 구문 설명에 언급되어 있지만 하나가 누락되었습니다.나옵션. i
set
Bash의 매개변수는 무엇을 의미하나요?
답변1
이는 i
쉘이 대화형임을 의미합니다.
이것은맨페이지 섹션쉘 상호작용의 사례를 토론하십시오:
대화형 쉘은 옵션이 아닌 인수나 옵션 없이
-c
시작되는 쉘 이며 표준 입력과 오류가 모두 터미널( 에 의해 결정됨isatty(3)
) 에 연결되어 있거나-i
이 옵션으로 시작된 쉘입니다. 대화형인지 여부를PS1
설정하고$-
포함하여 쉘 스크립트 또는 시작 파일이 이 상태를 테스트할 수 있도록 합니다.i
bash
셸의 대화형 특성은 초기화 중에 결정되며 해당 효과는 셸 수명 동안 변경되지 않습니다. 이것이 플래그가 변경 가능한 것으로 set
보고되지 않는 이유입니다 i
. Bash 버전 4.3에서는 set -i
or가 허용되지만set +i
내부적으로 플래그를 변경하는 것 외에는 아무런 효과가 없습니다 forced_interactive
(플래그는 초기화 중에만 읽혀집니다). 버전 4.4에서는 오류 메시지가 생성됩니다. 플래그 처리에 대한 세부정보는 다음에서 볼 수 있습니다.flags.c
Bash 소스 코드에서.