Я отредактировал ответ на Ask Ubuntu, в котором предлагалось следующее
nohup gedit >& /dev/null &
Когда они на самом деле имели в виду
nohup gedit &> /dev/null &
Последний правильно перенаправляет как stderr, так и stdout на /dev/null
. Я ожидал, что первый создаст файл с именем &
или, что более вероятно, выдаст ошибку, как в других случаях:
$ echo "foo" >&
bash: syntax error near unexpected token `newline'
Вместо этого он работает точно так же, как и первый, появляется gedit
окно и сообщение об ошибке не выводится.
Я также должен отметить, что это специфическая оболочка:
bash
(4.2.45 (1) -релиз),zsh
(5.0.2),csh
(версия пакета deb: 20110502-2) иtcsh
(6.18.01): работает, как описано выше, сообщений об ошибках нет, файлы не созданы.dash
(0.5.7-3):$ nohup gedit >& /dev/null & $ dash: 2: Syntax error: Bad fd number
ksh
(93u + 2012-08-01): не удается, но процесс, очевидно, запущен (1223
), хотяgedit
окно не появляется:$ 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 & ^
Итак, почему эта команда просто запускается без ошибок (и не создается выходной файл) в одних оболочках и завершается ошибкой в других? Что >&
делает в явно особом случае nohup
? Я предполагаю, что >& /dev/null
это интерпретируется как, >&/dev/null
но почему пространство не вызывает ошибку в этих оболочках?
nohup command
Запустите независимый терминал вашего application.According в мою память, dash
расширенной из ash
, Debian ash
, ash
разработанных OpenBSD
и она ограничена оболочки, даже Maemo OS (Debian Base на n900 мобильный) использует тир, ash
семейство оболочка имеет ограниченное использование ожидать от Баш или Tcsh.
dash
распечатать его версию, но пакет 0.5.7-3
, какой у тебя? Кроме того, ты уверен, что бежишь dash
? Это Ubuntu по умолчанию sh
, не так ли?
nohup
делает, мой вопрос, почему >&
кажется, что работает в некоторых оболочках только с nohup.
dash
.