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

Я пытаюсь настроить 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

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

5 ответов

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

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

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

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

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

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

    (Это происходит потому, что export NAME1 NAME2 правильный синтаксис для экспорта нескольких переменных.)

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

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

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

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

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

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

    export SILLYPATH=/home/ek/silly\ name/bin
    export SILLYPATH='/home/ek/silly name/bin'
    export SILLYPATH="/home/ek/silly name/bin"

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

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

Убедитесь, что вы работаете:

export ENV_VARIABLE

Скорее, чем:

export $ENV_VARIABLE

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

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

export DJANGO_SETTINGS_MODULE=myapp.settings

Я использовал тире «-» вместо подчеркивания «_» в имени переменной.

      # fails 
$ export MY-NAME="abc"

# success
$ export MY_NAME="abc"

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

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

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