我有一个文件来源于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
任何人都可以告诉我,我可能做错了什么,或者错过了什么?
答案 0 :(得分:4)
source是一个用bash实现的命令,但不是sh。 有多种方法可以修复您的脚本。选择其中之一。
使用bash解释程序运行脚本
当您调用xRUN
脚本时 - 您明确告诉它由sh
解释
$ sh xRUN
使用bash更改和解释脚本而不是
$ bash xRUN
这将使bash解释源命令,并且您的脚本将起作用。
使用dot命令使脚本bourne兼容
您也可以使用dot命令更改源代码,该命令执行相同的操作但在bourne和bash中都受支持。
更改行:
source set_puregev_env
使用:
. set_puregev_env
现在该脚本可以使用sh或bash。
使脚本可执行
您还应该直接运行脚本以避免这样的混淆,使其可执行chmod +x xRUN
,并像这样调用它:
$ ./xRUN
然后它将使用shebang中指定的命令并使用脚本的其余部分作为输入。在你的情况下,它将使用bash - 因为这是在shebang中指定的。