bash'da iş denetimini devre dışı bırakma (CTRL-Z)


12

Bazen başıma CTRL+ Zbastığımda başıma geliyor ve uygulamam arka planda kayboluyor. Biliyorum, geri getirebilirim fg, bu yüzden çok önemli değil. Ama job controlyine de bunu kapatmayı merak ediyorum . Tüm hayatım boyunca, ihtiyaç duyduğum bir örneği hatırlayamıyorum, bana geçmişin kalıntısı olarak bakıyor.

job controlTamamen devre dışı bırakmak uygun mudur? Yoksa bir şey mi kaçırıyorum ve bu özellik faydalı olabilir mi? Bilgisayarımda nasıl devre dışı bırakabilirim?.bashrc

GÜNCELLEME:

set +m@Falsenames tarafından önerildiği gibi denedim . Ancak, bu yalnızca terminalde yazdığımda çalışır. set +mBenim içine eklemenin bir .bashrcetkisi yok.


1
Güncelleme Re: gerçeğine $-(aktif seçenekler listesi) artık içeriyorsa myerleştirdiğiniz zaman set +miçinde senin ~/.bashrcBash olduğunu göstermektedir çalışıyor iş denetimini kapatmak için, ama sonunda o kadar çünkü bir yapmaz hata - aracılığıyla değerinde raporlama olabilir bug-bash@gnu.org
mklement0

Yanıtlar:


8

İzleme modunu kullanmayı durdurmak için komut satırınıza aşağıdakileri ekleyebilirsiniz.

set + m

Daha sonra gerçekten ctrl-z işlevselliğine ihtiyacınız varsa, o oturum için izlemeyi etkinleştirmek için 'set -m' yazmanız yeterlidir.

Gönderen adam bash . Bunun "-m" için olduğunu ve "+ m" nin bu ayarı devre dışı bırakmak üzere değiştirdiğini unutmayın.

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. 

Son bir hendek çabası olarak, "--enable-job-control" bayrağı olmadan bash'ın bir sürümünü manuel olarak derlemek isteyebilirsiniz. İşte GNU'dan hızlı bir kurulum kılavuzu . Bu rotaya gitmeyi seçerseniz, arka plan işlemlerinin bash üzerinden beklemesi durumunda / bin / bash değerini DEĞİŞTİRMEYİN. Bunun yerine, /bin/bash.alt veya başka bir dosya oluşturun. Varsayılan kabuğunuz usermod çalıştırılarak veya root olarak / etc / passwd düzenlenerek bu alternatif olana değiştirilebilir.


set +muçbirimde çalışıyor, ama benim eklediğimde .bashrchiçbir etkisi yok.
Martin Vegter

Ah, haklısın. Bu, o noktada belirli bir komut dosyasına yerelleştirilmiştir. Sonra bash varsayılanlarını kabul eder.
Falsenames

kendi bash'ımı derlemek iş kontrolünü devre dışı bırakmak için ödemek için oldukça yüksek bir fiyat gibi görünüyor. Üzerinde çalışan bazı ayarların olması gerekir .bashrc.
Martin Vegter

Tüm bunlar derleme zamanında ayarlandığından, kabuk çalışmaya başladıktan sonra yüklenen bir kurulum dosyasında değiştirmenin bir yolu olması gerekmez. Burada sorun, birisi kullandığınız dağıtım için varsayılan olarak etkin iş denetimi ile bash derlemeye karar vermiş olmasıdır. İşyerinde her gün çeşitli iş kontrolleri kullandığım için buna karşı kişisel olarak tartışamam ve onsuz hayata kolayca uyum sağlayabileceğimden emin değilim. Verilmiş, bu benim deneyimim, senin değil ... bu yüzden seçenekler sunmak için derleme üzerinde bayraklar var.
Falsenames

4

stty susp undefçoğu program için klavyeyle başlatılan askıya alma sinyalini devre dışı bırakır, ancak belirli bağlamaları olan vimve gibi komutların ayrı ayrı yeniden yapılandırılması gerekir.emacsCtrl-Z

Bu stty komutunu ~/.bash_profileveya ~/.profileoturumunuzu kapatıp tekrar girişinize ekleyebilirsiniz .


bu aslında bazı programlar için geçerlidir. Ancak örneğin mcişe yaramaz. Bu temelde söylediklerinizi doğrular. Herkes için çalışan evrensel bir çözüm yok mu?
Martin Vegter

Sadece fark ettim, set +mişe yarıyor mc, ama sadece terminalde yazarsam .bashrcya da değil .profile.
Martin Vegter

3

Yoksa bir şey mi kaçırıyorum ve bu özellik faydalı olabilir mi?

Sorunun bu kısmını cevaplamak için: Cz / fgcombo vim iş akışım için çok önemli. Örneğin, ben Cz tercih> git commit> fgvim içinden git sarmalayıcılarını kullanarak.

Cz, mermiyi IDE olarak ele almaya yardımcı olur ve " bir şey yap " ilkesine uyar. (Bu "IDE olarak editör" yerine).


1
^Zkesinlikle faydalıdır - ancak bir terminal bir pencere değil, önünüzde bir kutu olduğunda daha da yararlı oldu. Ve sadece bir tane vardı.
Volker Siegel

2

trap "" SIGTSTPSenaryonuza ekleyin . Sinyali yakalar ve yok sayar.

#!/bin/bash
trap "" SIGTSTP
watch date
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.