Рейтинг:1

Автозаполнение вкладок bash работает слишком медленно, но не с teraterm или putty

флаг us

Я использую Ubuntu 18.04, и он зависает через 1-2 секунды, когда я нажимаю кнопку вкладки для автозаполнения.

Я пытался решить эту проблему, но у меня не получилось. Я даже сменил свой компьютер на новый, но у него та же проблема.

Одна странная вещь заключается в том, что когда я подключаю свою Ubuntu к ssh на другом компьютере (используя teraterm, шпатлевку или Ubuntu другого компьютера), проблема исчезает и работает хорошо.

Я не знаю, почему.. Может быть, проблема в сети? Мой компьютер с Ubuntu находится за брандмауэром и прокси-сервером, но Ubuntu моей компании рядом со мной работает хорошо.

Есть ли что-нибудь подозрительное для вас?

Вот что я сделал для проблемы

  • Поменяйте компьютер на новый.
  • судо обновленоb
  • sudo apt install --reinstall bash-completion

И я последовал https://unix.stackexchange.com/a/185960 способ исследовать это.Но когда я нажимаю кнопку вкладки после установить -х, он застрял на первом месте. Я имею в виду,

$ установить -х
$ ls <вкладка>
# застрял где-то на 2~3 секунды
вывод `set -x`

# полный вывод, когда я нажимаю вкладку с помощью `set -x`
+ _init_completion -s
+ local exclude= флаг outx errx inx OPTIND=1
+ getopts n:e:o:i:s флаг -s
+ case $флаг в
+ разделить = ложь
+ исключить+==
+ getopts n:e:o:i:s флаг -s
+ ЗАПОЛНИТЬ=()
+ local 'redir=@(?([0-9])<|?([0-9&])>?(>)|>&)'
+ _get_comp_words_by_ref -n '=<>&' cur prev words cword
+ флаг локального исключения i OPTIND=1
+ слова=()
+ местные слова-слова
+ упарг=()
+ upvars=()
+ локальные upargs upvars vcur vcword vprev vwords
+ getopts c:i:n:p:w: flag -n '=<>&' cur prev words cword
+ case $флаг в
+ исключить='=<>&'
+ getopts c:i:n:p:w: flag -n '=<>&' cur prev words cword
+ [[ 6 -ge 3 ]]
+ case ${!OPTIND} в
+ вкур=кур
+ пусть 'OPTIND += 1'
+ [[ 6 -ge 4 ]]
+ case ${!OPTIND} в
+ предыдущая = предыдущая
+ пусть 'OPTIND += 1'
+ [[ 6 -ge 5 ]]
+ case ${!OPTIND} в
+ vwords=слова
+ пусть 'OPTIND += 1'
+ [[ 6 -ge 6 ]]
+ case ${!OPTIND} в
+ ключевое_слово=парное_слово
+ пусть 'OPTIND += 1'
+ [[ 6 -ge 7 ]]
+ __get_cword_at_cursor_by_ref '=<>&' слова cword cur
+ слова=()
+ местные ключевые слова
+ __reassemble_comp_words_by_ref '=<>&' слова cword
+ местное исключение i j line ref
+ [[ -n =<>& ]]
+ исключить='=<>&'
+ printf -v ключевое слово %s 1
+ [[ -n =<>& ]]
+ строка = 'ls'
+ (( я = 0, j = 0 ))
+ (( я < 2 ))
+ [[ 0 -gt 0 ]]
+ ссылка='слова[0]'
+ printf -v 'слова[0]' %s лс
+ строка=''
+ [[ 0 == 1 ]]
+ ((я++, j++))
+ (( я < 2 ))
+ [[ 1 -gt 0 ]]
+ [[ '' == +([=<>&]) ]]
+ ссылка='слова[1]'
+ printf -v 'слова[1]' %s ''
+ строка=''
+ [[ 1 == 1 ]]
+ printf -v ключевое слово %s 1
+ ((я++, j++))
+ (( я < 2 ))
+ [[ 2 == 1 ]]
+ локальный i cur index=3 'lead=ls '
+ [[ 3 -gt 0 ]]
+ [[ -n лс ]]
+ [[ -n лс ]]
+ кур='лс'
+ (( я = 0 ))
+ (( я <= ключевое слово ))
+ [[ 3 -ge 2 ]]
+ [[ лс != \л\с ]]
+ [[ 0 -lt 1 ]]
+ местный old_size=3
+ кур = ''
+ локальный новый_размер=1
+ индекс=1
+ ((++я))
+ (( я <= ключевое слово ))
+ [[ 1 -ge 0 ]]
+ [[ '' != '' ]]
+ [[ 1 -lt 1 ]]
+ ((++я))
+ (( я <= ключевое слово ))
+ [[-n]]
+ [[ ! -н ​​'' ]]
+ курс=
+ [[ 1 -lt 0 ]]
+ местные слова cword cur
+ _upvars -a2 слова ls '' -v cword 1 -v cur ''
+ (( 10 ))
+ (( 10 ))
+ кейс $1 в
+ [[ -n 2 ]]
+ печать %d 2
+ [[ -n слов ]]
+ сбросить -v слова
+ eval 'слова=("${@:3:2}")'
++ слова=("${@:3:2}")
+ смена 4
+ (( 6 ))
+ кейс $1 в
+ [[ -n ключевое слово ]]
+ сбросить -v ключевое слово
+ оценка 'cword="$3"'
++ ключевое слово=1
+ смена 3
+ (( 3 ))
+ кейс $1 в
+ [[ -n курс ]]
+ сбросить -v кур
+ оценка 'cur="$3"'
++ курс=
+ смена 3
+ (( 0 ))
+ [[ -n курс ]]
+ upvars+=("$vcur")
+ upargs+=(-v $vcur "$cur")
+ [[ -n ключевое слово ]]
+ upvars+=("$vcword")
+ upargs+=(-v $vcword "$cword")
+ [[ -n предыд.]]
+ [[ 1 -ge 1 ]]
+ upvars+=("$vprev")
+ upargs+=(-v $vprev "${words[cword - 1]}")
+ [[ -n слов ]]
+ upvars+=("$vwords")
+ upargs+=(-a${#words[@]} $vwords "${words[@]}")
+ (( 4 ))
+ локальные прежние слова cur cword
+ _upvars -v cur '' -v cword 1 -v prev ls -a2 слова ls ''
+ (( 13 ))
+ (( 13 ))
+ кейс $1 в
+ [[ -n курс ]]
+ сбросить -v кур
+ оценка 'cur="$3"'
++ курс=
+ смена 3
+ (( 10 ))
+ кейс $1 в
+ [[ -n ключевое слово ]]
+ сбросить -v ключевое слово
+ оценка 'cword="$3"'
++ ключевое слово=1
+ смена 3
+ (( 7 ))
+ кейс $1 в
+ [[ -n предыд.]]
+ сбросить -v предыд.
+ оценка 'prev="$3"'
++ пред.=ls
+ смена 3
+ (( 4 ))
+ кейс $1 в
+ [[ -n 2 ]]
+ печать %d 2
+ [[ -n слов ]]
+ сбросить -v слова
+ eval 'слова=("${@:3:2}")'
++ слова=("${@:3:2}")
+ смена 4
+ (( 0 ))
+ _переменные
+ [[ '' =~ ^(\$(\{[!#]?)?)([A-Za-z0-9_]*)$ ]]
+ [[ '' =~ ^(\$\{[#!]?)([A-Za-z0-9_]*)\[([^]]*)$ ]]
+ [[ '' =~ ^\$\{[#!]?[A-Za-z0-9_]*\[.*]$ ]]
+ case $prev in
+ возврат 1
+ [[ '' == @(?([0-9])<|?([0-9&])>?(>)|>&)* ]]
+ [[ ls == @(?([0-9])<|?([0-9&])>?(>)|>&) ]]
+ местный я пропускаю
+ (( я = 1 ))
+ (( я < 2 ))
+ [[ '' == @(?([0-9])<|?([0-9&])>?(>)|>&)* ]]
+ я=2
+ (( 1 ))
+ (( я < 2 ))
+ [[ 1 -le 0 ]]
+ предыд.=л.с.
+ [[ -n ложь ]]
+ _split_longopt
+ [[ '' == --?*=* ]]
+ возврат 1
+ вернуть 0
+ регистр "${prev,,}" в
+ ложь
+ [[ '' == -* ]]
+ [[ ls == @(rmdir|chroot) ]]
+ [[ ls == mkdir ]]
+ _filedir
+ локальный 'IFS=
'
+ _тильда ''
+ локальный результат=0
+ [[ '' == \~* ]]
+ вернуть 0
+ местный -а токс
+ локальный х tmp
++ compgen -d -- ''
+ х=
+ [[ '' != -d ]]
+ местные котировки
+ _quote_readline_by_ref '' цитируется
+ '[' -z '' ']'
+ printf -v в кавычках %s ''
+ [[ '' == *\* ]]
+ [[ '' == \$* ]]
+ местная спецификация =
++ compgen -f -X '' --
+ х=
+ [[ -n '' ]]
+ [[ 0 -ne 0 ]]

Вот данные моего ПК.

$ uname -a
Linux seongwoo 5.4.0-72-generic #80~18.04.1-Ubuntu SMP Пн, 12 апреля, 23:26:25 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux

Хотя я использую oh-my-zsh, у него такая же проблема, когда я выполнить /бин/баш.

флаг hr
Пожалуйста, включите первые ~ 10 или около того строк вывода `set -x`, чтобы мы могли увидеть, являются ли они нормальными, по крайней мере.
chae seongwoo avatar
флаг us
@steeldriver я обновил :)
Рейтинг:1
флаг us

Наконец-то я нашел ответ!!

Чтобы решить эту проблему, отключите опцию «Терминальный звонок» терминала.

В терминале

Правка> Настройки> Звук> Терминальный звонок

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.