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

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

这行代码有什么作用?很难弄清楚该行的作用,因为搜索字符串太短了。

另外,我对 bash 很陌生。

4

3 回答 3

5

.source的简写,所以这个命令只执行~/some_envwith 参数的内容database_name。请注意,source在当前 shell 上下文中(即不在子 shell 中)执行命名文件的内容,命名文件是否不可执行无关紧要。如果您没有some_env在您的主目录中命名的文件或database_name在当前工作目录中命名的文件,那么您将收到一条错误消息。

于 2012-07-16T15:00:34.427 回答
4

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

database_name是第一个参数,将$1在脚本中可用。

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

于 2012-07-16T15:02:13.973 回答
1

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

于 2012-07-16T15:02:30.200 回答