Как исправить ошибку «неверный идентификатор» после установки переменных среды?

Я пытаюсь настроить cocos2dx в Ubuntu 14.04 LTS, но после установки переменных среды (в .bashrc) я получаю эту ошибку:

bash: export: dev/cocos2d-x-3.2/tools/cocos2d-console/bin': not a valid identifier 
bash: export:/home/john/android': not a valid identifier 
bash: export: dev/android-ndk-r10b': not a valid identifier 
bash: export:dev/adt-bundle-linux-x86_64-20140702/sdk': not a valid identifier

И я не знаю, что делать чтобы исправить это.

13
задан 20 December 2018 в 00:58

4 ответа

, но после установки переменных среды

похоже, что вы сделали это неправильно.

Полученные вами ошибки означают, что пути (например, / home / john / android ) используются как имена переменных, а не как присвоенные им значения .

  • Правильный синтаксис для присвоения переменной - ] ИМЯ = значение .
  • Правильный синтаксис для экспорта переменной (с любым значением, если оно уже было присвоено): ИМЯ экспорта .
  • Правильный синтаксис для назначения и одновременно экспортировать переменную (с присвоенным значением) export NAME = value .

Я подозреваю, что вы пытаетесь сделать третье действие, но используете неправильный синтаксис. Пять распространенных ошибок, которые могут привести к ошибкам, подобным тому, что вы видите:

  1. Использование пробелов вместо = . значение экспорта NAME неверно; значение затем интерпретируется как имя следующей переменной для экспорта.

    (Это происходит потому, что экспорт ИМЯ1 ИМЯ2 является правильным синтаксисом для экспорта нескольких переменных.)

  2. Пробелы вокруг = . Во многих языках программирования допустимо и стилистически предпочтительно дополнять операторы пробелами большую часть времени. Но присвоение значения переменной в сценарии оболочки (или в другой ситуации, когда вы вводите команды оболочки), это запрещено. NAME = значение (в команде export или иначе) не будет работать; необходимо использовать NAME = значение .

    ( export NAME = value пытается экспортировать переменные с именем NAME , = и value . К счастью, это никогда не приводит к успеху в автоматическом режиме, потому что попытка экспорта переменной с именем = является синтаксической ошибкой. В отличие от export NAME = value будет работать, но не присваивает значение для ИМЯ - вместо этого присваивает пустой, ноль-длина строки в ИМЯ и экспортирует ее, а также отдельно экспортирует значение переменной . Оба являются распространенными ошибками.)

  3. Разделение частей значения переменной пробелами. Переменные среды могут содержать пробелы, но на практике они редко используются в качестве разделителей полей в переменных среды. Когда одна переменная намеренно содержит несколько путей, обычно используется : для их разделения.

  4. Отсутствие кавычек при присвоении переменных. Иногда предполагается, что значение переменной окружения содержит пробел. Например, это может быть имя каталога, действительно содержащего пробел. В этом случае необходимо заключать в кавычки любые пробелы.

    Один из способов сделать это - поставить перед ними \ . См. Как я могу защитить круглые скобки, переданные в команду cd? и Невозможно удалить файл для получения информации о других способах - методы, представленные в ответах, применимы, хотя ни один из вопросов не является конкретным о назначении переменных среды.

    Например, вот несколько способов экспортировать переменную среды SILLYPATH со значением / home / ek / silly name / bin :

     экспорт SILLYPATH = / home / ek / silly \ name / bin
     
     экспорт SILLYPATH = '/ home / ek / глупое имя / bin'
     
     экспорт SILLYPATH = "/ home / ek / глупое имя / bin"
     

    Часто, когда папка, которую вы должны использовать в оболочке или назначать широко используемой переменной среды, содержит пробел, ее можно переименовать. (Но иногда это непрактично или нежелательно.)

  5. Назначение и / или экспорт переменной, когда вообще ничего не нужно делать. Это своего рода мета-ошибка; конкретная техническая проблема часто является одной из вышеперечисленных, но решение состоит в том, чтобы избавиться от проблемной строки или какой-либо ее части, а не исправлять ее. Разумеется, не удаляйте код из .bashrc без разбора. Но экспорт мог быть добавлен случайно, или может непреднамеренно содержать больше кода, чем предполагалось. Например, предположим, что вы хотели написать:

     echo 'export PATH = ~ / some.bin: "$ PATH"' >> ~ / .bashrc;  .  ~ / .bashrc
     

    Это должно быть добавлено к .bashrc , а затем повторно загружено. Но предположим, что вместо этого вы написали:

     echo 'export PATH = ~ / some.bin: "$ PATH".  ~ / .bashrc '>> ~ / .bashrc # НЕПРАВИЛЬНО! 

    Тогда ваша команда export не просто экспортирует увеличенное значение PATH , но также попытается экспортировать переменные названный . и / home / ваше-имя пользователя / .bashrc , что вам не нужно. Поскольку они содержат символы, запрещенные в именах переменных, вы будете получать сообщение об ошибке каждый раз при запуске новой интерактивной оболочки bash.

    Чтобы избежать этой проблемы, я предлагаю отредактировать .bashrc в редакторе ( например, nano ~ / .bashrc , gedit ~ / .bashrc ) вместо перенаправления вывода в конец с помощью >> .

Я подозреваю этой информации может быть достаточно для того, чтобы найти и исправить ошибку в вашем файле .bashrc . Если вам нужна дополнительная помощь, вы, конечно же, должны опубликовать полное содержимое этого файла для анализа. (Это только совпадение, что ваша проблема оказалась достаточно часто встречающейся и с достаточно прозрачным сообщением об ошибке, чтобы дать общий ответ, подобный этому.)

17
ответ дан 20 December 2018 в 00:58

Убедитесь, что вы используете:

export ENV_VARIABLE

Вместо:

export $ENV_VARIABLE

В противном случае , вы пытаетесь экспортировать значение переменной, а не саму переменную, поэтому вы получите эту ошибку.

6
ответ дан 20 December 2018 в 00:58
  • 1
    Да исправляют его, отбивающий тогда переписывает! – Ramesh Chand 6 February 2016 в 18:09

Удалите пробелы и знак доллара . Например, это работает точно так же, как вы можете установить модуль настроек django на веб-сервере через SSH, то есть:

export DJANGO_SETTINGS_MODULE=myapp.settings
1
ответ дан 20 December 2018 в 00:58
  • 1
    Миниатюрный объем исследования (моя вторая ссылка) мог бы привести ту, по крайней мере, просматривать необходимую ссылку выше обсуждения, почему исследователи NTP рекомендовали обновление; этот бит, например, кажется, обращается к вопросу, который задает часть Угрозы и Анализа рисков Вашего ума: " нападения могут использоваться, чтобы шпионить на зашифрованном трафике или обойти важные меры безопасности, такие как спецификация DNSSEC, предотвращающая вмешательство записей системы доменных имен. Большая часть беспокоящегося сценария включает шифрование HTTPS обхода, вынуждая компьютер принять сертификат " безопасности транспортного уровня с истекшим сроком; – munr0 6 February 2016 в 12:31

Я видел это довольно часто, когда вы копируете что-то с кавычками (из Интернета) и обновляете среду или файл bashrc.

Хорошим местом для начала было бы просто вручную ввести кавычки в вставленное содержание.

0
ответ дан 7 October 2019 в 01:04

Другие вопросы по тегам:

Похожие вопросы: