如何在bash中不使用tilde和tab完成来解析所有用户

如何在bash中不使用tilde和tab完成来解析所有用户,bash,autocomplete,Bash,Autocomplete,要进入我的主文件夹的某个子文件夹,我键入cd~/sub[tab]。此操作已完成到cd~/子文件夹。一切都很好 如果我不小心忘记了斜杠,并键入cd~sub[tab]正在解析所有用户,则会搜索匹配项。这需要一些时间,因为我们公司有一个中央用户服务器和大量用户 我是否可以关闭所有用户的解析功能,但仍可以使用tilde~ 我使用bash版本4.3.0 我不需要通过cd~someUser进入某些用户的家中,打开文件/usr/share/bash completion/bash_completion,然后找

要进入我的主文件夹的某个子文件夹,我键入
cd~/sub[tab]
。此操作已完成到
cd~/子文件夹
。一切都很好

如果我不小心忘记了斜杠,并键入
cd~sub[tab]
正在解析所有用户,则会搜索匹配项。这需要一些时间,因为我们公司有一个中央用户服务器和大量用户

我是否可以关闭所有用户的解析功能,但仍可以使用tilde
~

我使用bash版本4.3.0


我不需要通过
cd~someUser
进入某些用户的家中,打开文件
/usr/share/bash completion/bash_completion
,然后找到函数
tilde()
(第941行附近)。在这里,只需注释掉行号
946
。最后,函数应如下所示:

# Perform tilde (~) completion
# @return  True (0) if completion needs further processing,
#          False (> 0) if tilde is followed by a valid username, completions
#          are put in COMPREPLY and no further processing is necessary.
_tilde()
{
    local result=0
    if [[ $1 == \~* && $1 != */* ]]; then
        # Try generate ~username completions
        #COMPREPLY=( $( compgen -P '~' -u "${1#\~}" ) )
        result=${#COMPREPLY[@]}
        # 2>/dev/null for direct invocation, e.g. in the _tilde unit test
        [[ $result -gt 0 ]] && compopt -o filenames 2>/dev/null
    fi
    return $result
}

试试看。

波浪形扩展是一种shell功能。我不知道你是否可以部分禁用它,但我想这将取决于你的shell@gogaz我编辑了我的问题以指定我正在使用的bash版本。