According to the man page, [ -a ] and [ -e ] should have the same behaviour.
-a file True if file exists. ... -e file True if file exists. $ touch stuff.txt $ [ -a stuff.txt ]; echo $? 0 $ [ -e stuff.txt ]; echo $? 0 $ [ ! -e stuff.txt ]; echo $? 1 $ [ ! -a stuff.txt ]; echo $? 0 # what? Both these version show the exact same behaviour. Fedora 18, bash 4.2.45(1)-release OSX, 3.2.48(1)-release Kurt