Saya mengedit jawaban pada Ask Ubuntu yang menyarankan yang berikut ini
nohup gedit >& /dev/null &
Padahal sebenarnya maksud mereka
nohup gedit &> /dev/null &
Yang terakhir benar mengarahkan kedua stderr dan stdout ke /dev/null
. Saya mengharapkan yang pertama untuk membuat file bernama &
atau, lebih mungkin, untuk memberikan kesalahan seperti halnya untuk kasus lain:
$ echo "foo" >&
bash: syntax error near unexpected token `newline'
Alih-alih, tampaknya berfungsi dengan cara yang persis sama seperti yang pertama, sebuah gedit
jendela muncul dan tidak ada pesan kesalahan yang dicetak.
Saya juga harus mencatat bahwa ini khusus untuk shell:
bash
(4.2.45 (1) -release),zsh
(5.0.2),csh
(versi paket deb: 20110502-2) dantcsh
(6.18.01): berfungsi seperti dijelaskan di atas, tidak ada pesan kesalahan, tidak ada file yang dibuat.dash
(0.5.7-3):$ nohup gedit >& /dev/null & $ dash: 2: Syntax error: Bad fd number
ksh
(93u + 2012-08-01): gagal, tetapi suatu proses tampaknya dimulai (1223
) meskipun tidak adagedit
jendela yang muncul:$ 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 & ^
Jadi, mengapa perintah ini hanya berjalan tanpa kesalahan (dan tidak ada file output yang dibuat) di beberapa shell dan gagal di yang lain? Apa yang >&
dilakukan dalam kasus khusus yang tampaknya nohup
? Saya menduga itu >& /dev/null
ditafsirkan sebagai >&/dev/null
tetapi mengapa ruang tidak menyebabkan kesalahan pada shell ini?
nohup command
, Menjalankan tty independen application.According ke memori saya, dash
diperpanjang dari ash
, Debian ash
, ash
yang dikembangkan oleh OpenBSD
dan itu shell terbatas, bahkan maemo OS (Debian Berdasarkan n900 mobile) menggunakan dasbor, ash
shell keluarga memiliki penggunaan yang terbatas diharapkan dari bash atau Tcsh.
dash
untuk mencetak versinya tetapi paketnya adalah 0.5.7-3
, apa milik Anda? Juga, apakah Anda yakin sedang berlari dash
? Itu standar Ubuntu sh
bukan?
nohup
, pertanyaan saya adalah mengapa >&
tampaknya bekerja dengan nohup sendirian di beberapa shell.
dash
.