使用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为什么我的变量有问题吗?
最佳答案
分词发生在变量扩展之后。来自man bash
:
Shell扫描参数扩展,命令替换和算术扩展的结果,这些结果在双引号中未出现,以进行词拆分。
Shell将IFS的每个字符视为定界符,并使用这些字符作为字段终止符将其他扩展的结果分成单词。
正确的方法是使用双引号:
export TUTORING="$WINHOME/Desktop/Coding Projects/Tutoring/"
cd "$TUTORING"
关于cygwin - cd:参数太多-空格是否正确转义+引号?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54893108/