“./”和“。”在shell中运行脚本有什么区别?

时间:2013-12-31 03:29:30

标签: bash shell

我向群集提交了一些计算并发现,如果我在其qsub中运行.的shell脚本(请注意点后面的空格)而不是{{1}一些变量的变化范围,我没有库访问的问题,就像我对./一样。

我知道之前有过关于它的问题。 1 2

他们讨论./sh方法,但不要触及. ./

..相同吗?

2 个答案:

答案 0 :(得分:3)

. cmd

VS

./cmd

是昼夜不同。

第一个,更像是“include”,它在当前正在执行的shell的上下文中执行cmd。

第二个是路径操作。 ./cmd类似于/usr/local/bin/cmd./是路径说明符。

在这种情况下,它表示您在当前目录中运行cmd,而不是搜索cmd的PATH env变量。

cmd被执行时,它被分叉并执行到它自己的进程,与当前进程无关。与第一个例子完全不同的结果。

答案 1 :(得分:1)

。用于source脚本。 该脚本将在当前shell中运行,之后设置的任何变量都将可用。

./是一种说出“当前目录”的方式,它只是一个路径引用。