Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 命令在终端中工作,但在脚本中不工作?_Java_Linux_Unix_Ubuntu - Fatal编程技术网

Java 命令在终端中工作,但在脚本中不工作?

Java 命令在终端中工作,但在脚本中不工作?,java,linux,unix,ubuntu,Java,Linux,Unix,Ubuntu,我有以下脚本,当作为脚本执行时不起作用,但在终端中输入完全相同的命令时起作用: #! /bin/sh cd ~/Desktop/Example/ javac Generator.java 错误消息是: my_script.sh3:my_script.sh:javac:未找到 上面的脚本名为my_script.sh,我使用以下命令从终端执行它: sh my_script.sh 当我这样做的时候 echo$SHELL 在终端中,我得到: /bin/bash 导航到单行命令工作的目录,并将脚本保

我有以下脚本,当作为脚本执行时不起作用,但在终端中输入完全相同的命令时起作用:

#! /bin/sh

cd ~/Desktop/Example/

javac Generator.java
错误消息是:

my_script.sh3:my_script.sh:javac:未找到

上面的脚本名为my_script.sh,我使用以下命令从终端执行它:

sh my_script.sh

当我这样做的时候

echo$SHELL

在终端中,我得到:

/bin/bash


导航到单行命令工作的目录,并将脚本保存在该目录中

然后执行

./my_script.sh

将jmlc添加到路径中,然后再次运行脚本

要检查:打开一个新的shell并键入“jmc”

让脚本工作的另一种方法是在脚本中指定完整路径。将“jmlc”替换为“/full_path_here/jmlc”


确保jmlc脚本中的任何其他命令在路径中也可用。

您还可以通过导出其路径使
jmlc
可用:

#! /bin/sh

export jmlc_bin=FULL_PATH_TO_JMLC

cd ~/Desktop/Example/

$jmlc_bin Generator.java

“不工作”是什么意思?第二个命令有错误吗?@Razvan错误与第二个命令有关。如上所述,我已经包含了错误消息now@Razvan我相信是这样,因为我可以从另一个目录调用jmlc。如何确定?shell启动文件可能正在删除PATH环境变量,因此找不到该命令。如果我键入jmlc,它已经提供了版本号等?好的,您也可以将jmlc的完整路径添加到脚本中。这会像#!在我的脚本文件的顶部,在bin/sh?下面,我能找到的唯一文件是JML/bin中的jmlc.bat和jmlc.1,但是使用~Path/JML/bin/jmlc.bat Generator.java和~Path/JML/bin/jmlc Generator.java都不起作用:(在终端中键入
哪个jmlc
,以找出在键入
jmlc
时shell正在执行的文件。