Isso parece correto se você quiser ignorar shared
na raiz da árvore de diretórios, ou seja, se você estiver ignorando um dos $base_directories
. Mas se você quisesse ignorar shared
em algum lugar mais profundo na hierarquia, você precisa de -F "(shared **shared)"
. Você também pode colocar os padrões em uma matriz, o que reduzirá as dores de citação.
local -a ignored base_directories
base_directories=(…)
ignored=(shared '*/shared')
_path_files -W base_directories -/ -F ignored
Há exemplos na distribuição padrão em _cvs
e _darcs
.
Se isso não ajudar, tente investigar o que está acontecendo adicionando set -x
e set +x
em torno do código problemático ou setopt local_options xtrace
(também conhecido como set -x
e altere as opções apenas pela duração da função atual) .