我有
x="/dir 1"
y=/dir\ 2
当我做cd $x
或cd $y
我得到一个错误。我不想做cd "$x"
因为
任何解决方法?
有一个shell option告诉Bash检查cd
的参数是否是包含路径的变量:
shopt -s cdable_vars
y='/dir 2'
cd y
其中cd y
相当于cd "$y"
。
从手册:
cdable_vars
如果设置了此参数,则假定cd
builtin命令不是目录的参数是变量的名称,该变量的值是要更改的目录。
最新版本的bash-completion检查shell选项是否已设置并提供完成cd
的变量名称,但为了使其工作,必须在加载完成之前设置shell选项。
cd
的默认完成设置是
complete -F _cd -o nospace cd pushd
要为此添加变量完成,必须将其更改为
complete -v -F _cd -o nospace cd pushd