Tim*_*Tim 29 shell bash shell-script
我想知道以下两种运行 bash 脚本的方式是否等效?
. ./myScript.sh
source myScript.sh
Run Code Online (Sandbox Code Playgroud)jw0*_*013 24
它们在 bash 中是等价的,因为它们做完全相同的事情。另一方面,source长 5 个字符并且不能移植到仅 POSIX 的 shell 或 Bourne 而.(dot) 是,所以我从不费心使用source.
这是正确的 - 获取文件在当前 shell 中运行命令,它会影响您当前的 shell 环境。您仍然可以将参数传递给源文件,$PATH如果文件名不包含任何斜杠,那么bash 实际上会像普通命令一样查找文件名。
与.vs的原始问题无关source,但在您的示例中,
. ./myScript.sh
Run Code Online (Sandbox Code Playgroud)
不等同于
source myScript.sh
Run Code Online (Sandbox Code Playgroud)
因为 while.和source在功能上是相同的,myScript.sh并且./myScript.sh不一样。由于./myScript.sh包含一个斜杠,它被解释为一个路径,shell 只使用./myScript.sh. 但是,myScript.sh没有斜线,所以外壳$PATH首先搜索它。这是POSIX 指定的标准行为.。大多数外壳默认为此,尽管它们可能会添加扩展名(例如在路径搜索后在当前工作目录中搜索)或更改./行为的选项source。
| 归档时间: |
|
| 查看次数: |
7035 次 |
| 最近记录: |