shopt -s cdable_vars 未按预期扩展

shopt -s cdable_vars 未按预期扩展

在我的集群中(我没有根访问权限),我在我的中定义了.bashrc

shopt -s cdable_vars
shopt -s direxpand
export s13=/c13scratch/rudrab

我是以下的所有者/c13scratch/rudrab

ll /c13scratch/ |\grep rudrab
drwxr-xr-x 15 rudrab         users 4.0K Apr 29 23:58 rudrab

现在,我面临着以下几种情况:

  1. cd s1<tab>cd s13<tab>:什么也没发生。
  2. cd $s13<tab>给出:cd $s13<space>
  3. 2之后,如果我使用<backspace>in cd $s13<space>,那么它会扩展为cd /c13scratch/rudrab并且后续选项卡显示其中的子目录/c13scratch/rudrab

我期待cd s13<tab>(没有$符号)完成我的正常操作bash_completion,并向我显示子目录。

我在这里做错了什么?

我在用:

bash --version
GNU bash, version 4.2.46(2)-release (x86_64-redhat-linux-gnu)

答案1

部分解决方案(变量名称将被扩展,但其值不会被替换到命令行中):如果安装了bash-completion软件包,请重新安装命令完成cd

complete -v -F _cd -o nospace cd pushd

cdable_vars如果在获取时设置了该包,则该包会执行此操作/etc/profile.d/bash_completion.sh,因此您可能需要安装将在其之前获取的 profile.d。

如果您没有该软件包,请提供支持info bash的完成功能示例。cdcdable_vars

相关内容