GVM / Grails shell脚本错误?

前端之家收集整理的这篇文章主要介绍了GVM / Grails shell脚本错误?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在Ubuntu(14.04)上安装了最新版本的GVM(1.3.13).然后我用它来安装Grails(2.3.7),Groovy(2.2.2)和Gradle(1.11).

Groovy和Gradle似乎安装得非常好(我可以执行他们的SDK命令,例如groovyc等).但每当我执行任何Grails命令时,从任何目录,我的整个终端的屏幕都会清除,暂停一秒钟,然后重新绘制我的命令行提示符.该命令永远不会被执行.几个月前,在Nabble上,另一位用户报告了a very similar issue.

从shell中,如果我执行echo $GRAILS_HOME,我得到:

/home/myuser/.gvm/grails/current

如果我执行echo $PATH,我确实看到/home/myuser/.gvm/grails/current/bin在我的系统路径上.

所以我决定深入挖掘,然后去$GRAILS_HOME.这是一个实际指向/home/myuser/.gvm/grails/2.3.7的符号链接.所以当我去那里时,我会看到正常的Grails安装,包括bin目录.当我进入那个bin目录时,我看到:

grails-debug
grails.bat
grails-debug.bat
startGrails.bat
startGrails
grails

我打开grails(一个shell脚本),看看:

#!/bin/sh
trap "reset" EXIT
trap "reset" INT
trap "reset" TERM

DIRNAME=`dirname "$0"`
. "$DIRNAME/startGrails"

startGrails org.codehaus.groovy.grails.cli.GrailsScriptRunner "$@"

我将其修改如下:

#!/bin/sh
trap "reset" EXIT
trap "reset" INT
trap "reset" TERM

echo "1..."
sleep 2s

DIRNAME=`dirname "$0"`

echo "2...dirname is $DIRNAME"
sleep 8s

. "$DIRNAME/startGrails"

echo "3..."
sleep 2s

startGrails org.codehaus.groovy.grails.cli.GrailsScriptRunner "$@"

然后保存/退出并从shell运行grails帮助.这是我的输出

1...
2...dirname is /home/zharvey/.gvm/grails/current/bin

最后一行输出(“2 … dirname is …”)暂停2秒,然后我的屏幕清除(好像我发出了一个清除命令),然后我的提示重新出现.在任何时候我的实际命令(grails help)实际上都不会执行或生成输出.所以似乎错误存在的确切行是:

. "$DIRNAME/startGrails"

这条线甚至在做什么,为什么会导致脚本失败?

我的问题

>有人可以确认这实际上是Grails或GVM错误,而不是我安装错误的情况吗?
>最重要的是,有人可以告诉我我可以做些什么来解决这个问题并让Grails尽可能快地运行起来?

我想通过一些(非常痛苦的)调试来解决这个问题.

在GRAILS_HOME / bin / startGrails(POSIX脚本)中,有一行检查JAVA_HOME是否设置正确.

我没有以推荐的方式安装我的JDK.我不喜欢使用apt-get为我配置Java.我喜欢自己下载JDK并自己将JAVA_HOME添加到PATH.这是问题的根源.

由于JAVA_HOME没有在我的Ubuntu机器上正确设置(因为我选择了手动/劝阻方法而不是apt-get方法),startGrails脚本失败了(默默地提醒你,拜托Grails团队……)因为它无法访问JAVA_HOME:

if [ -z "$JAVA_HOME" ] ; then
    die "JAVA_HOME environment variable is not set"

所以我把它改成了:

if [ -z "$JAVA_HOME" ] ; then
    export JAVA_HOME="<value of my $JAVA_HOME var as defined in ~/.bashrc>"

我要离开这个,因为我显然不是唯一遇到此事的人.

猜你在找的Bash相关文章