Возможно $JAVA_HOME
не установлено. Неназначенная переменная обычно расширяется до пустой строки, так что это:
if [ ! $JAVA_HOME ] || [ $JAVA_HOME == "" ]
эквивалентно этому:
if [ ! ] || [ == "" ]
, что является синтаксической ошибкой. ([
- это другое имя команды test
; обычно это символическая ссылка.)
Попробуйте заключить в кавычки имя переменной:
if [ "$JAVA_HOME" == "" ]
И если вы установите $JAVA_HOME
в ответ на приглашение, вы, вероятно, захотите export
. (На самом деле я не уверен в этом; зависит ли java
от установленной $JAVA_HOME
)
EDIT
Хорошо, похоже, $JAVA_HOME
установлено.
Для команды test
(или [
) оператор равенства строк равен =
, а не ==
.
Попробуйте:
if [ "$JAVA_HOME" = "" ]
EDIT2
Это:
if [ -z "$JAVA_HOME" ]
, вероятно, лучше (см. Ответ @ n.m).