如果运行命令行,但不是从shell脚本运行,命令运行正常

问题描述 投票:0回答:1

我在切换的新服务器上遇到了一个奇怪的问题(从ubuntu 18_04切换到Red hat linux)。我们的脚本之一开始引发错误,但是如果我复制将同一命令粘贴到命令外壳上,它将正常工作。

Shell是bash,命令是

g++ -Wall -fPIC  -I $JAVA_HOME/include -I $JAVA_HOME/include/linux -shared -o Test.so Test.cpp

因此,如果手动运行,效果很好,但是在任何脚本中运行时都会引发以下错误。

In file included from Test.cpp:2:
Test.h:2:10: fatal error: jni.h: No such file or directory
 #include <jni.h>
          ^~~~~~~
compilation terminated.

我尝试以所有可能的形式运行脚本,删除了所有其他命令,但是这个命令,甚至是最简单的脚本,都引发了我上面发布的错误;test.sh

#!/bin/bash
g++ -Wall -fPIC  -I $JAVA_HOME/include -I $JAVA_HOME/include/linux -shared -o Test.so Test.cpp

所以我的问题是,如果命令运行时在命令提示符/ bash上没有任何问题,(其中它确实找到了JAVA_HOME的所有路径,找到了jni.h并生成了.so文件),为什么它在脚本内失败?

bash g++ redhat
1个回答
0
投票

感谢franzik和其他人的评论,因此导出JAVA_HOME时出现问题,我在脚本中添加了以下内容,以使其正常工作。

export JAVA_HOME=/path/to/jvm/
© www.soinside.com 2019 - 2024. All rights reserved.