显然,如果该脚本在当前目录中,我不能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,如果这是相关的。
答案 0 :(得分:15)
引用源手册页:
源文件名[参数]
...
如果filename不包含斜杠,则为文件 PATH中的名称用于查找包含文件的目录 - 名。
所以... source
正试图在script.sh
中包含的文件夹中搜索PATH
。
如果要在当前文件夹中获取文件,请使用
source ./script.sh
答案 1 :(得分:1)
使用绝对路径 - source /root/path/to/some/dir/script.sh
- 应该对你进行排序。
答案 2 :(得分:0)
当文件格式错误时,可能会发生这种情况。我通过Windows通过FTP下载了Korn Shell脚本。我可以编辑它,但是在尝试运行它时出现“找不到[没有这样的文件或目录]”的信息。原来它是DOS格式的,当我在vi中进行编辑时,在文件名行中指出了这一点。当我重新通过FTP将其传输为ASCII码后,它运行良好。