cd到包含存储在macOS上的Bash中的变量中的空格的路径

问题描述 投票:0回答:1

我有

x="/dir 1"
y=/dir\ 2

当我做cd $xcd $y我得到一个错误。我不想做cd "$x"因为

  1. 我不知道哪些变量包含带空格的路径
  2. 这很不方便

任何解决方法?

bash macos cd quoting
1个回答
3
投票

有一个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
© www.soinside.com 2019 - 2024. All rights reserved.