菜单

Administrator
发布于 2024-08-01 / 11 阅读
0
0

source 执行sh脚本和./执行脚本的区别

在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.shMY_VAR 将只在子 shell 中设置,一旦脚本执行完毕,返回到父 shell,MY_VAR 将不会被设置或访问。

总结

  • 使用 source. 来执行脚本时,任何对环境变量的修改都会影响到当前的 shell 环境。

  • 使用 ./ 执行脚本时,脚本在一个新的子 shell 中运行,不会影响当前的 shell 环境。


评论