我在终端模拟器中。我想打开另一个终端来运行指定的命令。
gnome-terminal -e "zsh -c 'pwd; zsh;'"
它在另一个终端中连续成功地pwd
运行。终止zsh
后pwd
,zsh 启动,我可以在第二个终端实例中运行其他命令。
但是,当启动另一个应用程序而不是 时pwd
,我无法正确结束该长时间运行的程序。
例如,当我CtrlC在下面的命令中输入退出 node.js 服务器时,它也会关闭终端。似乎是通过选项SIGINT
传递给第一个。 zsh
-c
gnome-terminal -e "zsh -c 'node server.js; zsh;'"
我怎样才能解决这个问题?
答案1
我在 bash 中尝试过这个
如果不起作用,请提前致歉。
我编写了一个名为 userInput.sh 的 bash 脚本 - 该脚本等待用户输入并结束。
`
## trap ctrl-c and call ctrl_c()
trap ctrl_c INT
function ctrl_c() {
echo "** Trapped CTRL-C"
exit
}
read -p "Press any key to continue... " -n1 -s
现在,当我跑步并按 clt+c 时
gnome-terminal -e "bash -c './userInput.sh; bash;'"
userInput.sh 退出,但 bash 提示符仍然存在。
现在我认为在你的情况下,你不是等待用户输入,而是运行 node server.js 就像
## trap ctrl-c and call ctrl_c()
trap ctrl_c INT
function ctrl_c() {
echo "** Trapped CTRL-C"
exit
}
node server.js
假设您将脚本命名为“runNodeJs.sh”,那么命令将是
gnome-terminal -e "bash -c './runNodeJs.sh; bash;'"