Вопрос: Как приостановить bash в bash


Можно ли приостановить bash, который был вызван другим bash? Например, если я использую su чтобы стать другим пользователем, но хотите на мгновение переключиться на моего собственного пользователя. Для другого примера, в сеансе SSH, я могу использовать ~ shortcut (~, ^ Z), чтобы приостановить удаленную оболочку и вернуться к моей локальной оболочке (но это, очевидно, функция SSH, а не оболочка).

bash перехватывает ^ Z, чтобы выполнить собственное управление процессом, поэтому он должен быть отдельной командой (если она даже поддерживается). Но попытка найти это только приводит к информации о нормальном управлении процессом.


4
2017-12-06 17:24


Источник




Ответы:


У Баша есть suspend встроенная:

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.

5
2017-12-08 07:40



Ahha! Это то, что я искал. - Brian


Попробуйте:

kill -STOP $$

где $$ это PID текущей оболочки.

Вы можете привязать его к Alt + Z например, путем добавления к ~/.inputrc:

"\ez": "kill -STOP $$\n"

5
2017-12-06 17:28



Отлично, спасибо! Никогда не знал о .inputrc - Brian
Он контролирует путь bash читает / редактирует ввод пользователя, см. man readline, это может быть очень полезно, стоит упомянуть команды: history-search-backward а также history-search-backward, - cYrus


Не совсем то, что вы просили, но я обычно использую экран когда я делаю такие вещи. Однако экран по умолчанию не установлен на всех системах.


1
2017-12-07 23:00



Я все время работаю на экране. Я запускаю экран на своей локальной машине и имею сеансы SSH в кучу других. Поэтому я обычно не запускаю экран на удаленных системах, потому что экран внутри экрана неуклюж. И я слишком ленив, чтобы открыть еще одну сессию :-). Я привык ударять ^ Z в vim, чтобы приостановить его, когда мне нужно запустить некоторые команды (я знаю, что vim имеет !, но это не то же самое, что и оболочка). - Brian