Ctrl + C 终止 "grunt watch",但杀死从相同 bash 启动的 Atom 编辑器,为什么?
Ctrl + C to terminate "grunt watch", but kills Atom editor which started from the same bash, why?
我将此脚本命名为 wsjs.sh
:
#!/bin/bash
WS=/home/user/wsjs
cd $WS
nohup atom . &
gnome-terminal
grunt watch
如果我 运行 它在 bash:
./wsjs.sh
然后分别启动atom编辑器,gnome-terminal,当前bash显示:
user@ubuntu:~$ ./wsjs.pwd
nohup: appending output to ‘nohup.out’
Running "watch" task
Waiting...
现在如果我按 ctrl + c
,grunt watch
退出,但是原子编辑器也关闭了。
...这很奇怪。
我手动输入了 bash 中的每个命令,但 atom 没有关闭。
我用 gedit 和 运行 脚本替换了 atom,它没有关闭。
为什么 atom 被关闭了?谢谢!
这是因为在执行shell脚本时,它有一个进程ID,而文件内执行的命令将有一个脚本文件的父进程ID。
因此,在终止或 Ctl+C 脚本文件时,它也会终止子进程(在您的情况下
cd $WS
nohup atom . &
gnome-terminal
grunt watch
)
执行单个命令时具有独立的进程 ID。
希望你明白了。
我了解到您希望 运行在交互式 shell.
中 运行ning 脚本的行为方式与 运行ning 脚本中的命令完全相同
如果那确实是你的意图,那就不要 运行
./wsjs.pwd
...其中 运行 是它自己的脚本 shell;相反,运行
source wsjs.pwd
...或其 POSIX 兼容的等效项,
. wsjs.pwd ## the space is not a typo!
...其中 运行 是您先前存在的 shell 中的脚本。
我将此脚本命名为 wsjs.sh
:
#!/bin/bash
WS=/home/user/wsjs
cd $WS
nohup atom . &
gnome-terminal
grunt watch
如果我 运行 它在 bash:
./wsjs.sh
然后分别启动atom编辑器,gnome-terminal,当前bash显示:
user@ubuntu:~$ ./wsjs.pwd
nohup: appending output to ‘nohup.out’
Running "watch" task
Waiting...
现在如果我按 ctrl + c
,grunt watch
退出,但是原子编辑器也关闭了。
...这很奇怪。
我手动输入了 bash 中的每个命令,但 atom 没有关闭。 我用 gedit 和 运行 脚本替换了 atom,它没有关闭。
为什么 atom 被关闭了?谢谢!
这是因为在执行shell脚本时,它有一个进程ID,而文件内执行的命令将有一个脚本文件的父进程ID。 因此,在终止或 Ctl+C 脚本文件时,它也会终止子进程(在您的情况下
cd $WS
nohup atom . &
gnome-terminal
grunt watch
) 执行单个命令时具有独立的进程 ID。
希望你明白了。
我了解到您希望 运行在交互式 shell.
中 运行ning 脚本的行为方式与 运行ning 脚本中的命令完全相同如果那确实是你的意图,那就不要 运行
./wsjs.pwd
...其中 运行 是它自己的脚本 shell;相反,运行
source wsjs.pwd
...或其 POSIX 兼容的等效项,
. wsjs.pwd ## the space is not a typo!
...其中 运行 是您先前存在的 shell 中的脚本。