我有一个要在 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
谁能告诉我我可能做错了什么或错过了什么?
我有一个要在 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 解释源命令,并且您的脚本将起作用。
使用点命令使脚本兼容
您还可以使用 dot 命令更改源代码,该命令执行相同的操作,但在 bourne 和 bash 中均受支持。
换行:
source set_puregev_env
和:
. set_puregev_env
现在该脚本将与 sh 或 bash 一起使用。
使脚本可执行
您还应该直接运行脚本以避免类似的混淆,方法是使其可执行chmod +x xRUN,并像这样调用它:
$ ./xRUN
然后它将使用 shebang 中指定的命令并使用脚本的其余部分作为输入。在您的情况下,它将使用 bash - 因为这是在 shebang 中指定的。