if [ -a ~/.bash_aliases ]
then
source ~/.bash_aliases
fi
if [ -e ~/.bash_aliases ]
then
source ~/.bash_aliases
fi
The POSIX standard way to check whether a file exists is
[ -e file ]
.
Bash and Ksh have historically allowed using -a
, but
this has no benefit and some potential downsides. For example, in Bash
[ -a file ]
is true when the file exists, but
[ ! -a file ]
is also true, and unconditionally so, because
-a
is treated as logical "and" between non-empty
strings.
Avoid the ambiguity entirely by always using the standard, portable
-e
.
None
ShellCheck is a static analysis tool for shell scripts. This page is part of its documentation.