desabilitando o controle de trabalho no bash (CTRL-Z)

8

Às vezes, acontece que pressiono CTRL + Z por acidente e meu aplicativo desaparece no segundo plano. Eu sei, posso trazê-lo de volta com fg , então não é um grande problema. Mas eu estou querendo saber sobre como transformar esse job control off de qualquer maneira. Em toda a minha vida, não consigo me lembrar de uma ocasião em que precisei, apenas me parece uma forma de relíquia do passado.

Está tudo bem desabilitar job control inteiramente? Ou estou faltando alguma coisa, e esse recurso pode ser útil? Como eu desabilitá-lo no meu .bashrc

UPDATE:

Eu tentei set +m como sugerido por @Falsenames. No entanto, isso só funciona quando eu digito no terminal. Adicionar set +m ao meu .bashrc não tem efeito.

    
por Martin Vegter 18.06.2014 / 22:52

4 respostas

6

Você pode adicionar o seguinte na sua linha de comando para parar de usar o modo de monitoramento.

set + m

Se você realmente precisar da funcionalidade ctrl-z mais tarde, basta digitar 'set -m' para ativar o monitoramento para essa sessão.

De homem bash . Observe que isso é para '-m', com "+ m" alternando essa configuração para desabilitar.

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. 

Como último esforço, você pode querer compilar manualmente uma versão do bash sem o sinalizador "--enable-job-control". Aqui está um rápido guia de instalação do GNU. Se você optar por seguir esse caminho, NÃO substitua / bin / bash apenas no caso de os processos em segundo plano serem executados através do bash em espera do controle do job. Em vez disso, crie um /bin/bash.alt ou outro arquivo. Seu shell padrão pode ser alterado para este alternativo executando usermod ou editando / etc / passwd como root.

    
por 18.06.2014 / 23:07
4

stty susp undef desativará o sinal de suspensão iniciado pelo teclado para a maioria dos programas, no entanto, comandos como vim e emacs que possuem ligações específicas para Ctrl-Z precisarão ser reconfigurados individualmente.

Você pode adicionar esse comando stty ao seu ~/.bash_profile ou ~/.profile , efetuar logout, fazer login novamente.

    
por 19.06.2014 / 00:00
3

Or am I missing something, and this feature can be useful?

Para responder a esta parte da questão: C -z / fg combo é essencial para o meu fluxo de trabalho vim. Por exemplo, eu prefiro C-z > git commit > fg para usar git wrappers de dentro do vim.

O C-z ajuda a tratar o shell como IDE, em conformidade com o princípio " fazer uma coisa ". (Isso ao invés de "editor como IDE").

    
por 19.06.2014 / 00:01
2

Adicione trap "" SIGTSTP no seu script. Ele vai pegar o sinal e ignorá-lo.

#!/bin/bash
trap "" SIGTSTP
watch date
    
por 20.06.2014 / 07:57