6

在我的 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工作,但我无法通过命令正确使用变量?

4

4 回答 4

10

简答:分词

当你有这个

export OGRE_ANDROID_ROOT=/home/piperoman/Librerias/Ogre\ Android\ SDK

环境变量包含“/home/pieroman/Librerias/Ogre Android SDK”。

如果您使用它而不用引号括起来,Bash 将根据IFS环境变量将字符串拆分为单词——默认情况下是制表符、空格和换行符。

所以

cd $OGRE_ANDROID_ROOT

相当于

cd "/home/piperoman/Librerias/Ogre" "Android" "SDK"

所以你应该引用它,即"$OGRE_ANDROID_ROOT"

于 2013-06-19T09:42:17.777 回答
3

尝试

cd "$OGRE_ANDROID_ROOT" 

带引号。

于 2013-06-19T08:57:54.670 回答
3

只需添加.bashrc不带反斜杠的行:

export OGRE_ANDROID_ROOT="/home/piperoman/Librerias/Ogre Android SDK"

然后在需要时使用引号来包装变量cd

cd "$OGRE_ANDROID_ROOT"

经测试export MYT="/home/me/test/my test/"

于 2013-06-19T09:22:33.343 回答
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<world

因此环境变量 $OGRE_ANDROID_ROOT 设置为 /home/pieroman/Librerias/Ogre 而不是 /home/pieroman/Librerias/Ogre Android SDK

要解决此错误,请重命名文件夹,以便删除空格

于 2013-06-19T09:28:12.607 回答