请告诉我,我应该怎么做,在我键入时在 bash 命令行中插入变量名?
即$A = ~/tmp/
在 tmp 文件夹中,我有 tmp1 和 tmp2 文件夹。
我输入:cd $A<TAB>
没有任何事情发生。如果我添加额外的 / 和类型cd $A/tmp1
,它会在末尾添加额外的空间cd $A/tmp1<space>
。
我想要以下行为:
cd $A<TAB>
=====>cd ~/tmp/<without additional space>
有什么建议么?
请告诉我,我应该怎么做,在我键入时在 bash 命令行中插入变量名?
即$A = ~/tmp/
在 tmp 文件夹中,我有 tmp1 和 tmp2 文件夹。
我输入:cd $A<TAB>
没有任何事情发生。如果我添加额外的 / 和类型cd $A/tmp1
,它会在末尾添加额外的空间cd $A/tmp1<space>
。
我想要以下行为:
cd $A<TAB>
=====>cd ~/tmp/<without additional space>
有什么建议么?
你需要说:
shopt -s direxpand
现在说:
cd $A/TAB
(注意/
之前的TAB)会在不增加空间的情况下显示目录。
从手册:
direxpand
If set, bash replaces directory names with the results
of word expansion when performing filename completion.
This changes the contents of the readline editing buf‐
fer. If not set, bash attempts to preserve what the
user typed.
此外,不要通过说来设置变量:
A="~/tmp"
或者
A=~/tmp
说
A="${HOME}/tmp"
首先,您不希望=
. bash
其次,我对上述方式没有问题。尝试:
complete -r