“./some/script.sh”的含义是什么?

时间:2012-08-13 19:21:26

标签: shell

运行shell脚本有两个选项:

$ ./some/script.sh

$。 ./some/script.sh

据我所知,第一个基于带有脚本的给定shebang行启动一个新的shell环境。而第二个在同一个shell environemnt中执行语句。

还有更多差异吗?

我在哪里可以找到有关第二个的更多文档?

.是真正的命令吗?我找不到一个联机帮助页。

3 个答案:

答案 0 :(得分:4)

  

还有更多差异吗?

问题的关键是使用.脚本在同一过程中逐行执行 。否则,分叉一个新进程。并且一个单独的进程无法更改父进程,例如它无法更改环境变量,例如当前目录。

  

我在哪里可以找到有关第二个的更多文档?

[cnicutar@fresh ~]$ help source
source: source filename [arguments]
...
  是的。一个真正的命令

[cnicutar@fresh ~]$ type .
. is a shell builtin

如果它已经不明显,.source相同*。


正如rush评论的那样,POSIX并未指定source,因此您应该在可移植的代码中使用.The dot在第2章中指定。

答案 1 :(得分:1)

.是一个Bourne Shell命令,用于读取文件并执行文件中的命令,您的分析基本上是正确的。 bash和其他shell添加source作为.的别名。

请参阅bash builtins的手册,并参阅Bourne sh builtins手册顶部的.

  

从当前shell上下文中的filename参数读取并执行命令。如果filename不包含斜杠,则PATH变量用于查找文件名。当Bash未处于posix模式时,如果在$ PATH中找不到filename,则搜索当前目录。如果提供了任何参数,则在执行文件名时它们将成为位置参数。否则,位置参数不变。返回状态是执行的最后一个命令的退出状态,如果没有执行命令则返回零。如果找不到filename,或者无法读取,则返回状态为非零。这个内置相当于源。

答案 2 :(得分:0)

它用于获取环境。例如.profile。