Как отладить это неправильное назначение переменных в zsh?

Con Perl:

perl -lne 'print for /{(.*?)}/g' file
port1 dev1 M1 s
port1 dev1 M1 s
port3 dev2 M1 g
port1 dev1 M1 d
port1 dev1 M3 g

O usando sed:

sed 's/{\([^}]*\)} */\1\n/; P;D' file
port1 dev1 M1 s
port1 dev1 M1 s
port3 dev2 M1 g
port1 dev1 M1 d
port1 dev1 M3 g
...
1
06.08.2019, 17:44
1 ответ

Zsh запускает некоторый код до и после каждой команды. Это обычно используется для обновления подсказки и заголовка терминала. Вполне вероятно, что часть этого кода ошибочна и изменяет переменную a(, если это происходит только с a), или иногда оценивает часть командной строки, когда этого не следует (, если это происходит с каждым именем переменной ). ].

Проверьте свои функции ловушки и отладочную ловушку:

which precmd
which preexec
which zshaddhistory
print -l $precmd_functions
print -l $preexec_functions
print -l $zshaddhistory_functions
which TRAPDEBUG
trap | grep DEBUG

Еще один способ получить представление о том, что происходит, — включить трассировку .

~ mary@advv
$ set -x
+ …
~ mary@advv
$ a=good
+ …
~ mary@advv
$ echo "$a"
evil

Код, который появляется вместо , — это хуки, о которых я упоминал выше, и какая-то их часть должна быть виновником.

Один из экспериментов, который может сузить круг,:

~ mary@advv
$ a=good; echo "$a"
1
27.01.2020, 23:41

Теги

Похожие вопросы