我试图了解以下kshell脚本行。任何人都可以解释为什么我们需要第三行中的点和空格?
#!/bin/ksh
export scriptDir=${0%/*}
. $scriptDir/version.profile
echo "JAVA_HOME_FOR_THIS_SCRIPT=$JAVA_HOME"
答案 0 :(得分:2)
.
命令也可以写成source
,是ksh和其他sh派生shell中的内置命令。在这种情况下,它在当前shell进程的上下文中执行$scriptDir/version.profile
中包含的命令。
引用ksh手册页:
. name [ arg ... ]
如果 name 是使用function
名称保留字定义的函数 语法,该函数在当前环境中执行(就像它一样) 已使用 name ()语法定义。)否则 如果 name 引用文件,则完整读取该文件,并在当前shell中执行命令 环境。由 PATH 指定的搜索路径用于查找 目录 包含文件。如果给出了任何参数 arg ,则在处理。命令时它们将成为位置参数 并且在完成时恢复原始位置参数 灰。否则,位置参数不变。退出状态是最后一个命令的退出状态 执行。