我正在使用 Linux 的 Terminator,并且已将~/.config/terminator/config
文件配置为从特定文件夹启动并运行某些命令
我在末尾添加了一个; bash
(也尝试使用; bash && bash || bash
),以防止命令结束时终端窗口关闭
其中有些,使用pnpm
(节点)运行的,按预期工作,但其他人只是在我打开它时关闭终端ctrl-C
,尽管; bash
这些工作正常:
[[[terminal7]]]
type = Terminal
...
directory = /home/.../app
command = "pnpm dev:localhost; bash"
[[[terminal8]]]
type = Terminal
...
directory = /home/.../billing
command = "pnpm dev:localhost; bash"
这些没有
[[[terminal3]]]
type = Terminal
...
directory = /home/.../backend
command = "make teardown && make setup; bash"
[[[terminal4]]]
type = Terminal
...
directory = /home/.../backend
command = "sleep 3 && cargo xtask run --config resources/configuration/dev-opensas.yaml; bash && bash || bash"
知道可能是什么问题吗?
答案1
虽然通常情况下,当 bash 的非交互式副本接收到通过 ctrl+c 发送的 SIGINT 信号时就会退出,但是您可以使用以下trap
命令来防止这种情况:
command = "trap : SIGINT; make teardown && make setup; trap - SIGINT; exec bash"
上面使用的命令是(通常用作 noop 时使用):
的同义词。因此,我们告诉父 shell 在运行时有效地忽略 SIGINT ,然后在运行以用新副本替换 bash 的非交互式副本(该副本观察到自己已连接到 TTY,应默认将自己配置为交互式)之前将该信号的处理恢复为默认值。true
make teardown && make setup
exec bash