![Bash 스크립트에서 "interactive-comments" 옵션 사용](https://linux55.com/image/176717/Bash%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EC%97%90%EC%84%9C%20%22interactive-comments%22%20%EC%98%B5%EC%85%98%20%EC%82%AC%EC%9A%A9.png)
비대화형 bash 스크립트에서 주석을 끌 수 있는지 궁금합니다.
"interactive_comments" 또는 "interactive-comments"를 사용하거나 켜거나 끄는 것은 비대화형 쉘에 영향을 주지 않습니다 set
.shopt
왜 이런 일이 발생합니까? 내가 놓친 게 무엇입니까?
답변1
나는 이 (대화형 주석) 옵션을 사용하여 대화형 쉘을 얻고 싶습니다.
추측하는 대신 문서를 읽어보세요.
설정된 경우 다음으로 시작하는 단어를 허용하면
#
해당 단어와 줄의 나머지 모든 문자가 대화형 쉘에서 무시됩니다.
이 옵션을 켜도 셸이 대화형으로 만들어지지는 않습니다. 쉘이 대화형인 경우 주석을 활성화할지 여부를 제어합니다 #
. 쉘이 대화형이 아닌 경우에는 아무런 효과가 없습니다.
반품,
이 옵션은 기본적으로 활성화되어 있습니다.
따라서 켜도 아무런 효과가 없습니다.
그리고 녹음하는 방법은 shopt -s interactive_comments
켜고 shopt -u interactive_comments
끄는 방법이 있습니다. 그러나 set -o interactive-comments
and set +o interactive-comments
는 (문서화되지 않은) 대안입니다.
대화형 쉘로 시작한 경우에만 대화형 쉘을 얻을 수 있습니다. 비대화형 쉘을 대화형으로 만들 수 있는 방법은 없습니다. 쉘이 대화형인지 여부는 명령줄과 터미널에서 실행되는지 여부에 따라 다릅니다.
- options 를 사용하면
-i
bash가 대화형으로 시작됩니다. - 스크립트 파일 이름( 또는 )을
-i
사용하거나 사용 하지 않고 bash는 비대화형으로 시작됩니다.-c
bash -c 'some command'
bash path/to/script
-i
또는 스크립트 파일 이름이 없으면-c
bash는 표준 입력과 표준 오류가 모두 터미널인 경우 대화형으로 시작되고, 그렇지 않으면 비대화형으로 시작됩니다.
interactive_comments
스크립트 파일과 스크립트 내의 설명은 옵션 상태에 관계없이 -c
항상 인식됩니다 . #
주석이 단어 시작 부분에서 시작되지 않는 유일한 경우는 쉘이 대화형이고 이 interactive_comments
옵션이 꺼져 있으며 표준 입력에서 읽는 경우입니다.
이 시도 script.sh
:
# a comment
shopt interactive_comments
set +o interactive-comments
shopt interactive_comments
# another comment
실행 기록:
bash-5.0$ # a comment
bash-5.0$ shopt interactive_comments
interactive_comments on
bash-5.0$ set +o interactive-comments
bash-5.0$ shopt interactive_comments
interactive_comments off
bash-5.0$ # another comment
bash: #: command not found
bash-5.0$ exit