menonaktifkan kontrol pekerjaan di bash (CTRL-Z)

12

Kadang-kadang terjadi pada saya, bahwa saya menekan CTRL+ Zsecara tidak sengaja dan aplikasi saya menghilang ke belakang. Aku tahu, aku bisa membawanya kembali fg, jadi itu bukan masalah besar. Tapi saya bertanya-tanya tentang mematikan ini job control. Dalam seluruh hidup saya, saya tidak dapat mengingat satu contoh ketika saya membutuhkannya, itu hanya tampak bagi saya sebagai peninggalan dari masa lalu.

Apakah ini OK untuk job controlsepenuhnya menonaktifkan ? Atau apakah saya melewatkan sesuatu, dan fitur ini dapat bermanfaat? Bagaimana saya menonaktifkannya di.bashrc

MEMPERBARUI:

Saya sudah mencoba set +mseperti yang disarankan oleh @Falsenames. Namun, ini hanya berfungsi ketika saya mengetiknya di terminal. Menambahkan set +mke saya .bashrctidak berpengaruh.

Martin Vegter
sumber
1
Pembaruan ulang: Fakta bahwa $-(daftar opsi aktif) tidak lagi berisi mketika Anda menempatkan set +mdi Anda ~/.bashrcmenunjukkan bahwa Bash sedang mencoba untuk mematikan kontrol pekerjaan, tetapi pada akhirnya tidak melakukannya karena bug - mungkin layak dilaporkan melalui [email protected]
mklement0

Jawaban:

8

Anda dapat menambahkan yang berikut ini ke dalam baris perintah Anda untuk berhenti menggunakan mode pemantauan.

set + m

Jika Anda benar-benar membutuhkan fungsionalitas ctrl-z nanti, Anda cukup mengetik 'set -m' untuk mengaktifkan pemantauan untuk sesi itu.

Dari man bash . Perhatikan bahwa ini untuk '-m', dengan "+ m" mengganti pengaturan itu untuk menonaktifkan.

set [+abefhkmnptuvxBCEHPT] [+o option] [arg ...] 
....
-m
    Monitor mode. Job control is enabled. This option is on by default for interactive
    shells on systems that support it (see JOB CONTROL above). Background processes 
    run in a separate process group and a line containing their exit status is printed
    upon their completion. 

Sebagai upaya terakhir, Anda mungkin ingin mengkompilasi versi bash secara manual tanpa tanda "--enable-job-control". Ini adalah panduan instalasi cepat dari GNU. Jika Anda memilih untuk pergi rute ini, JANGAN mengganti / bin / bash kalau-kalau proses latar belakang berjalan melalui kontrol pekerjaan mengharapkan bash. Sebagai gantinya, buatlah /bin/bash.alt atau file lain. Shell default Anda dapat diubah ke yang alternatif ini dengan menjalankan usermod atau mengedit / etc / passwd sebagai root.

Nama palsu
sumber
set +mbekerja di terminal, tetapi ketika saya menambahkannya ke saya .bashrc, itu tidak berpengaruh.
Martin Vegter
Ah kamu benar Itu dilokalkan ke skrip tertentu pada saat itu. Kemudian bash menyatakan default-nya.
Falsenames
mengkompilasi pesta saya sendiri tampaknya cukup mahal untuk dibayar karena menonaktifkan kontrol pekerjaan. Harus ada beberapa pengaturan yang berfungsi .bashrc.
Martin Vegter
Karena ini semua diatur pada waktu kompilasi, tidak perlu harus ada cara untuk mengubahnya dalam file setup yang memuat setelah shell mulai berjalan. Masalahnya di sini adalah seseorang memutuskan untuk mengkompilasi bash DENGAN kontrol pekerjaan diaktifkan sebagai default untuk distro yang Anda gunakan. Saya tidak bisa secara pribadi membantah hal itu, karena saya menggunakan berbagai kontrol pekerjaan setiap hari di tempat kerja, dan saya tidak yakin saya bisa dengan mudah menyesuaikan diri dengan kehidupan tanpa itu. Memang, itu adalah pengalaman saya, bukan milik Anda ... ini sebabnya ada bendera pada kompilasi, untuk memberikan opsi.
Nama samaran
4

stty susp undefakan menonaktifkan sinyal suspend yang diprakarsai keyboard untuk sebagian besar program, namun perintah seperti vimdan emacsyang memiliki binding spesifik Ctrl-Zharus dikonfigurasi ulang secara terpisah.

Anda dapat menambahkan perintah stty ke ~/.bash_profileatau ~/.profile, logout, login lagi.

Tandai Plotnick
sumber
ini sebenarnya berfungsi untuk beberapa program. Tetapi misalnya untuk mcitu tidak berhasil. Yang pada dasarnya menegaskan apa yang Anda katakan. Apakah tidak ada solusi universal yang berfungsi untuk semua?
Martin Vegter
Saya hanya memperhatikan, set +mbekerja untuk mc, tetapi hanya jika saya mengetiknya di terminal, bukan di .bashrcatau .profile.
Martin Vegter
3

Atau apakah saya melewatkan sesuatu, dan fitur ini dapat bermanfaat?

Untuk menjawab bagian pertanyaan ini: Cz / fgcombo sangat penting untuk alur kerja vim saya. Sebagai contoh, saya lebih memilih Cz> git commit> fgmenggunakan pembungkus git dari dalam vim.

Cz membantu memperlakukan shell sebagai IDE, sesuai dengan prinsip " do one thing ". (Ini bukannya "editor sebagai IDE").

denten
sumber
1
^Zbenar-benar masih berguna - tetapi itu bahkan lebih berguna ketika terminal bukan jendela, tetapi sebuah kotak di depan Anda. Dan Anda hanya punya satu.
Volker Siegel
2

Tambahkan trap "" SIGTSTPskrip Anda. Ini akan menangkap sinyal dan mengabaikannya.

#!/bin/bash
trap "" SIGTSTP
watch date
dimana23
sumber