shell脚本的执行方式

一、直接以文件名的方式来执行

文件名是要带路径的,如果没有在PATH规定的目录内的话,否则系统找不到文件。不带路径则必须在PATH指定的某个目录内。
  • 使用绝对路径+shell文件的方式,要求文件必须有rx权限,例: /home/aliao/test.sh
  • 使用相对路径+shell文件名的方式,要求文件必须有rx权限,例:./test.sh
  • 直接使用shell文件名的方式,要求文件必须在PATH所规定的目录内,并且具有rx权限,例:test.sh
在shell文件的首行要以#!/bin/bash或者sh等方式指定此脚本使用哪个shell来执行。如果指定了,那么使用文件名直接执行时,就会使用指定的shell来执行此脚本。否则,使用用户登录时取得的shell来执行此脚本。 **而如果以bash+test.sh等方式执行脚本时,则优先使用具体指定的shell来执行脚本。**

二、bash或sh+文件名的方式

此时不需要文件具有x权限,只要有r权限就可以执行。例:bash test.sh或者bash ./test.sh或者bash /home/aliao/test.sh

tips

上面两类执行脚本的方式有一个共同点,那就是系统会开启一个新的shell来执行它。在脚本里定义的变量等,在父shell中无法访问到。当我们执行完脚本,回到当前命令行(父shell),无法访问脚本中定义的相关变量值等

三、使用source执行脚本

source test.sh or ./test.sh or /home/aliao/test.sh

这种方式会在当前shell下执行脚本,而不会开启新shell。因此,对于一些系统设定的脚本,如果不想重启shell,则可以使用source重新将相关配置加载到当前shell,可以让新配置立即生效。
这种方式执行脚本,在脚本没有x权限只有r权限时,也可以执行成功。

你可能感兴趣的:(shell,linux)