Pengalihan output perintah tampaknya tidak relevan karena pemberitahuan dikirim oleh shell ketika pekerjaan dimulai secara tidak sinkron. Lebih tepatnya, ini adalah fitur shell (fonctionality) yang terkait dengan kontrol pekerjaan .
Di sini, kutipan yang berasal dari "Bash Reference Manual", bab "Kontrol Pekerjaan", bagian satu.
Shell mengaitkan PEKERJAAN dengan setiap pipa. Itu menyimpan tabel pekerjaan yang sedang dieksekusi, yang mungkin terdaftar dengan jobs
perintah. Ketika Bash memulai pekerjaan secara tidak sinkron, ia mencetak garis yang terlihat seperti:
[1] 25647
menunjukkan bahwa pekerjaan ini adalah pekerjaan nomor 1 dan bahwa ID proses dari proses terakhir dalam pipa yang terkait dengan pekerjaan ini adalah 25647. Semua proses dalam satu pipa tunggal adalah anggota dari pekerjaan yang sama. Bash menggunakan abstraksi PEKERJAAN sebagai dasar untuk kontrol pekerjaan.
Perhatikan bahwa skrip shell tidak menampilkan pemberitahuan ini.
$ cat test
#!/bin/bash
true & echo true
$ ./test
true
Kenyataannya
Zsh
Dokumentasi Zsh memberikan indikasi serupa tentang pemberitahuan ini, lihat man 1 zshmisc
, bagian "JOBS". Notifikasi ini tidak ditampilkan ketika kontrol pekerjaan dinonaktifkan.
MONITOR ( -m , ksh: -m )
Izinkan kontrol pekerjaan. Diatur secara default di shell interaktif.
zsh_prompt % setopt no_monitor
zsh_prompt % true & echo true
true
zsh_prompt %
zsh_prompt %
Pesta
Tampaknya Bash selalu menampilkan misalnya [1] 25647
. Misalnya, "pemberitahuan akhir" [1]+ Done true
tidak ditampilkan ketika kontrol pekerjaan dinonaktifkan.
bash_prompt $ true & echo true
[1] 25647
true
bash_prompt $
[1]+ Done true
Kontrol pekerjaan dinonaktifkan
bash_prompt $ set +m # disable job control
bash_prompt $ true & echo true
[1] 25685
bash_prompt $
bash_prompt $
Kesimpulan
Saya tidak tahu apakah menonaktifkan kontrol pekerjaan untuk menyembunyikan notifikasi adalah hal yang baik?
Sumber daya