Я делаю то, что я всегда делаю в 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