Я делаю то, что я всегда делаю в Bash:
set | grep -i path
и вывод
Binary file (standard input) matches
В чем дело? grep --help работает и set | more работает тоже.
Сделай это:
set > /tmp/zshset
Затем откройте /tmp/zshset в вашем любимом редакторе. Ищите IFS .
Значением по умолчанию для этого на странице руководства zshparam является пробел по умолчанию, табуляция, новая строка и NUL. Этот последний вызывает проблемы. grep видит NUL (ascii 0, часто отображается как ^@) и считает, что это двоичный файл.
Возможные решения:
grep -a как предложено KeithB (или его эквивалент --binary-files=text)grep -a чтобы сэкономить немного времени на вводеenv | grep -i path , echo $PATH) - я думаю, что другие решения прощеЯ не уверен, что происходит, но вы можете передать флаг -a в grep, чтобы заставить его воспринимать ввод как текст, независимо от того, что он думает, что это так.
Другой обходной путь, если ваш grep не реализует -a , должен сделать:
$ set | cat -v | grep foo