如何在设置环境变量后修复无效的标识符错误?

我正在尝试在Ubuntu 14.04 LTS中设置cocos2dx,但在设置环境变量(在.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 

我不知道如何解决它。

但在设定环境变量后

看起来你没有正确地做到这一点。

你得到的错误意味着路径(如/home/john/android )被用作变量的名称 ,而不是分配给它们的

  • 分配变量的正确语法是NAME=value
  • 导出变量的正确语法(具有任何值,如果有的话,已经分配了它)是export NAME
  • 分配和导出变量(具有指定值)的正确语法是export NAME=value

我怀疑你试图做第三件事,但使用错误的语法。 可能产生错误的四个常见错误,如您所看到的:

  1. 使用空格而不是= export NAME value不正确; 然后将value解释为要导出的后续变量的名称。

    (这是因为export NAME1 NAME2 导出多个变量的正确语法。)

  2. =周围放置空格。 在许多编程语言中,大多数时候用空格填充运算符都是有效和风格上的首选。 但是要为shell脚本中的变量赋值(或者您发出shell命令的其他情况),这是不允许的。 NAME = value (在export命令中或其他方式)将不起作用; 你必须使用NAME=value

    export NAME = value尝试导出名为NAME=value 。幸运的是,这似乎永远无法成功,因为尝试导出名为=的变量是一种语法错误。相反, export NAME= value似乎有效,但是不为NAME赋值 – 而是,它将空的零长度字符串分配给NAME并导出它,并单独导出变量value 。两者都是常见的错误。)

  3. 用空格分隔变量值的部分。 环境变量可以包含空格,但实际上它们很少用作环境变量中的字段分隔符。 当单个变量故意包含多个路径时,通常:用于分隔它们。

  4. 分配给变量时不引用空格。 有时环境变量的值应该包含空格。 例如,它可能是真正包含空格的目录的名称。 在这种情况下,有必要引用任何空格。

    一种方法是在它们之前加上\ 。 请参阅如何保护传递给cd命令的括号? 并且无法删除文件以获取有关其他方式的信息 – 答案中提供的方法适用,即使这两个问题都没有具体涉及分配给环境变量。

    例如,以下是使用值/home/ek/silly name/bin导出环境变量SILLYPATH的几种方法:

     export SILLYPATH=/home/ek/silly\ name/bin 
     export SILLYPATH='/home/ek/silly name/bin' 
     export SILLYPATH="/home/ek/silly name/bin" 

    通常,当您必须在shell中使用或分配给广泛使用的环境变量的文件夹包含空格时,它可能会从重命名中受益。 (但有时这是不切实际或不合适的。)

我怀疑这可能是您找到并修复.bashrc文件中的错误的足够信息。 如果您需要进一步的帮助,您当然应该发布该文件的全部内容以供分析。 (只是巧合的是,你的问题恰好是一个经常遇到的问题,而且有足够透明的错误信息,可以做出像这样的一般答案。)

确保您正在运行:

 export ENV_VARIABLE 

而不是:

 export $ENV_VARIABLE 

否则,您尝试导出变量的值而不是变量本身,因此您将收到此错误。

消除空间 和美元符号。 例如,这与您通过SSH在Web服务器上设置django设置模块的方式相同,即:

 export DJANGO_SETTINGS_MODULE=myapp.settings