我有一个文件要在 Centos 7 中获取。
如果我这样做,它就可以正常工作:
$ source set_puregev_env
但是,如果我把它放在 shell 脚本中,它就不起作用了..
$ sh xRUN
xRUN: line 3: source: set_puregev_env: file not found
这是我的 shell 脚本:xRUN
#!/bin/bash
source set_puregev_env
谁能告诉我我可能做错了什么或遗漏了什么?
source 是在 bash 中实现的命令,但在 sh 中没有。
有多种方法可以修复脚本。选择其中一个。
使用 bash 解释器运行脚本
当您调用 xRUN
脚本时 - 您明确告诉它由 sh
解释
$ sh xRUN
要改为使用 bash 更改和解释脚本
$ bash xRUN
这将使 bash 解释 source 命令,并且您的脚本将起作用。
使用点命令使脚本 bourne 兼容
您还可以使用点命令更改源代码,该命令执行相同的操作但在 bourne 和 bash 中均受支持。
更改行:
source set_puregev_env
与:
. set_puregev_env
现在该脚本可以与 sh 或 bash 一起使用。
使脚本可执行
您还应该直接运行脚本以避免此类混淆,方法是使其可执行chmod +x xRUN
,并像这样调用它:
$ ./xRUN
然后它将使用 shebang 中指定的命令并将脚本的其余部分用作输入。在您的情况下,它将使用 bash - 因为它是在 shebang 中指定的。