这两种方式差异是进程名称的不同,假设有以下内容的脚本:
$ cat script.sh
#!/bin/bash
sleep 4400
以sh script.sh
执行,它是明确的启动一个sh命令,把脚本名称做参数传递给它,进程名称是sh:
$ pstree
...
|-sshd-+...
| |-sshd---sshd---bash---sh---sleep
而以./script.sh
方式执行,操作系统负责脚本加载(execve系统调用),进程名称是脚本名
$ pstree
...
|-sshd-+...
| |-sshd---sshd---bash---a.sh---sleep