bash: экспорт не действительный идентификатор [dубликат]

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

И я не знаю, что сделать это.

6
задан 6 October 2014 в 20:01

6 ответов

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

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

Ошибки, которые вы получаете, означают, что пути (например, /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 - вместо этого он присваивает пустую строку нулевой длины NAME и экспортирует ее, а отдельно экспортирует переменную value. Оба являются распространенными ошибками. ) Разделение частей значения переменной пробелами. Переменные среды могут содержать пробелы, но на практике они редко используются в качестве разделителей полей в переменных среды. Если одна переменная намеренно содержит несколько путей, обычно : используется для их разделения. Не цитирование пробелов при присваивании переменных. Иногда значение переменной среды должно содержать пробел. Например, это может быть имя каталога, в котором действительно содержится пробел. В этом случае необходимо процитировать любые пробелы. Один из способов сделать это - предшествовать им \. См. Как защитить круглые скобки, переданные команде 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. Если вам нужна дополнительная помощь, вы должны, конечно, разместить полное содержимое этого файла для анализа. (Только по совпадению ваша проблема оказалась достаточно часто встреченной и с достаточно прозрачным сообщением об ошибке, чтобы сделать общий ответ таким, как этот.)

10
ответ дан 18 July 2018 в 11:47

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

export ENV_VARIABLE

Вместо:

export $ENV_VARIABLE

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

3
ответ дан 18 July 2018 в 11:47

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

export DJANGO_SETTINGS_MODULE=myapp.settings
0
ответ дан 18 July 2018 в 11:47
, но после установки переменных окружения

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

Ошибки, которые вы получаете, означают, что пути (например, /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 - вместо этого он присваивает пустую строку нулевой длины NAME и экспортирует ее, а отдельно экспортирует переменную value. Оба являются распространенными ошибками. ) Разделение частей значения переменной пробелами. Переменные среды могут содержать пробелы, но на практике они редко используются в качестве разделителей полей в переменных среды. Если одна переменная намеренно содержит несколько путей, обычно : используется для их разделения. Не цитирование пробелов при присваивании переменных. Иногда значение переменной среды должно содержать пробел. Например, это может быть имя каталога, в котором действительно содержится пробел. В этом случае необходимо процитировать любые пробелы. Один из способов сделать это - предшествовать им \. См. Как защитить круглые скобки, переданные команде 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. Если вам нужна дополнительная помощь, вы должны, конечно, разместить полное содержимое этого файла для анализа. (Только по совпадению ваша проблема оказалась достаточно часто встреченной и с достаточно прозрачным сообщением об ошибке, чтобы сделать общий ответ таким, как этот.)

10
ответ дан 24 July 2018 в 19:51
  • 1
    Спасибо! Такой подробный ответ. В моем случае проблема была связана с пространством вокруг = . Некоторое время я боролся с этим. – Rengas 9 April 2016 в 12:08

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

export ENV_VARIABLE

Вместо:

export $ENV_VARIABLE

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

3
ответ дан 24 July 2018 в 19:51

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

export DJANGO_SETTINGS_MODULE=myapp.settings
0
ответ дан 24 July 2018 в 19:51

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

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