在MacOS中,我创建了名称为空格的目录。当使用bash / Unix命令进行如下所示的导航时,它可以正常工作。
cd /Users/jdoe/"Box Sync"/Professional/"Classes Taken"
pwd
/Users/jdoe/Box Sync/Professional/Classes Taken
cd "/Users/jdoe/Box Sync/Professional/Classes Taken"
pwd
/Users/jdoe/Box Sync/Professional/Classes Taken
当我定义环境变量时如下所示,相同的路径名不起作用。任何人都可以解释为什么它不是
export CLASSES_TAKEN='"/Users/jdoe/Box Sync/Professional/Classes Taken"'
echo $CLASSES_TAKEN
"/Users/jdoe/Box Sync/Professional/Classes Taken"
$ cd $CLASSES_TAKEN
-bash: cd: "/Users/jdoe/Box: No such file or directory
export CLASSES_TAKEN=/Users/jdoe/"Box Sync"/Professional/"Classes Taken"
echo $CLASSES_TAKEN
/Users/jdoe/"Box Sync"/Professional/"Classes Taken"
cd $CLASSES_TAKEN
-bash: cd: /Users/jdoe/"Box: No such file or directory
然而,当我这样做时,它有效:
export CLASSES_TAKEN="/Users/jdoe/Box Sync/Professional/Classes Taken"
cd "$CLASSES_TAKEN"
pwd
/Users/jdoe/Box Sync/Professional/Classes Taken
我的问题是在使用环境变量时如何避免使用引号("$CLASSES_TAKEN"
)。我希望能够说cd $CLASSES_TAKEN
我查了很多帖子,但没有找到问题的答案。
答案 0 :(得分:0)
我强烈反对此,但您可以使cd
的行为与echo
相似,只需使用空格加入多个参数:
cd() { builtin cd "$*"; }
export CLASSES_TAKEN='/Users/jdoe/Box Sync/Professional/Classes Taken'
echo $CLASSES_TAKEN
cd $CLASSES_TAKEN
这可以按照你的描述进行,但有几个陷阱。正确的方法是引用你的变量。