1

我有以下代码片段,下面是我的问题。由于我对 unix 完全陌生,我什至不确定我应该从谷歌搜索什么。

我知道 ./Path 是在我也知道的当前路径中运行特定程序。/PATH 是在另一个目录中运行程序。

但是关于 。。/小路 ?

if [[ -f ./dbatools.pro ]]; then
        . ./dbatools.pro  -> **what does this do ? I don’t think such a command is possible ?** 
else
        . /app/dbatools/profile/dbatools.pro
fi

echo "Started at `date`"
4

1 回答 1

3

dot.命令是标准的 POSIX shell(Bourne、Korn、Bash)表示法,用于“读取命名文件,就像它是当前脚本的一部分一样”。最大的优点是该文件可以设置环境变量和定义函数,它会影响 shell 脚本。通常,如果您将脚本作为常规命令运行(使用./dbatools.proor sh dbatools.pro),则环境变量仅影响执行脚本的 shell,而不影响当前 shell。

测试查看dbatools.pro当前目录中是否有一个文件被调用(因此./dbatools.pro)。如果有,它使用该文件;如果没有,则使用文件/app/dbatools/profile/dbatools.pro. 如果它无法读取它“点”的文件,它将产生一个错误。

在 Bash 中,source ./dbatools.pro可以使用另一种表示法 , 来代替。它是从 C shell 借来的。

请注意,.(和,内置sourceBash )命令将在 上的目录中搜索普通文件(例如 ),但该文件不需要是可执行的 - 它只需要是可读的。. dbatools.pro$PATH

于 2012-09-13T03:36:24.770 回答