bashでのジョブ制御の無効化(CTRL-Z)


12

偶然にCTRL+ を押しZて、アプリケーションがバックグラウンドに表示されなくなることがあります。私は知っています、それをで戻すことができるfgので、それほど大したことではありません。しかし、job controlとにかくこれをオフにすることについて疑問に思っています。私の人生の中で、必要になったときのことを思い出すことはできません。それは、過去からの遺物として私に見えるだけです。

job control完全に無効にしても大丈夫ですか?または、何か不足していますか?この機能は役に立ちますか?どうすれば無効にできますか.bashrc

更新:

私が試してみましたset +m@Falsenamesによって示唆されているように。ただし、これはターミナルで入力した場合にのみ機能します。set +m私に追加し.bashrcても効果はありません。


1
再更新:($-アクティブなオプションのリスト)mを配置set +mしたときに含まれないという事実~/.bashrcは、Bashがジョブ制御をオフにしようとしていることを示唆していますが、最終的にはバグのためにオフにしない-経由で報告する価値があるかもしれませんbug-bash@gnu.org
mklement0

回答:


8

以下をコマンドラインに追加して、監視モードの使用を停止できます。

セット+ m

後でctrl-z機能が本当に必要な場合は、「set -m」と入力するだけで、そのセッションの監視を有効にできます。

男バッシュから。これは「-m」用であり、「+ m」はその設定を無効に切り替えます。

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. 

最後の努力として、「-enable-job-control」フラグのないバージョンのbashを手動でコンパイルすることができます。ここにGNUからのクイックインストールガイドがあります。この方法を選択する場合は、バックグラウンドプロセスがbashを介して実行されるジョブ制御を念頭に置いて、/ bin / bashを置き換えないでください。代わりに、/ bin / bash.altまたは別のファイルを作成します。デフォルトのシェルは、usermodを実行するか、/ etc / passwdをrootとして編集することで、この代替シェルに変更できます。


set +m端末で動作しますが、それをmyに追加.bashrcしても効果がありません。
Martin Vegter 2014年

ああ、あなたは正しい。その時点で特定のスクリプトにローカライズされています。そして、bashはでそのデフォルトを主張する。
Falsenames

自分のbashをコンパイルすることは、ジョブ制御を無効にするために支払うのにかなりの高額のようです。を介して機能する設定が必要.bashrcです。
Martin Vegter 2014年

これはすべてコンパイル時に設定されるため、シェルの実行が開始された後にロードされるセットアップファイルで変更する必要はありません。ここでの問題は、誰かが、使用しているディストリビューションのデフォルトとして有効になっているジョブ制御を使用してbashをコンパイルすることを決めたことです。私は仕事で毎日さまざまなジョブコントロールを使用しており、それなしで簡単に生活に順応できるかどうかはわかりません。確かに、それは私の経験であり、あなたの経験ではありません...これが、オプションを与えるためのコンパイルに関するフラグがある理由です。
偽名14年

4

stty susp undefは、ほとんどのプログラムでキーボード起動の一時停止信号を無効にしますがvimemacs特定のバインディングを持つやなどのコマンドは、Ctrl-Z個別に再構成する必要があります。

そのsttyコマンドを~/.bash_profileまたは~/.profileに追加して、ログアウトし、再度ログインできます。


これは実際には一部のプログラムで機能します。しかし、例えばmcそれは機能しません。これは基本的にあなたが言ったことを確認します。すべてに対して機能する普遍的な解決策はありませんか?
Martin Vegter 2014年

私は気づきましたが、でset +m動作しmcますが、ターミナルで入力した場合のみで、.bashrcまたはではありません.profile
Martin Vegter 2014年

3

または、何か不足していますか?この機能は役に立ちますか?

質問のこの部分に答えるには、Cz / fgコンボは私のvimワークフローに不可欠です。例えば、私はCzにを好む> git commit> fgvimの中からgitのラッパーを使用します。

Czは、シェルをIDEとして扱い、「1つのことを行う」という原則に従っています。(「editor as IDE」の代わりに)。


1
^Zはまだ完全に便利ですが、端末がウィンドウではなく、目の前にあるボックスの場合はさらに便利です。そして、あなたはたった一つしかありませんでした。
Volker Siegel 14

2

trap "" SIGTSTPスクリプトに追加します。シグナルをキャッチして無視します。

#!/bin/bash
trap "" SIGTSTP
watch date
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.