How can I redirect all output to /dev/null?

Redirection operators are evaluated left-to-right. You wrongly put 2>&1 first, which points 2 to the same place, as 1 currently is pointed to which is the local terminal screen, because you have not redirected 1 yet. You need to do either of the following:

2>/dev/null 1>/dev/null google-chrome &

Or

2>/dev/null 1>&2 google-chrome &

The placement of the redirect operators in relation to the command does not matter. You can put them before or after the command.


It seems that syntax is different:

./a.out 1>/dev/null 2>&1 &

See the devices for FD = 2 are different when ./a.out 1>/dev/null 2>&1 and ./a.out 2>&1 1>/dev/null &

1) FD=2 points to /dev/null

>./a.out 1>/dev/null 2>&1 &
[1] 21181
>lsof -p `pidof a.out`
COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
a.out   21181 xxxxxxxxxxxxxxx    0u   CHR 136,43      0t0        46 /dev/pts/43
a.out   21181 xxxxxxxxxxxxxxx    1w   CHR    1,3      0t0      3685 /dev/null
a.out   21181 xxxxxxxxxxxxxxx    2w   CHR    1,3      0t0      3685 /dev/null

2) FD=2 points to /dev/pts/43

>./a.out 2>&1 1>/dev/null &
[1] 25955
>lsof -p `pidof a.out`
COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF      NODE NAME
a.out   25955 xxxxxxxxxxxxxxx    0u   CHR 136,43      0t0        46 /dev/pts/43
a.out   25955 xxxxxxxxxxxxxxx    1w   CHR    1,3      0t0      3685 /dev/null
a.out   25955 xxxxxxxxxxxxxxx    2u   CHR 136,43      0t0        46 /dev/pts/43

In the section Redirection, Bash's reference manual says:

The operator [n]>&word is used [...] to duplicate output file descriptors

To redirect both standard error and standard output to file you should use the form

&>file

With regard to your case, that means substitute

2>&1 1>/dev/null

with

&>/dev/null