$ setopt interactive_comments
$ echo hello # comment
hello
Оболочка zsh
включает параметр оболочки interactive_comments
по умолчанию в сценариях, (не -интерактивных оболочках в целом ), но не при запуске интерактивного сеанса.
Соответствующий бит из руководства zsh
:
COMMENTS
In non-interactive shells, or in interactive shells with the
INTERACTIVE_COMMENTS option set, a word beginning with the third
character of the histchars parameter (`#' by default) causes that word
and all the following characters up to a newline to be ignored.
Если этот параметр оболочки не установлен, вы получите сообщение об ошибке bad pattern
, только если установлен параметр оболочки extended_glob
. С установленным extended_glob
x#
будет соответствовать нулю или более шаблону x
, а x##
будет соответствовать одному или нескольким шаблонам x
(, которые соответствуют модификаторам регулярных выражений *
и+
). Это означает, что с установленным extended_glob
и неустановленным 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