#!/bin/bash
#
. ~/some_env database_name
代码看起来就像上面一样,每次我尝试在bash中运行它时都会收到文件或目录不存在的错误。如果我创建目录,它会抱怨我正在使用目录。如果我创建一个文件,它会抱怨“文件名不是函数”。
这行代码有什么作用? 由于搜索字符串太短,所以很难弄清楚该行的作用。
另外,我对bash很新。
答案 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。当您运行它时,该文件不存在或不包含脚本所期望的内容。