无法在当前目录中找到脚本

11

显然,如果脚本位于当前目录中,我无法对其进行source。例如:

# source some/dir/script.sh
Ok

脚本正常工作,但如果我和脚本在同一目录下,则会出错:

# cd some/dir
# source script.sh
-sh: source: script.sh: file not found

怎么回事?难道唯一的方法就是改变目录吗?

如果相关的话,我使用的是Angstrom Linux上的bash v4.2.10。

3个回答

19

引用源码手册:

source 文件名 [参数]

....

如果文件名不包含斜杠,则使用 PATH 中的文件名来查找包含文件名的目录。

因此,source 试图在 PATH 中包含的文件夹中搜索您的 script.sh

如果您想在当前文件夹中使用源文件,请使用

source ./script.sh

1
使用绝对路径 -- source /root/path/to/some/dir/script.sh -- 应该可以解决问题。

0
这可能是因为文件格式不正确。我从Windows FTP了一个Korn Shell脚本。我可以编辑它,但当我尝试运行它时,出现了“未找到[没有这样的文件或目录]”的错误。结果发现它是DOS格式,在我用vi编辑时在文件名行中指示出来。在我重新FTP上传时,确保以ASCII方式传输,它就正常运行了。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接