Readability is very subjective. I especially think that the original is very readable if you know that || means short circuit OR . So, you read the original as "do it, OR if it fails."
Equivalent code without using || is an:
if ! hash foo 2>&- then echo >&2 "I require foo but it not installed. Aborting." exit 1 fi
source share