有什么区别./a.sh和。 。/灰?

时间:2013-10-22 12:15:19

标签: linux bash

我所知道的是,当我有两个脚本文件时,可以说a.shb.sh并使用脚本a.sh中定义的变量或函数,然后. ./a.sh正常工作但是./a.sh不起作用。运行shell脚本时,./script.sh. ./script.sh都可以正常运行。使用./script.sh. ./script.sh运行脚本有什么区别?

2 个答案:

答案 0 :(得分:8)

. path/to/script来源文件(在同一个shell中执行)。另一个调用会执行一个执行脚本的新shell进程。

在子进程中调用脚本将使其变量对父进程不可用。采购脚本将在同一父流程中引入和更改变量。

答案 1 :(得分:4)

符号. ./a.shsource ./a.sh的缩写。 source是执行shell的内置命令,用于逐行读取给定文件并执行所有写入的操作,就像它直接在shell中键入一样。因此,如果exit中有一个a.sh语句,它将关闭发出此信息的shell;通常,xterm窗口会关闭。

然而,符号./a.sh开始了一个新过程;这是由当前shell fork自己完成的,然后使分叉的子exec完成给定的程序。在这种情况下,这又是一个shell脚本,因此新的shell将是exec。这个新shell所做的一切都不会影响原始(父)shell。如果孩子没有被送到后台,则父母会等待孩子终止。