Если дочерние сценарии перенаправляют в файл без , в то же время выводя свои стандартные потоки вывода / потоки ошибок, вы действительно не можете сделать это гибко. Канонический способ сделать это - гарантировать, что скрипты направляют свой вывод в tee
, чтобы он также мог быть захвачен родительским скриптом.
Вероятно, это комбинация параметров AUTO_NAME_DIRS
и CDABLE_VARS
, описанных в zshoptions(1)
.
% PS1='%# ' zsh -f
% setopt AUTO_NAME_DIRS
% setopt CDABLE_VARS
% autoload -U compinit
% compinit
% cd a # was mashing tab here to no avail (nor asdf)
cd: no such file or directory: a
% hash -d asdf=/etc
% cd asdf/ # "cd a" now tab completes
(Это было обнаружено путем поиска zshoptions
связанных строк "dir" и "cd".)
Чтобы отключить это, отключите одну или несколько из этих опций(unsetopt
)или удалите переменную (s ), которую находит код завершения.
В итоге я просмотрел .zhistory
и удалил все ссылки на lightdm
, это решило проблему для меня. Возможно, есть и другие места, где zsh хранит дополнения, но я не знаю, что это такое.
Как уже упомянул в своем ответе пользователь thrig
, это было вызвано установкой опции CDABLE_VARS
.
У меня была аналогичная проблема, и я решил ее, добавив
unsetopt CDABLE_VARS
строка к моему.zshrc