Deaktivieren der Jobsteuerung in Bash (STRG-Z)


11

Es kommt mir manchmal vor, dass ich versehentlich CTRL+ drücke Zund meine Bewerbung im Hintergrund verschwindet. Ich weiß, ich kann es zurückbringen fg, also ist es keine so große Sache. Aber ich frage mich job controltrotzdem, ob ich das ausschalten soll. In meinem ganzen Leben kann ich mich nicht an einen Fall erinnern, als ich ihn brauchte, er sieht für mich nur als Relikt aus der Vergangenheit aus.

Ist es in Ordnung, diese job controlvollständig zu deaktivieren ? Oder fehlt mir etwas und diese Funktion kann nützlich sein? Wie würde ich es in meinem deaktivieren.bashrc

AKTUALISIEREN:

Ich habe versucht, set +mwie von @Falsenames vorgeschlagen. Dies funktioniert jedoch nur, wenn ich es in das Terminal eingebe. Das Hinzufügen set +mzu my .bashrchat keine Auswirkung.


1
Erneutes Update: Die Tatsache, dass $-(Liste der aktiven Optionen) nicht mehr enthält, mwann Sie sie set +min Ihre Liste aufnehmen, ~/.bashrcdeutet darauf hin, dass Bash versucht , die Jobsteuerung auszuschalten, dies aber letztendlich aufgrund eines Fehlers nicht tut - möglicherweise lohnt es sich, darüber zu berichten bug-bash@gnu.org
mklement0

Antworten:


8

Sie können Folgendes in Ihre Befehlszeile einfügen, um den Überwachungsmodus nicht mehr zu verwenden.

setze + m

Wenn Sie die Strg-Z-Funktion später wirklich benötigen, können Sie einfach 'set -m' eingeben, um die Überwachung für diese Sitzung zu aktivieren.

Von Mann schlagen . Beachten Sie, dass dies für '-m' gilt, wobei "+ m" diese Einstellung zum Deaktivieren umschaltet.

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. 

Als letzten Versuch möchten Sie möglicherweise eine Version von Bash ohne das Flag "--enable-job-control" manuell kompilieren. Hier ist eine Kurzanleitung zur Installation von GNU. Wenn Sie sich für diesen Weg entscheiden, ersetzen Sie / bin / bash NICHT, nur für den Fall, dass Hintergrundprozesse, die durch bash ausgeführt werden, die Jobsteuerung erwarten. Erstellen Sie stattdessen eine /bin/bash.alt oder eine andere Datei. Ihre Standard-Shell kann durch Ausführen von usermod oder Bearbeiten von / etc / passwd als root in diese alternative Shell geändert werden.


set +mfunktioniert im Terminal, aber wenn ich es zu meinem hinzufüge .bashrc, hat es keine Auswirkung.
Martin Vegter

Ah, du hast recht. Das ist zu diesem Zeitpunkt auf das jeweilige Skript beschränkt. Dann behauptet Bash seine
Standardeinstellungen

Das Kompilieren meiner eigenen Bash scheint ein ziemlich hoher Preis für das Deaktivieren der Jobsteuerung zu sein. Es muss eine Einstellung geben, die über funktioniert .bashrc.
Martin Vegter

Da dies alles zur Kompilierungszeit festgelegt ist, muss es keine Möglichkeit geben, es in einer Setup-Datei zu ändern, die nach dem Start der Shell geladen wird. Das Problem hierbei ist, dass jemand beschlossen hat, bash mit aktivierter Jobsteuerung als Standard für die von Ihnen verwendete Distribution zu kompilieren. Ich kann nicht wirklich persönlich dagegen argumentieren, da ich jeden Tag bei der Arbeit verschiedene Jobkontrollen verwende und nicht sicher bin, ob ich mich ohne sie leicht an das Leben anpassen kann. Zugegeben, das ist meine Erfahrung, nicht deine ... deshalb gibt es Flaggen beim Kompilieren, um Optionen zu geben.
Falsenames

4

stty susp undefDeaktiviert das von der Tastatur initiierte Suspend-Signal für die meisten Programme. Befehle wie vimund emacsmit bestimmten Bindungen Ctrl-Zmüssen jedoch einzeln neu konfiguriert werden.

Sie können diesen stty-Befehl zu Ihrem ~/.bash_profileoder ~/.profile, abmelden, erneut anmelden.


Dies funktioniert tatsächlich für einige Programme. Aber zum Beispiel mcfunktioniert es nicht. Was im Grunde bestätigt, was Sie gesagt haben. Gibt es keine universelle Lösung, die für alle funktioniert?
Martin Vegter

Ich habe gerade bemerkt, set +mfunktioniert für mc, aber nur, wenn ich es in das Terminal tippe, nicht in .bashrcoder .profile.
Martin Vegter

3

Oder fehlt mir etwas und diese Funktion kann nützlich sein?

Um diesen Teil der Frage zu beantworten: Cz / fgCombo ist für meinen vim-Workflow von wesentlicher Bedeutung. Zum Beispiel, ziehe ich Cz> git commit> fgum mit git - Wrapper aus vim.

Cz hilft bei der Behandlung der Shell als IDE und entspricht dem Prinzip " One One ". (Dies anstelle von "Editor als IDE").


1
^Zist absolut immer noch nützlich - aber es war noch nützlicher, wenn ein Terminal kein Fenster war, sondern eine Box vor Ihnen. Und du hattest nur einen.
Volker Siegel

2

Fügen Sie trap "" SIGTSTPin Ihrem Skript hinzu. Es wird das Signal abfangen und ignorieren.

#!/bin/bash
trap "" SIGTSTP
watch date
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.