使用空格代替=
。 export NAME value
是不正确的; value
然后将其解释为要导出的后续变量的名称。
(这是因为export NAME1 NAME2
是用于导出多个变量正确的语法。)
在周围放置空格=
。在许多编程语言中,大多数情况下使用空格填充运算符既有效又在样式上更受青睐。但是,要在外壳程序脚本中(或其他发出外壳程序命令的情况)为变量分配值,则不允许这样做。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"
通常,当您必须在外壳程序中使用或分配给广泛使用的环境变量的文件夹包含空格时,重命名可能会受益。(但有时这是不切实际或不希望的。)
当根本不需要执行任何操作时,分配和/或导出变量。这是一种元错误。特定的技术问题通常是上述问题之一,但是解决方案是摆脱有问题的线路或其中一部分,而不是加以解决。.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
),而不是输出重定向到它的结束用>>
。