Почему я не могу получить от 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 процессу, оболочка отключает редактирование командной строки. (Хотя эта строка документации относится только к входу оболочки, подключенному к терминалу, это отражает суть проблемы. Ничего странного в этом нет, просто оболочка отключает эту опцию.