Ho modificato una risposta su Ask Ubuntu che suggeriva quanto segue
nohup gedit >& /dev/null &
Quando in realtà intendevano
nohup gedit &> /dev/null &
Quest'ultimo reindirizza correttamente sia stderr che stdout a /dev/null
. Mi aspettavo che il primo creasse un file chiamato &
o, più probabilmente, generasse un errore come accade per altri casi:
$ echo "foo" >&
bash: syntax error near unexpected token `newline'
Invece, sembra funzionare esattamente allo stesso modo del primo, gedit
appare una finestra e non viene stampato alcun messaggio di errore.
Dovrei anche notare che questo è specifico della shell:
bash
(4.2.45 (1) -release),zsh
(5.0.2),csh
(versione del pacchetto deb: 20110502-2) etcsh
(6.18.01): funziona come descritto sopra, nessun messaggio di errore, nessun file creato.dash
(0.5.7-3):$ nohup gedit >& /dev/null & $ dash: 2: Syntax error: Bad fd number
ksh
(93u + 2012-08-01): non riesce, ma a quanto pare viene avviato un processo (1223
) sebbene non vengagedit
visualizzata alcuna finestra:$ 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 & ^
Quindi, perché questo comando viene semplicemente eseguito senza errori (e senza file di output creato) in alcune shell e fallisce in altre? Cosa sta >&
facendo nel caso apparentemente speciale di nohup
? Immagino che >& /dev/null
venga interpretato come >&/dev/null
ma perché lo spazio non causa un errore in queste shell?
nohup command
, Eseguire tty indipendente vostra application.According a mia memoria, dash
estesa su ash
, Debian ash
, ash
sviluppato da OpenBSD
e suo guscio limitata, anche OS Maemo (Debian Base su n900 mobile) utilizza cruscotto, ash
guscio famiglia hanno un'utilità limitata si aspettano di bash o tcsh.
dash
stampare la sua versione ma il pacchetto è 0.5.7-3
, qual è il tuo? Inoltre, sei sicuro di correre dash
? Questo è il valore predefinito di Ubuntu, sh
vero?
nohup
fa, la mia domanda è perché >&
sembra funzionare con nohup da solo in alcune shell.
dash
.