设置环境变量后如何修复“不是有效标识符”错误?

设置环境变量后如何修复“不是有效标识符”错误?

我正在尝试在 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

我怀疑您正在尝试做第三件事,但使用了错误的语法。可能导致您看到的错误的五个常见错误是:

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

    (发生这种情况是因为export NAME1 NAME2 导出多个变量的正确语法。

  2. 在 周围添加空格=在许多编程语言中,大多数情况下,用空格填充运算符是有效的,而且在风格上也更可取。但在 shell 脚本中(或发出 shell 命令的其他情况下),要为变量赋值,这是不允许的。NAME = value(在export命令中或其他地方)不起作用;您必须使用NAME=value

    export NAME = value尝试导出名为NAME=和 的变量value。幸运的是,这似乎从未默默成功,因为尝试导出名为 的变量=是语法错误。相反,export NAME= value似乎可以工作,但不会分配valueNAME——相反,它将空的、零长度字符串分配给NAME并导出它,并单独导出变量value。这两个都是常见的错误。)

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

  4. 分配给变量时不引用空格。有时环境变量的值应该包含空格。例如,它可能是目录的名称,但实际上包含空格。在这种情况下,需要用引号括住所有空格。

    一种方法是将 放在前面\。参见如何保护传递给 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 中使用或分配给广泛使用的环境变量的文件夹包含空格时,重命名可能会有所帮助。(但有时这是不切实际或不可取的。)

  5. 当根本不需要做任何事情时分配和/或导出变量。这有点像元错误;具体技术问题通常是上述问题之一,但解决方案是删除有问题的行或部分行,而不是修复它。.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 ~/.bashrcgedit ~/.bashrc),而不是使用将输出重定向到它的末尾>>

我认为这些信息可能足以让您找到并修复.bashrc文件中的错误。如果您需要进一步的帮助,您当然应该发布该文件的完整内容以供分析。(您的问题恰好是一个经常遇到的问题,并且错误消息非常透明,因此可以做出像这样的一般性回答,这纯属巧合。)

答案2

确保您正在运行:

export ENV_VARIABLE

而不是:

export $ENV_VARIABLE

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

答案3

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

export DJANGO_SETTINGS_MODULE=myapp.settings

答案4

我经常看到当您复制带有引号的内容(来自网络)并更新您的环境或 bashrc 文件时出现这种情况。

一个好的开始就是在粘贴的内容中手动输入引号。

相关内容