Как исправить ошибку "Неправильный идентификатор" после установки переменных среды?
Я пытаюсь настроить 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,
Я подозреваю, что вы пытаетесь сделать что-то третье, но используете неправильный синтаксис. Четыре распространенные ошибки, которые могут привести к таким ошибкам, как то, что вы видите:
Использование пробелов вместо
=,export NAME valueэто неверно;valueзатем интерпретируется как имя последующей переменной для экспорта.(Это происходит потому, что
export NAME1 NAME2правильный синтаксис для экспорта нескольких переменных.)Расставлять пробелы
=, Во многих языках программирования допустимо и стилистически предпочитать заполнять операторы пробелами в большинстве случаев. Но назначать значение переменной в сценарии оболочки (или в другой ситуации, когда вы вводите команды оболочки), это недопустимо.NAME = value(вexportкоманда или иначе) не будет работать; ты должен использоватьNAME=value,(
export NAME = valueпытается экспортировать переменные с именемNAME,=, а такжеvalue, К счастью, это никогда не происходит молча, потому что попытка экспортировать переменную с именем=это синтаксическая ошибка По сравнениюexport NAME= valueбудет работать, но не назначатьvalueвNAME--instead, он присваивает пустую строку нулевой длиныNAMEи экспортирует его, и отдельно экспортирует переменнуюvalue, Обе распространенные ошибки.)Разделение частей значения переменной пробелами. Переменные среды могут содержать пробелы, но на практике они редко используются в качестве разделителей полей в переменных среды. Когда одна переменная намеренно содержит несколько путей, обычно
:используется для их разделения.Не заключать в кавычки пробелы при назначении переменных. Иногда значение переменной среды должно содержать пробел. Например, это может быть имя каталога, который действительно содержит пробел. В этом случае необходимо указать любые пробелы.
Один из способов сделать это состоит в том, чтобы предшествовать им
\, См. Как я могу защитить скобки, передаваемые команде cd? и Невозможно удалить файл для получения информации о других способах - методы, представленные в ответах, применимы, даже если ни один из вопросов не касается конкретно назначения переменных среды.Например, вот несколько способов экспортировать переменную среды
SILLYPATHсо значением/home/ek/silly name/bin:export SILLYPATH=/home/ek/silly\ name/binexport 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.
Хорошее место для начала было бы просто вручную ввести кавычки в вставленном контенте.