16

我有一个要在 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

谁能告诉我我可能做错了什么或错过了什么?

4

1 回答 1

13

source 是在 bash 中实现的命令,而不是在 sh 中实现的命令。有多种方法可以修复您的脚本。选择其中之一。

使用 bash 解释器运行脚本

当您调用xRUN脚本时 - 您明确告诉它由sh

$ sh xRUN 

要使用 bash 更改和解释脚本,请执行

$ bash xRUN 

这将使 bash 解释源命令,并且您的脚本将起作用。

使用点命令使脚本兼容

您还可以使用 dot 命令更改源代码,该命令执行相同的操作,但在 bourne 和 bash 中均受支持。

换行:

source set_puregev_env

和:

. set_puregev_env 

现在该脚本将与 sh 或 bash 一起使用。

使脚本可执行

您还应该直接运行脚本以避免类似的混淆,方法是使其可执行chmod +x xRUN,并像这样调用它:

$ ./xRUN

然后它将使用 shebang 中指定的命令并使用脚本的其余部分作为输入。在您的情况下,它将使用 bash - 因为这是在 shebang 中指定的。

于 2018-02-14T11:21:00.740 回答