在 oh-my-zsh 的升级工具中,我找到了这一行(第 2 行):
current_path=${current_path/ /\\ }
它做了什么?
此外,这条线适用于mac,但在我的ubuntu服务器上它输出一个错误说:
.oh-my-zsh/tools/upgrade.sh: 2: .oh-my-zsh/tools/upgrade.sh: Bad substitution
在 Ubuntu 上更新它
cd ~/.oh-my-zsh
bash ~/.oh-my-zsh/tools/upgrade.sh
请参阅手册中的参数扩展。
${name/pattern/repl} ${name//pattern/repl} Replace the longest possible match of pattern in the expansion of parameter name by string repl. The first form replaces just the first occurrence, the second form all occurrences.
本质上,上面所做的就是在${current_path}
.
请注意,POSIX 未指定此语法(有关更多信息,请参见此处),但所有当前和版本bash
都支持它。该错误表明您没有在您认为自己执行的外壳下运行该工具(不支持它的外壳)。ksh
zsh
Bad substitution
upgrade.sh
该行将反斜杠转义$current_path
变量中的第一个空格。并非所有 shell 都支持这种类型的替换,这就是它在 Ubuntu 上失败的原因。
据我所知,这条线没有充分的理由存在。如果在必要时转义空白,即使有效,该方法也是不够的。更糟糕的是,因为该变量的唯一后续使用将它放在双引号中,并且空格的反斜杠转义实际上会破坏它。
我设法使用命令进行更新:
cd ~/.oh-my-zsh
ggpull
#or
git pull origin master