Como suspender bash dentro do bash

4

É possível suspender um bash que foi invocado por outra bash? Por exemplo, se eu usar su para me tornar um usuário diferente, mas quiser voltar para meu próprio usuário por um momento. Por outro exemplo, em uma sessão SSH, posso usar o ~ shortcut (~, ^ Z) para suspender o shell remoto e retornar ao meu shell local (mas isso é obviamente um recurso SSH, não o shell).

bash intercepta ^ Z para fazer seu próprio controle de processo, então deve ser um comando separado (se é suportado). Mas tentar encontrá-lo só resulta em informações sobre o controle normal do processo.

    
por Brian 06.12.2011 / 18:24

3 respostas

5

Bash tem suspend incorporado:

suspend: suspend [-f]
    Suspend shell execution.

    Suspend the execution of this shell until it receives a SIGCONT signal.
    Unless forced, login shells cannot be suspended.

    Options:
      -f    force the suspend, even if the shell is a login shell

    Exit Status:
    Returns success unless job control is not enabled or an error occurs.
    
por 08.12.2011 / 08:40
5

Experimente:

kill -STOP $$

em que $$ é o PID do shell atual.

Você pode vinculá-lo a Alt + z , por exemplo, adicionando a ~/.inputrc :

"\ez": "kill -STOP $$\n"
    
por 06.12.2011 / 18:28
1

Não é exatamente o que você estava pedindo, mas eu normalmente uso a tela quando estou fazendo coisas assim. No entanto, a tela não é instalada por padrão em todos os sistemas.

    
por 08.12.2011 / 00:00