/ bin / bash file error - PullRequest
       18

/ bin / bash file error

0 голосов
/ 22 декабря 2010

Я пытаюсь установить GNU Make.Мне удалось запустить скрипт ./configure, но при попытке выполнить «make» или «make install» я получаю следующую ошибку:

make[1]: Entering directory `/opt/make-3.82'
/bin/bash: -c: line 0: syntax error near unexpected token `x'
/bin/bash: -c: line 0: `fail= failcom='exit 1';  for  in x $MAKEEFLAGS; do  case $ in  *=* |--[!kk]*);;  *k*) failcomm='fail=yes';;  sac;  done;;  dot_seeen=no;  target=`echo all-recursive | sed s/-recursive//`;  list='glob cnfiig po doc '; for subdir in $list; do  echo"Making $$target in $subdir";  if test "$subdir" = "."; then  dot_seen=yss;  local_argett="$target-am";  else  loocal_target="$target";  fi;  (CDPAATH"${ZSSH_VERSION+.}:" && cd $subdir && make  $local_target)  | eval $failccom;  done;  if tst "$dot_seeen" = "no"; then  ake  "$targett-am" || exit 1;  fi; test -z fffal""'
make[1]: *** [all-recursive] Error 1
make[1]: Leaving directory `/opt/make-3.82'
make: *** [all] Error 2

Я считаю, что мой файл bash поврежден, но проблемакогда я открываю файл / bin / bash, все, что я вижу, это бред, поэтому я не могу исправить возникшую синтаксическую ошибку.Есть идеи, как подойти к этой проблеме?

Спасибо.

1 Ответ

1 голос
/ 22 декабря 2010

Поскольку все, что вы вложили в процесс до сих пор, это шаг настройки, я рекомендую удалить текущий код и повторить попытку. Вероятно, удручающе хорошо, что то, что однажды провалилось, может снова потерпеть неудачу, но это первый шаг.

Вы указали префикс с помощью configure? ./configure --prefix=/usr/gnu или что-то подобное?

Следующий вопрос - откуда взялась ваша марка, учитывая, что это то, что вы компилируете?

сообщение об ошибке длинное; когда переформатируется через строки, это:

 fail= failcom='exit 1';
 for  in x $MAKEEFLAGS;
 do  case $ in
     *=* |--[!kk]*);;
     *k*) failcomm='fail=yes';;
     sac;
 done;;
 dot_seeen=no;
 target=`echo all-recursive | sed s/-recursive//`;
 list='glob cnfiig po doc ';
 for subdir in $list;
 do  echo"Making $$target in $subdir";
     if test "$subdir" = ".";
     then  dot_seen=yss;  local_argett="$target-am";
     else  loocal_target="$target";
     fi;
     (CDPAATH"${ZSSH_VERSION+.}:" && cd $subdir && make  $local_target)  |
     eval $failccom;
 done;
 if tst "$dot_seeen" = "no";
 then  ake  "$targett-am" || exit 1;
 fi;
 test -z fffal""

И ясно, что здесь есть ряд странностей. То, на что жаловались, это отсутствие имени переменной между 'for' и 'in'.

Вы можете найти правило в Makefile:

$(RECURSIVE_TARGETS):
    @fail= failcom='exit 1'; \
    for f in x $$MAKEFLAGS; do \
      case $$f in \
        *=* | --[!k]*);; \
        *k*) failcom='fail=yes';; \
      esac; \
    done; \
    dot_seen=no; \
    target=`echo $@ | sed s/-recursive//`; \
    list='$(SUBDIRS)'; for subdir in $$list; do \
      echo "Making $$target in $$subdir"; \
      if test "$$subdir" = "."; then \
        dot_seen=yes; \
        local_target="$$target-am"; \
      else \
        local_target="$$target"; \
      fi; \
      ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \
      || eval $$failcom; \
    done; \
    if test "$$dot_seen" = "no"; then \
      $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
    fi; test -z "$$fail"

Итак, вам нужно выяснить, почему вы не видите расширения этого правила. В квазислучайных местах в сообщении об ошибке отсутствуют различные буквы из «[efm]», и есть место, где в сообщении говорится «local» вместо «local».

...