在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 环境。