Чтобы зайти в какую-то подпапку моей домашней папки, я набираю cd ~/sub[tab]. Это завершено до cd ~/subfolder. Все в порядке.
Если я случайно забываю косую черту и набираю cd ~sub[tab], все пользователи решаются, выполняется поиск совпадения. Это займет некоторое время, так как в нашей компании есть центральный пользовательский сервер и много пользователей.
Могу ли я отключить разрешение всех пользователей, но по-прежнему работать с тильдой ~?
Я использую bash версии 4.3.0.
Мне никогда не нужно заходить домой к некоторым пользователям через cd ~someUser.
@gogaz Я отредактировал свой вопрос, чтобы указать версию bash, которую я использую.





Откройте файл /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
}
Попробуйте.
Тильда-расширение - это функция оболочки. Я не знаю, можете ли вы частично отключить его, но я думаю, это будет зависеть от вашей оболочки