我有一个 debian 系统,在该系统上,我的 bash 选项卡完成有一个奇怪的行为。当我编写类似命令scp file.tgz remoteServer:/home/remoteU
并点击选项卡时,它将完成scp file.tgz /home/remoteUser
杀死主机引用。对于ssh
引用这样的远程目录的任何与命令相关的命令,这种情况都会发生在我身上。
我已经检查了我的 bash 完成配置,但找不到与删除冒号之前的测试相关的任何内容,因为我怀疑这是导致该行为的字符。同样有趣的是,远程系统将首先被查询以获取正确的目录。
有什么建议么?
答案1
将此行添加到您的.bashrc
文件中以从COMP_WORDBREAKS
.
COMP_WORDBREAKS=${COMP_WORDBREAKS//:}
这是根据源代码中的这个函数进行的修剪:
__ltrim_colon_completions()
{
if [[ "$1" == *:* && "$COMP_WORDBREAKS" == *:* ]]; then
# Remove colon-word prefix from COMPREPLY items
local colon_word=${1%"${1##*:}"}
local i=${#COMPREPLY[*]}
while [[ $((--i)) -ge 0 ]]; do
COMPREPLY[$i]=${COMPREPLY[$i]#"$colon_word"}
done
fi
}