我一定缺少对在 bash 中获取文件的基本理解。我尝试了看起来应该可行的不同方法,但我仍然收到此错误source: not found
。
在我的脚本中,我尝试 cd 到我想要获取的文件所在的目录,然后再获取它。那没有用。
cd /home/user/path/to/
source myfile
Run Code Online (Sandbox Code Playgroud)
也没有提供要获取的文件的完整绝对路径:
source /home/user/path/to/myfile
Run Code Online (Sandbox Code Playgroud)
错误是“source: not found”,上面语句的行号。
还有什么其他的,一些基本的,我可以忽略的吗?我检查了我正在使用的路径,我没有看到任何错误。这个问题是可重复的。
我在 Linode 服务器上运行 Ubuntu,我的脚本都以:
#!/bin/bash
Run Code Online (Sandbox Code Playgroud)
Gra*_*eme 16
您使用绝对路径的第二次尝试应该是正确的方法。
您的错误的可能原因:
alias
覆盖内置的source
(用 修复unalias source
)source
(用 修复unset -f source
)bash
(尽管您的爆炸线会建议您使用)。source
不是 POSIX。使用source
ondash
不起作用,只能.
起作用。source
与bash
在POSIX模式下工作,但也许这是由于我的版本或编译标志。也许这对您来说是不同的,并且您处于 POSIX 模式。1 和 5 给出的错误类似于您发布的错误。
您可能正在使用运行 bash 以外的 shell 的用户登录。假设您使用用户 X 登录并且 X 运行sh
或另一个 shell,而不是 bash,并且您使用用户 X 运行source myscript.sh
,那么您应该得到给定的错误。
小智 6
从 rpm.spec 文件运行内容时,我遇到了类似的问题。
我通过提供脚本的显式路径解决了该问题。
所以,而不是
source myfile
Run Code Online (Sandbox Code Playgroud)
我不得不跑
source ./myfile
Run Code Online (Sandbox Code Playgroud)
我不确定确切的原因是什么,但看起来 myfile 是在 $PATH 和 $CWD 中搜索的。我想这取决于 shell 中的某些配置。
归档时间: |
|
查看次数: |
44288 次 |
最近记录: |