禁用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 '16

Answers:


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. 

作为最后的努力,您可能需要手动编译bash版本而不使用“ --enable-job-control”标志。这是GNU 的快速安装指南。如果您选择采用这种方式,请不要替换/ bin / bash,以防通过bash运行的后台进程期望作业控制。而是制作一个/bin/bash.alt或另一个文件。您可以通过运行usermod或以超级用户身份编辑/ etc / passwd来将默认外壳程序更改为该备用外壳程序。


set +m在终端中工作,但是当我将其添加到终端中时.bashrc,它没有任何作用。
Martin Vegter 2014年

啊,你是对的。这时已本地化为特定的脚本。然后bash声称其违约英寸
Falsenames

编写我自己的bash似乎要付出很大的代价来禁用工作控制。必须有一些可通过设置的设置.bashrc
Martin Vegter 2014年

由于这些都是在编译时设置的,因此不必一定要在Shell开始运行后加载的安装文件中对其进行更改。这里的问题是有人决定在启用作业控制的情况下编译bash作为您正在使用的发行版的默认设置。我不能真的反对这一点,因为我每天在工作中都会使用各种工作控制,而且我不确定如果没有它我是否可以轻松适应生活。当然,那是我的经验,而不是您的经验。这就是为什么在编译时有标记来提供选项。
假名2014年

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 / fgcombo对我的vim工作流程至关重要。例如,我更喜欢锆石> git commit> fg到用git包装纸从VIM内。

Cz有助于将外壳视为IDE,符合“ 做一件事 ”的原则。(这代替了“作为IDE编辑器”)。


1
^Z绝对仍然有用-但当终端不是窗口而是您面前的盒子时,它甚至会更有用。而且你只有一个。
Volker Siegel 2014年

2

添加trap "" SIGTSTP您的脚本。它将捕获信号并忽略它。

#!/bin/bash
trap "" SIGTSTP
watch date
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.