This has come up in the past, and was somewhat resolved (< http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00097.html>), but bash's behaviour is still a but surprising IMHO. While globstar doesn't descend further into symlinks, symlinked directories are selected as a candidate for matches to ** itself. But zsh doesn't do this:
$ bash -c '(d=$(mktemp -d); cd "$d"; mkdir a; ln -s a b; touch a/a.c c.c; echo **/*.c; cd ..; rm -r "$d")' a/a.c b/a.c $ zsh -c '(d=$(mktemp -d); cd "$d"; mkdir a; ln -s a b; touch a/a.c c.c; echo **/*.c; cd ..; rm -r "$d")' a/a.c c.c I would strongly prefer zsh's behaviour here: - files in symlinked directories are not selected, so that I don't get duplicate files, which was one of the original complaints - additionally, unrelated to the symlink problem, files in current directory are also selected in **/foo (so that ** is "zero or more subdirectories" even when followed by /) I'm not sure whether this qualifies as a bug, the docs AFAICT don't clarify what should happen. -- Muru