Centos su не автозаполнение имени пользователя - PullRequest
0 голосов
/ 01 ноября 2018

мой вопрос - имя пользователя (то есть zyxing), а не автозаполнение, пока вкладка типа, здесь любой способ может решить эту проблему или просто дать мне предложение отладить это.

ssh as user a
sudo -i
su z[tab]

о системе и полезной информации:

[root@VMS79253 ~]# cat /etc/system-release
CentOS Linux release 7.1.1503 (Core)
[root@VMS79253 ~]# rpm -qa| grep -i completion
bash-completion-2.1-6.el7.noarch
[root@VMS79253 ~]# cat /etc/passwd
...
zyxing:x:1005:1005::/home/zyxing:/bin/bash

[комментарий 2018-11-21]
этот вопрос так легко? Я только что попробовал следующие вещи, но не работает.

  1. убедитесь, что в моей учетной записи bash env - это / bin / bash (большинство людей говорят, что tab не будет работать, потому что bash env это / bin / sh)
  2. установка bash-complete и source script (также некоторые люди говорят, что должны установить этот плагин и скрипт исходного кода)
  3. setup bash-complete-extras (тестируемый плагин extras в centos7)

1 Ответ

0 голосов
/ 21 ноября 2018

Проблема была решена после редактирования, последующего файла и повторного входа:
Путь к файлу: / usr / share / bash-creation / завершений / su
изменить 42 строку с

COMPREPLY=( $(compgen -f -- $cur) )

до

COMPREPLY=( $(compgen -u -- $cur) )


Возможно, причина в том, что su не заполняется автоматически с именем пользователя:
  • Во-первых, автозаполнение работало при наборе TAB из-за плагина с именем auto-complete
  • Существует много различий между centos7 и centos6, потому что centos7 использует плагин автозаполнения с версией 2.x, но centos6 1.x.
    Я обнаружил некоторую странную логику после прочтения указанного сценария, сработавшего для команды su, весь текст сценария выглядит следующим образом:


    1 _su_module()
    2 {
    3         local cur prev OPTS
    4         COMPREPLY=()
    5         cur="${COMP_WORDS[COMP_CWORD]}"
    6         prev="${COMP_WORDS[COMP_CWORD-1]}"
    7         case $prev in
    8                 '-'|'-u'|'--user')
    9                         COMPREPLY=( $(compgen -u -- $cur) )
    10                         return 0
    11                         ;;
    12                 '-g'|'--group'|'-G'|'--supp-group')
    13                         COMPREPLY=( $(compgen -g -- $cur) )
    14                         return 0
    15                         ;;
    16                 '-s'|'--shell')
    17                         COMPREPLY=( $(compgen -W "$(chsh -l)" -- $cur) )
    18                         return 0
    19                         ;;
    20                 '-h'|'--help'|'-V'|'--version')
    21                         return 0
    22                         ;;
    23         esac
    24         case $cur in
    25                 -*)
    26                         OPTS="  --user
    27                                 --preserve-environment
    28                                 --group
    29                                 --supp-group
    30                                 --login
    31                                 --command
    32                                 --session-command
    33                                 --fast
    34                                 --shell
    35                                 --help
    36                                 --version"
    37                         COMPREPLY=( $(compgen -W "${OPTS[*]}" -- $cur) )
    38                         return 0
    39                         ;;
    40         esac
    41         compopt -o filenames
    42         COMPREPLY=( $(compgen -f -- $cur) )
    43         return 0
    44 }
    45 complete -F _su_module su
    46 complete -F _su_module runuser

Этот скрипт легко прочитать, и мы знаем, что строка 42 была выполнена, если мы введем su[space][TAB].
Но был возвращен список текущего каталога, а не список пользователей, что мы хотим. Так что я просто изменил эту строку, чтобы вывести список пользователей и заново войти, проблема была решена!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...