Bash surprised me with the behavior mentioned here: https://stackoverflow.com/questions/15897473
This can be pretty bad in that it's very unexpected (see the comments). Also, the surprise can be triggered without nullglob as well: $ foo=(a b c) $ touch foo0 $ unset foo[0] $ echo ${foo[*]} a b c The thing is that AFAICT, there is no mention of this pitfall in the man page... It would be nice to mention using quotes in at least the `unset` description, and possibly also about `nullglob` too since it makes it easier to run into this problem. I grepped through the bash sources, and even there I found a few unsafe uses: grep -r 'unset[^a-z"'\'']*\[' examples tests so this is clearly something that is not well-known enough. -- ((x=>x(x))(x=>x(x))) Eli Barzilay: http://barzilay.org/ Maze is Life!