要执行脚本,我们输入 ./script.ksh 但要首先连接到数据库,我们输入以下路径. /
$ . /home/sqllib/db2profile
$ db2
为什么我们要. /
在回家之前使用?
答案1
您.
在路径名中找到的 与该命令无关.
。
.
是存在于每个目录中并指定当前目录的特殊文件名。因此./script.ksh
指定当前目录中的文件script.ksh
,如此././script.ksh
,如此./././script.ksh
(无论您要求路径名解析器从当前目录到其自身再到其自身再到其自身多少次都没有关系......)。除其他原因外,我们使用./script.ksh
而不是简单地script.ksh
表明我们指的是路径名,而不是 shell 命令。
.
也是一个 shell 内置命令,它使 shell 将作为参数提供给它的文件内容获取到 shell 当前环境中,而不是将其作为外部命令执行。该.
命令还可以source
在许多 shell 中拼写(这是来自传统的兼容性别名csh
)。请注意,由于这是一个 shell 命令(由单个标点符号组成,例如:
),因此它后面始终跟有空格。
答案2
在这种情况下,.
告诉 shell/home/sqllib/db2profile
在当前 shell 进程的上下文中执行以下脚本(在本例中),而不是启动一个新的 shell 进程来运行该脚本。
这样做的原因是名称后面的脚本.
可能会创建其他程序需要的环境变量。如果 shell 脚本名称前面没有 ,.
则会启动一个新进程来运行该脚本,因此当脚本完成且其进程终止时,该脚本创建的任何环境变量都将丢失。通过将 放在.
脚本之前,脚本将由当前 shell 进程运行,以便脚本创建的任何环境变量都在当前 shell 的上下文中创建,因此这些环境变量可用于以下脚本和程序:稍后运行,例如db2
下一行的命令。