If I run this command in a Linux shell:
echo 'hello world' &> /dev/null
I get no output, as expected. However, if I run:
sh -c "echo 'hello world' &> /dev/null"
It outputs hello world. Why is this? I thought that sh -c ran the given command inside a new shell; the given command should direct its output to /dev/null, leaving nothing to stdout for sh -c to return?