shell脚本source和./执行的区别
时间: 2024-04-27 09:22:00 浏览: 8
`source`和`./`执行脚本的区别在于环境变量和工作目录的不同。
1. `source`命令是在当前的Shell环境中直接读取并执行指定的脚本,因此脚本中定义的变量和函数将会被当前的Shell环境所感知。而`./`执行脚本则是在一个子Shell环境中执行,脚本中定义的变量和函数只在该子Shell环境中有效,执行完后不会对当前Shell环境造成任何影响。
2. `source`命令是直接读取并执行脚本,因此该脚本必须是可以被Shell直接读取和执行的(即该脚本需要有可执行权限),而`./`执行脚本则是通过在当前目录下查找并执行该脚本文件,因此该脚本需要有可执行权限,并且需要在当前目录下。
3. `source`命令不需要指定脚本文件的路径,而`./`执行脚本需要指定脚本文件的相对或绝对路径。
相关问题
shell source ../../../xxx.sh命令是干什么的
shell中的source命令用于在当前shell环境中执行指定的脚本文件(以.sh为扩展名)。在执行source命令后,脚本文件中定义的变量、函数和别名将在当前shell环境中生效,而不是在一个子shell中执行。这使得可以在当前shell环境中加载和使用脚本文件中定义的内容,而不需要创建一个新的子shell。通常,source命令用于加载配置文件或其他需要在当前shell环境中生效的脚本。
shell中source、sh、bash、./执行脚本的区别
shell是一个用于操作系统的命令行解释器,用来解释用户的命令并执行操作。在shell中,source、sh、bash和./执行脚本是使用方式不同的四种执行脚本的方法。
首先是source命令,它用于在当前shell环境中执行指定的脚本,也被称为"dot sourcing"。通过"source 脚本文件"的方式来执行。在执行过程中,脚本中的变量和函数将会在当前shell环境中被定义和使用。
其次是sh命令,它是Bourne Shell的简称,是一种常见的UNIX和Linux系统默认使用的shell。通常用于在当前shell环境中执行脚本,使用方式类似于"sh 脚本文件"。sh能够执行简单的脚本,但不支持一些高级特性,如数组、函数等。
bash是目前在Linux系统中广泛使用的shell,是Bourne-Again SHell的缩写。它是Bourne shell的增强版本,具有更多的特性和高级功能。bash可以执行sh脚本,同时也支持更多的特性。
最后是./执行脚本的方式,通常用于执行当前目录下的脚本。使用方式为"./ 脚本文件"。与source命令不同,当用./执行脚本时,将会开启一个新的子shell执行脚本文件,执行结束后子shell将会被关闭。
综上所述,四种不同的执行脚本的方式各有特点,可以根据需要选择适合的方式来执行脚本。