bash中的这一行是什么意思? “.~ / some_env database_name”

时间:2012-07-16 14:58:12

标签: bash

#!/bin/bash
#
. ~/some_env database_name

代码看起来就像上面一样,每次我尝试在bash中运行它时都会收到文件或目录不存在的错误。如果我创建目录,它会抱怨我正在使用目录。如果我创建一个文件,它会抱怨“文件名不是函数”。

这行代码有什么作用? 由于搜索字符串太短,所以很难弄清楚该行的作用。

另外,我对bash很新。

3 个答案:

答案 0 :(得分:5)

.source的简写,因此此命令仅使用参数~/some_env执行database_name的内容。请注意,source执行当前shell上下文中的命名文件的内容(即不在子shell中),并且命名文件不可执行也无关紧要。如果您的主目录中没有名为some_env的文件或当前工作目录中名为database_name的文件,则会收到错误消息。

答案 1 :(得分:4)

.运行脚本some_env,就像在当前shell中键入命令一样。这称为sourcing,与将其作为普通脚本运行不同,因为它可以设置环境变量,创建函数等,这些函数将在运行该命令后出现在当前shell中。

database_name是第一个参数,将在脚本中以$1的形式提供。

如果您在~/some_env没有文件,则会收到错误,因为无法运行;脚本中的某些内容也可能引用不存在的文件。您可能需要发布有关该脚本的更多详细信息。

答案 2 :(得分:1)

您知道~引用您的主目录吗?如果脚本来自另一个用户,当他运行它时,它在主目录中找到文件some_env。当您运行它时,该文件不存在或不包含脚本所期望的内容。