Bash 쉘에서 set 명령의 매개변수 "i"는 무엇입니까?

Bash 쉘에서 set 명령의 매개변수 "i"는 무엇입니까?

를 입력하여 셸 내장 명령 세트를 찾았 help set으며 간단한 구문 설명이 표시되었습니다.

settings [-abefhkmnptuvxBCHP] [-o 옵션 이름] [--] [arg ...]

도움말 문서에서는 $- 변수가 set 명령을 사용하여 설정된 모든 현재 매개변수를 보유한다고 설명합니다.

따라서 echo $-쉘에 대한 모든 매개변수 설정을 표시합니다. 내 것은 다음과 같습니다.

힘BH

모든 문자는 문서와 위의 짧은 구문 설명에 언급되어 있지만 하나가 누락되었습니다.옵션. i setBash의 매개변수는 무엇을 의미하나요?

답변1

이는 i쉘이 대화형임을 의미합니다.

이것은맨페이지 섹션쉘 상호작용의 사례를 토론하십시오:

대화형 쉘은 옵션이 아닌 인수나 옵션 없이 -c시작되는 쉘 이며 표준 입력과 오류가 모두 터미널( 에 의해 결정됨 isatty(3)) 에 연결되어 있거나 -i이 옵션으로 시작된 쉘입니다. 대화형인지 여부를 PS1설정하고 $-포함하여 쉘 스크립트 또는 시작 파일이 이 상태를 테스트할 수 있도록 합니다.ibash

셸의 대화형 특성은 초기화 중에 결정되며 해당 효과는 셸 수명 동안 변경되지 않습니다. 이것이 플래그가 변경 가능한 것으로 set보고되지 않는 이유입니다 i. Bash 버전 4.3에서는 set -ior가 허용되지만set +i 내부적으로 플래그를 변경하는 것 외에는 아무런 효과가 없습니다 forced_interactive(플래그는 초기화 중에만 읽혀집니다). 버전 4.4에서는 오류 메시지가 생성됩니다. 플래그 처리에 대한 세부정보는 다음에서 볼 수 있습니다.flags.cBash 소스 코드에서.

관련 정보