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

cd to a path containing spaces stored in a variable in Bash on macOS

我有

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

当我执行 cd $xcd $y 时,出现错误。我不想 cd "$x" 因为

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

任何解决方法?

有一个 shell option 告诉 Bash 检查 cd 的参数是否是包含路径的变量:

shopt -s cdable_vars
y='/dir 2'
cd y

其中 cd y 等同于 cd "$y".

来自手册:

cdable_vars
If this is set, an argument to the cd builtin command that is not a directory is assumed to be the name of a variable whose value is the directory to change to.


bash-completion 的最新版本检查是否设置了 shell 选项并提供 cd 的完整变量名称,但要使其正常工作,shell必须在加载完成之前设置选项。

cd 的默认完成设置是

complete -F _cd -o nospace cd pushd

要为此添加变量完成,已更改为

complete -v -F _cd -o nospace cd pushd