에 표시된 대로 zsh
명령줄에 작성된 명령에 설명을 추가할 수 있도록 허용하는 것이 유용할 수 있지만bash
% echo test # test
zsh: bad pattern: #
쉘에서와 동일한 동작을 얻을 수 있는 방법이 있습니까 bash
?
답변1
$ setopt interactive_comments
$ echo hello # comment
hello
기본적으로 셸은 스크립트(일반적으로 비대화형 셸)에서 셸 옵션을 활성화 zsh
하지만 대화형 세션을 실행할 때는 활성화하지 않습니다.interactive_comments
매뉴얼의 관련 섹션 zsh
:
참고
비대화형 쉘 또는INTERACTIVE_COMMENTS
옵션 세트가 있는 대화형 쉘에서 histchars 인수의 세 번째 문자(기본적으로)로 시작하는 단어는#
해당 단어와 개행 문자 앞의 모든 후속 문자가 무시되도록 합니다.
bad pattern
이 쉘 옵션을 설정하지 않으면 extended_glob
쉘 옵션이 설정된 경우에만 오류가 발생합니다. extended_glob
설정 하면 x#
0개 이상의 패턴이 일치되고 x
하나 x##
이상의 패턴이 일치됩니다 x
(이는 정규식 수정자 *
및 에 해당 +
). 이는 extended_glob
set 및interactive_comments
설정되지 않음, 쉘은 사용자가 모르는 사이에 확장 파일 이름 와일드카드 패턴 수정자에서 사용하는 구문에 대해 불평합니다.
기본값은 histchars
이며 !^#
처음 두 문자는 기록 확장에 사용됩니다.
의 주석은 : zsh
로 구분되므로 $histchars[3]
이 문자를 변경하면 주석으로 간주되는 텍스트가 변경됩니다.
$ setopt extended_glob
$ echo hello # hello : hello
zsh: bad pattern: #
$ unsetopt extended_glob
$ echo hello # hello : hello
hello # hello : hello
$ setopt interactive_comments
$ echo hello # hello : hello
hello
$ histchars[3]=:
$ echo hello # hello : hello
hello # hello
흥미롭게도(?) bash
쉘에도 interactive_comments
쉘 옵션이 있지만 대화형 쉘에서는 이 옵션이 기본적으로 켜져 있습니다.
$ echo hello # hello
hello
$ shopt -u interactive_comments
$ echo hello # hello
hello # hello