如何在设置环境变量后修复无效的标识符错误?
我正在尝试在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
。
我怀疑你试图做第三件事,但使用错误的语法。 可能产生错误的四个常见错误,如您所看到的:
-
使用空格而不是
=
。export NAME value
不正确; 然后将value
解释为要导出的后续变量的名称。(这是因为
export NAME1 NAME2
是导出多个变量的正确语法。) -
在
=
周围放置空格。 在许多编程语言中,大多数时候用空格填充运算符都是有效和风格上的首选。 但是要为shell脚本中的变量赋值(或者您发出shell命令的其他情况),这是不允许的。NAME = value
(在export
命令中或其他方式)将不起作用; 你必须使用NAME=value
。(
export NAME = value
尝试导出名为NAME
,=
和value
。幸运的是,这似乎永远无法成功,因为尝试导出名为=
的变量是一种语法错误。相反,export NAME= value
似乎有效,但是不为NAME
赋值 – 而是,它将空的零长度字符串分配给NAME
并导出它,并单独导出变量value
。两者都是常见的错误。) -
用空格分隔变量值的部分。 环境变量可以包含空格,但实际上它们很少用作环境变量中的字段分隔符。 当单个变量故意包含多个路径时,通常
:
用于分隔它们。 -
分配给变量时不引用空格。 有时环境变量的值应该包含空格。 例如,它可能是真正包含空格的目录的名称。 在这种情况下,有必要引用任何空格。
一种方法是在它们之前加上
\
。 请参阅如何保护传递给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