在我的Ubuntu 13中,我编辑了我的.bashrc,添加了一个环境路径:
export OGRE_ANDROID_ROOT=/home/piperoman/Librerias/Ogre\ Android\ SDK
如果我回显变量,它可以正常工作,但是当我尝试在makefile中使用它时,它没有。我已经使用cd
命令进行了测试,结果如下:
$ echo $OGRE_ANDROID_ROOT
/home/piperoman/Librerias/Ogre Android SDK
$ cd $OGRE_ANDROID_ROOT
bash: cd: /home/piperoman/Librerias/Ogre: No such file or directory
为什么echo
有效,但我不能正确地使用命令?
答案 0 :(得分:9)
简答:Word-splitting。
当你有这个
export OGRE_ANDROID_ROOT=/home/piperoman/Librerias/Ogre\ Android\ SDK
环境变量包含“/ home / piperoman / Librerias / Ogre Android SDK”。
如果您使用它而不用引号括起来,Bash会根据IFS
环境变量将字符串拆分为单词 - 默认选项卡,空格和换行符。
所以
cd $OGRE_ANDROID_ROOT
相当于
cd "/home/piperoman/Librerias/Ogre" "Android" "SDK"
所以你应该引用它,即"$OGRE_ANDROID_ROOT"
答案 1 :(得分:3)
尝试
cd "$OGRE_ANDROID_ROOT"
带引号。
答案 2 :(得分:2)
只需添加.bashrc
中没有反斜杠的行:
export OGRE_ANDROID_ROOT="/home/piperoman/Librerias/Ogre Android SDK"
然后在需要cd
时使用引号来包装变量:
cd "$OGRE_ANDROID_ROOT"
使用export MYT="/home/me/test/my test/"
答案 3 :(得分:1)
这是因为文件夹名称之间是空格。在linux中,这些空格通常不会被使用,因为它们不被识别为单个文件夹。
例如
$ mkdir hello\ world // will create a folder named hello world
$ cd hello\ world // go in to the created folder
$ pwd // display the directory name
这将显示为hello> space<世界
因此环境可用$ OGRE_ANDROID_ROOT设置为/ home / piperoman / Librerias / Ogre而不是/ home / piperoman / Librerias / Ogre Android SDK
要解决此错误,请重命名该文件夹,以便删除空格