参考文章Linux sh、source和.命令执行.sh文件的区别

执行shell脚本的方式

有这么几种方式可以运行.sh脚本文件

  1. sh [file]
  2. source [file]
  3. . [file]
  4. ./[file]

.source是同一个命令,简称点命令

准备一个shell脚本文件,内容随意写点,这里我准备的内容如下:
shell脚本内容.png
此时该文件还不是可执行状态
file status.png

在bash shell中

对于. [file]./[file],在bash shell中
bash shell中点命令.png

在zsh中

而在zsh中,点命令不能执行无运行权限的.sh文件
zsh中的点命令效果.png
给脚本加上可执行权限chmod ugo+x 'shell script.sh'再在zsh中使用点命令
chmod +x后点命令.png
看来zsh中单独一个.并非等于source

在bash shell和zsh中的source,sh命令

先把文件的可执行权限去掉

  • 在zsh中
    zsh中的source和sh.png
  • 在bash shell中
    bash shell中的source和sh.png

在bash shell和zsh中,sourcesh都可以执行没有执行权限的脚本文件内容

  • ./[file]的方式,是在当前shell执行文件本身,把.sh当做一个可执行文件,所以需要.sh的可执行运行权限。当如此运行文件时,有两个进程:一个是运行的'shell script.sh'本身,另一个是.sh脚本内的内容,.sh内的执行的其他程序。
  • sh [file]的方式,是新建一个shell在运行.sh里的程序,不需要可执行权限,但需要可读权限,此方式运行会产生两个进程:一个是shell,另一个是运行脚本内容。
  • source [file]方式,是在当前shell执行脚本内容,不需要可执行权限,但需要可读权限。此方式执行仅有一个进程,既运行的脚本内容。
  • . [file]方式同source [file]方式,但在不同shell中可能不支持

Nao
1 声望0 粉丝