O typeset -U dirstack
simples falha, pois dirstack
é sem dúvida muito especial para a limitação exclusiva usual (esse typeset
é útil para coisas como a matriz path
). Em uma inspeção mais próxima, o código do Arch Wiki sofre de unicidade incompleta, em que somente dirstack
somente quando está sendo escrito é feito único, e não com PWD
, nem quando lendo o arquivo. Então se PWD
contém algo também em dirstack
, duplicatas serão criadas e depois lidas. Assim, a correção mais rápida é aplicar a expansão exclusiva na leitura:
dirstack=( ${(uf)"$(< $DIRSTACKFILE)"} )
E talvez também para a gravação de arquivos, o que é mais complicado, já que precisa de um dirstack
minus exclusivo, o que quer que esteja em PWD
plus PWD
.
print -l $PWD ${(u)${dirstack:#$PWD}} >$DIRSTACKFILE