Como corrigir o erro de identificador inválido depois de definir variáveis de ambiente?

6

Estou tentando configurar o cocos2dx no Ubuntu 14.04 LTS, mas após configurar as variáveis ambientais (em .bashrc ), 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

10

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 de 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 variáveis nomeadas NAME , = e value . Felizmente isso nunca parece ter sucesso em silêncio, porque a tentativa de exportar uma variável chamada = é um erro de sintaxe. Em contraste export NAME= value vai aparecer para trabalhar, mas não atribui value para NAME - em vez disso, ele atribui o vazio, cadeia de comprimento zero para NAME e exporta-lo, e separadamente as exportações, a variável value Ambos são. 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 citando 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 é preceder-los com \ . Consulte Como posso proteger parênteses passados para 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 de 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 possa ser 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 uma frequência suficiente, e com uma mensagem de erro suficientemente transparente, para fazer uma resposta geral como esta possível.)

    
por Eliah Kagan 06.10.2014 / 16:54
3

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