按Ctrl + C终止"grunt watch",但杀死从同一个bash开始的Atom编辑器,为什么?

the*_*eme 6 linux bash shell atom-editor

我有这个脚本命名wsjs.sh:

#!/bin/bash
WS=/home/user/wsjs
cd $WS
nohup atom . & 
gnome-terminal
grunt watch
Run Code Online (Sandbox Code Playgroud)

如果我在bash中运行它:

./wsjs.sh
Run Code Online (Sandbox Code Playgroud)

然后原子编辑器,gnome-terminal分别启动,当前的bash显示:

user@ubuntu:~$ ./wsjs.pwd 
nohup: appending output to ‘nohup.out’
Running "watch" task
Waiting...
Run Code Online (Sandbox Code Playgroud)

现在,如果我按ctrl + c,grunt watch退出,BUT原子编辑器也关闭.

......这很奇怪.

我在bash中手动输入了每个命令,并且原子未关闭.我用gedit替换了atom并运行脚本,它没有关闭.

为什么原子关闭了?谢谢!

M S*_*mar 3

这是因为在执行shell脚本时,它有一个进程id,并且文件内执行的命令将有一个脚本文件的父进程id。因此,在终止或 Ctl+C 脚本文件时,它也会终止子进程(在您的情况下

cd $WS
nohup atom . & 
gnome-terminal
grunt watch
Run Code Online (Sandbox Code Playgroud)

) 执行单个命令时具有独立的进程 ID。

希望你明白了。