Comment suspendre bash au sein de bash

4

Est-il possible de suspendre une bash invoquée par une autre bash? Par exemple, si j'utilise su pour devenir un utilisateur différent mais que je souhaite revenir un instant à mon propre utilisateur. Autre exemple, dans une session SSH, je peux utiliser le raccourci ~ pour suspendre le shell distant et revenir à mon shell local (mais il s’agit évidemment d’une fonctionnalité SSH, pas du shell).

bash intercepte ^ Z pour effectuer son propre contrôle de processus. Il doit donc s'agir d'une commande séparée (si elle est même prise en charge). Mais essayer de le trouver ne donne que des informations sur le contrôle de processus normal.

Brian
la source

Réponses:

5

Bash a un suspend intégré:

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.
Martian
la source
Ahha! C'est ce que je cherchais.
Brian
5

Essayez avec:

kill -STOP $$

$$ est le PID de la coquille actuelle.

Vous pouvez le lier à Alt + z par exemple en ajoutant à ~/.inputrc:

"\ez": "kill -STOP $$\n"
cYrus
la source
Excellent merci! Jamais su à propos de .inputrc
Brian
Il contrôle le chemin bash lit / édite la saisie utilisateur, voir man readline, cela peut être très utile, il convient de mentionner les commandes: history-search-backward et history-search-backward.
cYrus
1

Pas exactement ce que vous demandiez, mais j'utilise normalement écran quand je fais des choses comme ça. Cependant, l'écran n'est pas installé par défaut sur tous les systèmes.

pmac72
la source
En fait, je travaille tout le temps à l'écran. Je lance screen sur ma machine locale et des sessions SSH sont organisées. Donc, je n’utilise généralement pas d’écran sur les systèmes distants, car écran dans écran est maladroit. Et je suis trop paresseux pour ouvrir une autre session :-). J'ai l'habitude de frapper ^ Z dans vim pour le suspendre lorsque j'ai besoin d'exécuter certaines commandes (je sais que vim a! Mais ce n'est pas la même chose qu'un shell).
Brian