Why Bash…
Bash applies redirections from left to right. If opening an input file fails before stderr is redirected, Bash writes the open error to the original stderr. read -r value < "$file" 2>/dev/null # Input open happens first read -r value 2>/dev/null < "$file" # Stderr is redirected first When a file may be missing and you want to hide Bash's open error, place 2>/dev/null before the input redirection. This changes where the diagnostic goes, not the command's exit status. It is not a universal “all output redirects first” rule; redirections run left to right, so their order determines which destination is active when each one is applied.