#。/和#之间的区别。 ./

时间:2012-01-26 11:53:48

标签: linux bash

执行脚本之间的区别是什么

# ./test

# . ./test 

test是简单的脚本,例如

#!/bin/bash
export OWNER_NAME="ANGEL 12"
export ALIAS="angelique"

我知道结果,但我不确定实际发生了什么

由于

3 个答案:

答案 0 :(得分:7)

./foo执行foo如果它被标记为可执行并且具有正确的shebang行(或者是ELF二进制文件)。它将在一个新的过程中执行。

. ./foo. foo当前 shell中加载脚本。它等于source foo

使用示例代码,如果希望导出的变量在shell中可用,则需要使用第二种方式。

答案 1 :(得分:2)

单独使用dot,bash正在“获取”指定的文件。它等同于source内置函数,并尝试在同一个shell进程中包含和执行脚本。

./启动一个新进程,当前shell进程等待它终止。

答案 2 :(得分:0)

第一个意味着脚本(或二进制)是可执行的。使用包含shebang行的脚本(可能)告诉使用哪个解释器。

第二个是“执行[参数]作为shell脚本”的简写。作为参数传递的文件不需要设置可执行位。