You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
For file existence, prefer standard -e over legacy -a.
Problematic code:
if [ -a~/.bash_aliases ]
thensource~/.bash_aliases
fi
Correct code:
if [ -e~/.bash_aliases ]
thensource~/.bash_aliases
fi
Rationale:
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.
Exceptions:
None
Related resources:
Help by adding links to BashFAQ, StackOverflow, man pages, POSIX, etc!