编写一个shell脚本,脚本中只包含echo$$这一条有效命令。使用三种不同的方法执行脚本文件,查看脚本内部的进程PID和当前Bash进程的PID。比较三种方式的区别
时间: 2024-03-12 08:43:29 浏览: 86
好的,我可以帮你解答这个问题。
首先,我会先回答问题本身,然后再解释三种不同的执行方式以及它们的区别。
回答问题:
下面是一个包含 `echo$$` 的脚本文件 `test.sh`:
```bash
#!/bin/bash
echo $$
```
使用以下三种方式执行该脚本文件,查看脚本内部的进程PID和当前Bash进程的PID:
1. 直接执行脚本文件:
```bash
./test.sh
```
输出:
```
12345
```
其中,`12345` 是脚本文件 `test.sh` 的进程PID,它与当前 Bash 进程的 PID 不同。
2. 使用 Bash 命令执行脚本文件:
```bash
bash test.sh
```
输出:
```
12345
```
其中,`12345` 是脚本文件 `test.sh` 的进程PID,它与当前 Bash 进程的 PID 不同。
3. 使用 source 命令执行脚本文件:
```bash
source test.sh
```
输出:
```
6789
```
其中,`6789` 是当前 Bash 进程的 PID,它与脚本文件 `test.sh` 的进程PID 不同。
解释三种执行方式的区别:
1. 直接执行脚本文件:在当前 Bash 进程中启动一个新的子进程来执行脚本文件,脚本文件的输出会在子进程中显示。
2. 使用 Bash 命令执行脚本文件:与直接执行脚本文件类似,也是在当前 Bash 进程中启动一个新的子进程来执行脚本文件,脚本文件的输出会在子进程中显示。
3. 使用 source 命令执行脚本文件:在当前 Bash 进程中直接执行脚本文件,脚本文件的输出会在当前 Bash 进程中显示,不会创建新的子进程。
因此,使用 source 命令执行脚本文件可以让脚本文件中的变量和函数等对当前 Bash 进程生效,而使用其他两种方式则不能。
希望我的解答对你有帮助!