我有以下代码段,我的问题如下。由于我是unix的全新,我甚至不确定我应该谷歌搜索开始。
我知道./Path是在当前路径中运行特定程序 我也知道。 / 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`"
答案 0 :(得分:2)
点.
命令是standard POSIX shell(Bourne,Korn,Bash)符号,用于“读取命名文件,就好像它是当前脚本的一部分”。最大的优点是文件可以设置环境变量并定义函数,它会影响shell脚本。通常,如果您将脚本作为常规命令运行(使用./dbatools.pro
或sh dbatools.pro
),则环境变量仅影响执行脚本的shell,而不影响当前shell。
测试查看当前目录中是否有名为dbatools.pro
的文件(因此./dbatools.pro
)。如果有,它使用该文件;如果没有,则使用文件/app/dbatools/profile/dbatools.pro
。如果它无法读取文件'dot',它将产生错误。
使用Bash,可以使用替代符号source ./dbatools.pro
。它是从C shell借来的。
请注意,.
(和source
,一个Bash builtin)命令将在{{{}上的目录中搜索普通文件(例如. dbatools.pro
) 1}},但文件不需要是可执行的 - 它只需要是可读的。