4

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

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

3 ответа3

5

Bash имеет встроенную функцию 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

Попробуйте с:

kill -STOP $$

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .