在Linux中,使用 source 命令执行 .sh 脚本和使用 ./ 执行脚本主要有以下区别:
source 命令
source命令是在当前 shell 环境中执行脚本。这意味着脚本中的环境变量改变将会影响到当前的 shell 环境。使用
source执行脚本时,不需要脚本具有执行权限(即不需要chmod +x script.sh)。source命令通常用于加载配置文件,比如.bashrc或.profile。语法如下:
bash
复制
source script.sh或者使用点号(
.):bash
复制
. script.sh
./ 执行脚本
使用
./script.sh是在一个新的子 shell 中执行脚本。脚本中的环境变量改变不会影响到调用它的父 shell 环境。脚本需要有执行权限才能以这种方式运行。如果没有执行权限,你可以使用
chmod +x script.sh来设置。这种方式执行脚本通常用于运行独立的程序或脚本,而不影响当前 shell 的环境。
语法如下:
bash
复制
./script.sh
示例说明
假设你有一个名为 script.sh 的脚本,内容如下:
bash
复制
#!/bin/bash
export MY_VAR="Hello, World!"
如果你使用
source script.sh,那么MY_VAR环境变量将会被设置在当前 shell 中,你可以在之后的命令中使用它。如果你使用
./script.sh,MY_VAR将只在子 shell 中设置,一旦脚本执行完毕,返回到父 shell,MY_VAR将不会被设置或访问。
总结
使用
source或.来执行脚本时,任何对环境变量的修改都会影响到当前的 shell 环境。使用
./执行脚本时,脚本在一个新的子 shell 中运行,不会影响当前的 shell 环境。