编写一个Shell脚本,脚本中只包含ehco$$这一条有效命令。使用3种不同的方式执行脚本文件,查看脚本内部的进程PID和当前Bash进程的PID。比较三种方式的区别
时间: 2024-02-18 17:06:31 浏览: 166
好的,我知道了。下面是Shell脚本的内容:
```
#!/bin/bash
echo $$
```
这个脚本中只包含了一个有效命令 `echo $$`,用于输出当前进程的PID。接下来,我将分别演示三种不同的方式来执行这个脚本,并比较它们的区别。
方式一:作为可执行文件执行
首先,需要将脚本文件修改为可执行权限,命令如下:
```
chmod +x test.sh
```
然后,使用./方式来执行脚本,命令如下:
```
./test.sh
```
这时,会输出两个PID,一个是脚本内部的进程PID,另一个是当前Bash进程的PID。它们是不同的,因为脚本内部的 `$$` 表示的是脚本进程的PID,而当前Bash进程的PID与脚本进程的PID不同。
方式二:作为Bash脚本执行
使用Bash命令来执行脚本,命令如下:
```
bash test.sh
```
这时,也会输出两个PID,一个是脚本内部的进程PID,另一个是当前Bash进程的PID。它们仍然是不同的。
方式三:使用source命令执行
使用source命令来执行脚本,命令如下:
```
source test.sh
```
这时,只会输出一个PID,它是当前Bash进程的PID,因为使用source命令执行脚本时,脚本内部的命令会在当前Bash进程中执行,不会启动一个新的子进程。
综上所述,三种方式执行脚本的区别在于脚本内部的进程PID与当前Bash进程的PID是否相同。对于第一种和第二种方式,脚本内部的命令会在一个新的子进程中执行,因此会输出两个不同的PID;而对于第三种方式,脚本内部的命令会在当前Bash进程中执行,因此只会输出一个PID。