Como corrigir erro “not a valid identifier” depois de configurar as variáveis de ambiente?

7

Estou tentando configurar o cocos2dx no Ubuntu 14.04 LTS, mas depois de definir as variáveis ambientais (em .bashrc ) eu começo a receber este erro:

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

E eu não sei o que fazer para corrigir isso.

    
por Carlos Campos 29.09.2014 / 07:35

3 respostas

11

but after setting the environmental variables

Parece que você não fez isso corretamente.

Os erros que você está recebendo significam que os caminhos (como /home/john/android ) estão sendo usados como os nomes das variáveis, em vez de como os valores atribuídos a eles .

  • A sintaxe correta para atribuir uma variável é NAME=value .
  • A sintaxe correta para exportar uma variável (com qualquer valor, se houver, já foi atribuída) é export NAME .
  • A sintaxe correta para atribuir e exportar uma variável (com o valor atribuído) ao mesmo tempo é export NAME=value .

Eu suspeito que você está tentando fazer a terceira coisa, mas usando a sintaxe errada. Quatro erros comuns que podem gerar erros, como o que você está vendo, são:

  1. Usando espaços em vez de = . export NAME value está incorreto; value é então interpretado como o nome de uma variável subsequente para exportar.

    (Isso acontece porque export NAME1 NAME2 é a sintaxe correta para exportar múltiplas variáveis.)

  2. Colocando espaços em torno de = . Em muitas linguagens de programação, é válido e estilisticamente preferido agrupar operadores com espaços na maior parte do tempo. Mas, para atribuir um valor a uma variável em um script de shell (ou outra situação em que você esteja emitindo comandos do shell), isso não é permitido. NAME = value (em um comando export ou outro) não funcionará; você deve usar NAME=value .

    ( export NAME = value tenta exportar as variáveis chamadas NAME , = e value . Felizmente, isso nunca parece ter êxito silenciosamente porque a tentativa de exportar uma variável chamada = é um erro de sintaxe.export NAME= value parecerá funcionar, mas não atribui value a NAME - em vez disso, atribui a cadeia vazia de comprimento zero a NAME e a exporta, e exporta separadamente a variável value . erros comuns.)

  3. Separando partes do valor da variável com espaços. As variáveis de ambiente can contêm espaços, mas na prática raramente são usadas como separadores de campos em variáveis de ambiente. Quando uma única variável contém intencionalmente vários caminhos, geralmente : é usado para separá-los.

  4. Não citar espaços ao atribuir variáveis. Às vezes, o valor de uma variável de ambiente deve conter um espaço. Por exemplo, pode ser o nome de um diretório que realmente contenha um espaço. Nesse caso, é necessário citar qualquer espaço.

    Uma maneira de fazer isso é precedê-los com \ . Veja Como posso proteger os parênteses transmitidos a um comando cd? e Não é possível excluir o arquivo para obter informações sobre outras formas - os métodos apresentados nas respostas aplicar, mesmo que nenhuma das questões seja especificamente sobre a atribuição a variáveis de ambiente.

    Por exemplo, aqui estão algumas maneiras de exportar a variável de ambiente SILLYPATH com o valor /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"

    Geralmente, quando uma pasta que você deve usar em um shell ou atribui a uma variável de ambiente amplamente usada contém um espaço, ela pode se beneficiar da renomeação. (Mas às vezes isso é impraticável ou indesejável.)

Eu suspeito que isso seja informação suficiente para você encontrar e corrigir o bug no seu arquivo .bashrc . Se você precisar de mais ajuda, você deve postar o conteúdo completo desse arquivo para análise. (É apenas por coincidência que o seu problema foi encontrado com freqüência e com uma mensagem de erro suficientemente transparente, para tornar possível uma resposta geral como essa).

    
por Eliah Kagan 06.10.2014 / 16:54
4

Verifique se você está executando:

export ENV_VARIABLE

Em vez de:

export $ENV_VARIABLE

Caso contrário, você está tentando exportar o valor da variável em vez da própria variável, portanto, você obterá este erro.

    
por Lambda Pi Omega 07.01.2016 / 18:18
0

Elimine espaços e o cifrão. Por exemplo, isso funciona da mesma maneira que você poderia definir um módulo de configurações do django em um servidor web via SSH, por exemplo:

export DJANGO_SETTINGS_MODULE=myapp.settings
    
por Patrick Mutuku 13.07.2017 / 00:56