Editei uma resposta no Ask Ubuntu que sugeria o seguinte
nohup gedit >& /dev/null &
Quando eles realmente quiseram dizer
nohup gedit &> /dev/null &
O último redireciona corretamente o stderr e o stdout para /dev/null
. Eu esperava que o primeiro crie um arquivo chamado &
ou, mais provavelmente, dê um erro, como ocorre em outros casos:
$ echo "foo" >&
bash: syntax error near unexpected token `newline'
Em vez disso, parece funcionar exatamente da mesma maneira que a anterior, uma gedit
janela aparece e nenhuma mensagem de erro é impressa.
Também devo observar que isso é específico do shell:
bash
(4.2.45 (1) -release),zsh
(5.0.2),csh
(versão do pacote deb: 20110502-2) etcsh
(6.18.01): funciona como descrito acima, sem mensagem de erro, sem arquivos criados.dash
(0.5.7-3):$ nohup gedit >& /dev/null & $ dash: 2: Syntax error: Bad fd number
ksh
(93u + 2012-08-01): falha, mas aparentemente um processo foi iniciado (1223
) embora nenhumagedit
janela apareça:$ nohup gedit >& /dev/null & [1] 1223 $ ksh: /dev/null: bad file unit number
fish
(2.0.0):> nohup gedit >& /dev/null & fish: Requested redirection to something that is not a file descriptor /dev/null nohup gedit >& /dev/null & ^
Então, por que esse comando simplesmente é executado sem erros (e nenhum arquivo de saída criado) em alguns shells e falha em outros? O que está >&
fazendo no caso aparentemente especial de nohup
? Suponho que isso >& /dev/null
esteja sendo interpretado como >&/dev/null
mas por que o espaço não está causando um erro nessas conchas?
nohup command
, Execute tty independente seu application.According à minha memória, dash
estendida de ash
, Debian ash
, ash
desenvolvido pela OpenBSD
e é shell limitado, mesmo OS Maemo (Debian Base n900 mobile) utiliza traço, ash
shell família têm uso limitado esperar de bash ou tcsh.
dash
imprimir minha versão, mas o pacote é 0.5.7-3
: qual é a sua? Além disso, você tem certeza de que está executando dash
? Esse é o padrão do Ubuntu, sh
não é?
nohup
faz, minha pergunta é por que o >&
parece funcionar com nohup sozinho em algumas conchas.
dash
.