Estou tentando configurar o cocos2dx no Ubuntu 14.04 LTS, mas depois de definir as variáveis ambientais (in .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 consertar isso.
Respostas:
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, e não como os valores atribuídos a elas.NAME=value
.export NAME
.export NAME=value
.Eu suspeito que você está tentando fazer a terceira coisa, mas usando sintaxe errada. Cinco erros comuns que podem produzir erros como o que você está vendo são:
Usando espaços em vez de
=
.export NAME value
está incorreto;value
é então interpretado como o nome de uma variável subsequente a ser exportada.(Isso acontece porque
export NAME1 NAME2
é a sintaxe correta para exportar várias variáveis.)Colocando espaços ao redor
=
. Em muitas linguagens de programação, é válido e estilisticamente preferido ocupar os operadores com espaços a 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 de shell), isso não é permitido.NAME = value
(em umexport
comando ou não) não funcionará; você deve usarNAME=value
.(
export NAME = value
Tenta variáveis de exportação chamadoNAME
,=
evalue
. Felizmente isso nunca parece ter sucesso em silêncio, porque a tentativa de exportar uma variável chamada=
é um erro de sintaxe. Em contrasteexport NAME= value
aparecerá ao trabalho, mas não atribuivalue
aNAME
--instead, ele atribui o vazio, cadeia de comprimento zero paraNAME
e exporta-a e exporta separadamente a variávelvalue
. Ambos são erros comuns.)Separando partes do valor da variável com espaços. As variáveis de ambiente podem conter espaços, mas na prática raramente são usadas como separadores de campo em variáveis de ambiente. Quando uma única variável contém intencionalmente vários caminhos, geralmente
:
é usada para separá-los.Não citando espaços ao atribuir a 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 contém um espaço. Nesse caso, é necessário citar qualquer espaço.
Uma maneira de fazer isso é precedê-los
\
. Consulte Como proteger parênteses passados para um comando cd? e Não é possível excluir o arquivo para obter informações de outras maneiras - os métodos apresentados nas respostas se aplicam, mesmo que nenhuma pergunta 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
:Freqüentemente, quando uma pasta que você deve usar em um shell ou atribuir a uma variável de ambiente amplamente usada contiver um espaço, poderá ser renomeada. (Mas às vezes isso é impraticável ou indesejável.)
Atribuir e / ou exportar uma variável quando nada precisava ser feito. Isso é uma espécie de meta-erro; o problema técnico específico geralmente é um dos itens acima, mas a solução é livrar-se da linha ofensiva, ou de parte dela, em vez de corrigi-la. Não remova indiscriminadamente o código
.bashrc
, é claro. Mas umexport
pode ter sido adicionado acidentalmente ou, inadvertidamente, pode ter mais código do que o pretendido. Por exemplo, suponha que você quis escrever:Isso seria anexado e
.bashrc
, em seguida, re-originado. Mas suponha que você tenha escrito:Então, seu
export
comando não apenas exportaria um valor aumentado dePATH
, mas também tentaria exportar variáveis nomeadas.
e , que não é o que você deseja. Como eles contêm caracteres proibidos em nomes de variáveis, você receberá um erro sempre que iniciar um novo shell bash interativo./home/your-username/.bashrc
Para evitar este problema, sugiro edição
.bashrc
em um editor (por exemplo,nano ~/.bashrc
,gedit ~/.bashrc
), em vez de redireccionar a saída para o fim de tudo com>>
.Suspeito que essas informações sejam suficientes para que você encontre e corrija o erro em seu
.bashrc
arquivo. Se precisar de mais ajuda, é claro que você deve postar todo o conteúdo desse arquivo para análise. (É apenas por coincidência que o seu problema foi encontrado com freqüência suficiente e com uma mensagem de erro suficientemente transparente para possibilitar uma resposta geral como essa.)fonte
Verifique se você está executando:
Ao invés de:
Caso contrário, você está tentando exportar o valor da variável em vez da própria variável, para obter esse erro.
fonte
Elimine os espaços e o cifrão. Por exemplo, isso funciona da mesma maneira que você pode definir um módulo de configurações de django em um servidor Web via SSH, ou seja:
fonte
Vi esse ocorrendo com bastante frequência quando você copia algo com vírgulas invertidas (da Web) e atualiza seus ambientes ou arquivo bashrc.
Um bom lugar para começar seria digitar manualmente as vírgulas invertidas no conteúdo colado.
fonte