Unix点命令

时间:2012-09-13 01:14:23

标签: linux unix command

我有以下代码段,我的问题如下。由于我是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`"

1 个答案:

答案 0 :(得分:2)

.命令是standard POSIX shell(Bourne,Korn,Bash)符号,用于“读取命名文件,就好像它是当前脚本的一部分”。最大的优点是文件可以设置环境变量并定义函数,它会影响shell脚本。通常,如果您将脚本作为常规命令运行(使用./dbatools.prosh 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}},但文件不需要是可执行的 - 它只需要是可读的。