I edited an answer on Ask Ubuntu that was suggesting the following
nohup gedit >& /dev/null &
When they actually meant
nohup gedit &> /dev/null &
The latter correctly redirects both stderr and stdout to /dev/null. I was expecting the former to either create a file called & or, more likely, to give an error as it does for other cases:
$ echo "foo" >&
bash: syntax error near unexpected token `newline'
Instead, it seems to work in exactly the same way as the former, a gedit window appears and no error message is printed.
I should also note that this is shell specific:
bash(4.2.45(1)-release),zsh(5.0.2),csh(deb package version: 20110502-2) andtcsh(6.18.01) : works as described above, no error message, no files created.dash(0.5.7-3):$ nohup gedit >& /dev/null & $ dash: 2: Syntax error: Bad fd numberksh(93u+ 2012-08-01): fails, but a process is apparently started (1223) though nogeditwindow appears:$ nohup gedit >& /dev/null & [1] 1223 $ ksh: /dev/null: bad file unit numberfish(2.0.0):> nohup gedit >& /dev/null & fish: Requested redirection to something that is not a file descriptor /dev/null nohup gedit >& /dev/null & ^
So, why does this command simply run with no errors (and no output file created) in some shells and fail in others? What is the >& doing in the apparently special case of nohup? I am guessing that >& /dev/null is being interpreted as >&/dev/null but why isn't the space causing an error in these shells?
dash.nohup command, run independent tty your application.According to my memory,dashextended ofash,Debian ash,ashdeveloped byOpenBSDand it's limited shell,even maemo OS(Debian Base on n900 mobile) uses dash,ashfamily shell have limited usage expect of bash or tcsh.dashto print its version out but the package is0.5.7-3, what's yours? Also, are you sure you're runningdash? That's Ubuntu's defaultshisn't it?nohupdoes, my question is why the>&seems to work with nohup alone in some shells.