Gostaria de começar com a seção SHELL GRAMMAR da página de manual para bash
:
Simple Commands
A simple command is a sequence of optional variable assignments followed by blank-separated words and redirections, and terminated by a control operator.
Portanto, redirecionamento ( &>/dev/null
) vai primeiro e o operador de controle segue ( &
).
Editar: E para completar a resposta, o nohup
é a primeira parte do comando simples . Não tem nenhum significado especial em bash
.
Exatamente o seu exemplo (exceto o /dev/null
, que só torna complicado):
jakuje@E6430:/tmp$ rm nohup.out out
jakuje@E6430:/tmp$ nohup sleep 1 & &>out
[1] 10876
nohup: ignoring input and appending output to ‘nohup.out’
[1]+ Done nohup sleep 1
jakuje@E6430:/tmp$ cat nohup.out # empty
jakuje@E6430:/tmp$ cat out # empty
jakuje@E6430:/tmp$ rm nohup.out
jakuje@E6430:/tmp$ nohup sleep 1 &>out &
[1] 10882
[1]+ Done nohup sleep 1 &> out
jakuje@E6430:/tmp$ cat nohup.out # no file
cat: nohup.out: No such file or directory
jakuje@E6430:/tmp$ cat out # output of nohup
nohup: ignoring input