终止 webpack-dev-server 后执行 bash
Execute bash after terminating webpack-dev-server
这里有个小烦恼。作为项目 "quickstart" 脚本的一部分,我在终端选项卡中启动了一个 webpack 服务器,以及其他选项卡中的其他内容,简而言之:
#!/usr/bin/env bash
gnome-terminal --tab --tab --command \
'bash -c "node_modules/.bin/webpack-dev-server; exec bash"' &
除了服务器选项卡中的 Ctrl+C 外,这几乎可以正常工作。例如,如果它是一个 Flask 服务器,它会停止并且 bash 提示会出现在同一个选项卡中(这就是 "exec bash" 部分的原因)。但是对于 node / webpack,选项卡只是关闭。
手动向节点进程发送中断信号会使选项卡保持打开状态(例如 kill -INT <pid>
)。所以问题是从操作系统的角度来看发生了什么。创建什么进程树?哪个进程获得 SIGINT? exec 替换了什么(如果有的话)?
尝试使用 trap
如下:
bash -c "trap 'exec bash' SIGINT; node_modules/.bin/webpack-dev-server;"
它必须在 cmd+c 上杀死 webpack-dev-server 并执行 bash;
这里有个小烦恼。作为项目 "quickstart" 脚本的一部分,我在终端选项卡中启动了一个 webpack 服务器,以及其他选项卡中的其他内容,简而言之:
#!/usr/bin/env bash
gnome-terminal --tab --tab --command \
'bash -c "node_modules/.bin/webpack-dev-server; exec bash"' &
除了服务器选项卡中的 Ctrl+C 外,这几乎可以正常工作。例如,如果它是一个 Flask 服务器,它会停止并且 bash 提示会出现在同一个选项卡中(这就是 "exec bash" 部分的原因)。但是对于 node / webpack,选项卡只是关闭。
手动向节点进程发送中断信号会使选项卡保持打开状态(例如 kill -INT <pid>
)。所以问题是从操作系统的角度来看发生了什么。创建什么进程树?哪个进程获得 SIGINT? exec 替换了什么(如果有的话)?
尝试使用 trap
如下:
bash -c "trap 'exec bash' SIGINT; node_modules/.bin/webpack-dev-server;"
它必须在 cmd+c 上杀死 webpack-dev-server 并执行 bash;