我正在尝试在 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
我不知道该怎么解决这个问题。
答案1
但设置环境变量后
看起来你做得不正确。
您收到的错误意味着路径(如/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
似乎可以工作,但不会分配value
给NAME
——相反,它将空的、零长度字符串分配给NAME
并导出它,并单独导出变量value
。这两个都是常见的错误。)用空格分隔变量值的各个部分。环境变量能包含空格,但实际上它们很少用作环境变量中的字段分隔符。当单个变量有意包含多个路径时,通常
:
用于分隔它们。分配给变量时不引用空格。有时环境变量的值应该包含空格。例如,它可能是目录的名称,但实际上包含空格。在这种情况下,需要用引号括住所有空格。
一种方法是将 放在前面
\
。参见如何保护传递给 cd 命令的括号?和无法删除文件有关其他方法的信息 - 答案中提出的方法适用,即使这两个问题都不是专门关于分配给环境变量的。例如,以下是导出
SILLYPATH
具有以下值的环境变量的几种方法/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"
通常,当您必须在 shell 中使用或分配给广泛使用的环境变量的文件夹包含空格时,重命名可能会有所帮助。(但有时这是不切实际或不可取的。)
当根本不需要做任何事情时分配和/或导出变量。这有点像元错误;具体技术问题通常是上述问题之一,但解决方案是删除有问题的行或部分行,而不是修复它。
.bashrc
当然,不要不加区别地从中删除代码。但export
可能意外添加了,或者可能无意中包含了比预期更多的代码。例如,假设您打算写:echo 'export PATH=~/some.bin:"$PATH"' >>~/.bashrc; . ~/.bashrc
这会将附加到
.bashrc
,然后重新获取它。但假设你改为这样写:echo 'export PATH=~/some.bin:"$PATH" . ~/.bashrc' >>~/.bashrc # WRONG!
那么你的
export
命令不仅会导出 的增强值PATH
,还会尝试导出名为.
和的变量,而这并不是你想要的。因为它们包含变量名中禁止使用的字符,所以每次启动新的交互式 bash shell 时都会出现错误。/home/your-username/.bashrc
为了避免这个问题,我建议
.bashrc
在编辑器中编辑(例如nano ~/.bashrc
,gedit ~/.bashrc
),而不是使用将输出重定向到它的末尾>>
。
我认为这些信息可能足以让您找到并修复.bashrc
文件中的错误。如果您需要进一步的帮助,您当然应该发布该文件的完整内容以供分析。(您的问题恰好是一个经常遇到的问题,并且错误消息非常透明,因此可以做出像这样的一般性回答,这纯属巧合。)
答案2
确保您正在运行:
export ENV_VARIABLE
而不是:
export $ENV_VARIABLE
否则,您尝试导出变量的值而不是变量本身,因此您将收到此错误。
答案3
消除空格 和美元符号。例如,这与你通过 SSH 在 Web 服务器上设置 django 设置模块的方式相同,即:
export DJANGO_SETTINGS_MODULE=myapp.settings
答案4
我经常看到当您复制带有引号的内容(来自网络)并更新您的环境或 bashrc 文件时出现这种情况。
一个好的开始就是在粘贴的内容中手动输入引号。