cd:太多参数-空格正确转义+引用?

时间:2019-02-26 19:55:33

标签: cygwin

使用cygwin终端,我的.bashrc文件中包含以下内容:

export WINHOME="/cygdrive/c/Users/userName"
export TUTORING="$WINHOME/Desktop/Coding\ Projects/Tutoring/"

当我打开cygwin时,会发生以下情况:

$ cd $TUTORING
-bash: cd: too many arguments

所以我尝试了:

$ echo $TUTORING
/cygdrive/c/Users/userName/Desktop/Coding\ Projects/Tutoring

复制粘贴回显的输出:

cd /cygdrive/c/Users/userName/Desktop/Coding\ Projects/Tutoring 

这似乎可行。知道cd为什么我的变量有问题吗?

2 个答案:

答案 0 :(得分:2)

分词在变量扩展后发生。来自man bash

  

shell扫描参数扩展,命令替换和算术扩展的结果,这些结果在双引号中没有出现,以进行词拆分。

     

shell将IFS的每个字符视为定界符,并使用这些字符作为字段终止符将其他扩展结果拆分为单词。

正确的方法是使用双引号:

export TUTORING="$WINHOME/Desktop/Coding Projects/Tutoring/"
cd "$TUTORING"

答案 1 :(得分:1)

使用双引号将整个路径转义。

由于路径中有空格,所以cd命令认为有几个参数