[英]Commands run in terminal but not inside a bash script
我是Linux的新手,但我正在为Antlr4做一个教程。 最近,我遇到了一个问题。 当我尝试设置Antlr4项目时,我在终端中运行以下命令:
antlr4 MyGram.g4
javac *.java
grun MyGram prog test.in
dot -Tpdf test.dot > test.pdf
一切运行正常,它创建了一个显示分析树的pdf文件。 但是,当我将这些命令放入名为build.sh的bash脚本中时:
#!/bin/bash
antlr4 MyGram.g4
javac *.java
grun MyGram prog test.in
dot -Tpdf test.dot > test.pdf
然后运行命令:./build.sh,出现以下错误,并且没有创建pdf文件:
./build.sh: line 3: antlr4: command not found
javac: file not found: *.java
Usage: javac <options> <source files>
use -help for a list of possible options
./build.sh: line 5: grun: command not found
Error: dot: can't open test.dot
谁能解释我得到这些错误的原因? 我正在VMware Workstation 14 Player上运行Ubuntu 18.04。
由于某些原因,antlr4和grun不在$ PATH中。
type antlr4
会告诉你它在哪里。 将其添加到.bashrc或.profile中的PATH中
antlr4
和grun
是您在命令窗口中定义的别名。
运行脚本时,您所处的环境不同。
因此,您应该:
我同意@Tejas的评论:您应该在脚本中使用完整路径(易于维护)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.