Почему я не могу получить от setopt?

Я столкнулся с этим случайно, и это мучает меня с тех пор:

% setopt
alwaystoend
autocd
autonamedirs
...
sharehistory
shinstdin
zle
%
% setopt | grep zle
# nothing printed
%
% setopt | cat -vet
alwaystoend$
autocd$
autonamedirs$
...
sharehistory$
shinstdin$
# no zle here!

Как вы видете grep не может обнаружить zleи обрезать вывод setopt в cat для того, чтобы обнаружить какие-либо нерегулярные символы (не то, что это будет иметь больше смысла) показывает, нет zle или!

1 ответ

Решение
man zshzle
...
 If  the  ZLE option is set (which it is by default in interactive shells) and the shell input
       is attached to the terminal, the user is able to edit command lines.

Поскольку вы передаете вывод setopt процессу, оболочка отключает редактирование командной строки. (Хотя эта строка документации относится только к входу оболочки, подключенному к терминалу, это отражает суть проблемы. Ничего странного в этом нет, просто оболочка отключает эту опцию.

Другие вопросы по тегам