是否可以暂停由另一个 bash 调用的 bash?例如,如果我曾经su
成为其他用户,但想暂时切换回自己的用户。再举一个例子,在 SSH 会话中,我可以使用 ~ 快捷键 (~, ^Z) 暂停远程 shell 并返回到我的本地 shell(但这显然是 SSH 功能,而不是 shell)。
bash 拦截 ^Z 来执行其自己的进程控制,因此它必须是一个单独的命令(如果它受支持的话)。但尝试找到它只会产生有关正常进程控制的信息。
答案1
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.
答案2
尝试:
kill -STOP $$
其中$$
是PID
当前 shell 的。
您可以将其绑定到Alt+z例如通过添加~/.inputrc
:
"\ez": "kill -STOP $$\n"
答案3
不完全是你想要的,但我通常使用屏幕当我做类似的事情时。但是,并非所有系统都默认安装 screen。