【问题标题】:Difference between launching a script with ./script.sh and . ./script.sh使用 ./script.sh 和 . 启动脚本之间的区别./script.sh
【发布时间】:2009-12-10 12:40:16
【问题描述】:

请告诉我 bash shell 与启动脚本有什么区别 ./script.sh. ./script.sh?

【问题讨论】:

    标签: bash scripting shell


    【解决方案1】:

    正如 klausbyskov 所说,第一种形式要求文件设置其可执行权限位。

    但更重要的是,第一种形式在单独的进程中执行脚本(与启动它的 shell 不同、独立且无法进行更改)。第二种形式使初始 shell 直接运行文件中的命令(就好像您已将它们键入到 shell 中,或者就好像它们包含在执行“采购”的脚本中一样)。

    包含FOO=bar; export FOO 的脚本不会在运行第一个变体的shell 中创建导出的FOO 环境变量,但它会在运行第二个变体的shell 中创建这样的变量。

    第二种形式(“采购”)有点像 C 中的 #include

    【讨论】:

      【解决方案2】:

      第一个要求文件设置 +x 标志。第二个使用 .命令又名“源”,描述为here

      【讨论】:

      • 虽然确实如此,但更重要的区别是“source”读取并执行当前shell实例中的文件。执行脚本会启动一个新的 shell 实例(在 shebang 行中指定),在该实例中执行脚本。
      • @Dan,是的,没错,在我发布的链接中也有说明。
      • 这是-x permission 标志,而不是 bash -x option 只是为了清楚。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-01-28
      • 2012-09-01
      • 1970-01-01
      • 2016-07-02
      • 2014-04-25
      • 2016-08-19
      相关资源
      最近更新 更多