在我的集群中(我没有根访问权限),我在我的中定义了.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
现在,我面临着以下几种情况:
cd s1<tab>
或cd s13<tab>
:什么也没发生。cd $s13<tab>
给出:cd $s13<space>
- 2之后,如果我使用
<backspace>
incd $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
的完成功能示例。cd
cdable_vars