5

I am using CetnOS 6 and want to have autocompletion for parameters while using sudo.

I found this question https://superuser.com/questions/804128/bash-hints-does-not-work-after-sudo-or-man and now the following works:

  • yu[tab] completes to yum and with another tab press it suggests the different yum commands
  • yum upg[tab] autocompletes to yum upgrade as desired
  • sudo yu[tab] autocompletes to sudo yum as expected
  • sudo yum upg[tab] does not autocomplete to anything, also no suggestions.

How can I achieve parameter completion even when using sudo?

(I used yum just as an example because it is available on all CentOS; the result is the same for other commands.)


Some informations about my system:

$ uname -a
Linux server 2.6.32-642.6.1.el6.x86_64 #1 SMP Wed Oct 5 00:36:12 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux

$ bash --version
GNU bash, version 4.1.2(1)-release (x86_64-redhat-linux-gnu)

$ yum list installed | grep completion
bash-completion.noarch  1:1.3-7.el6        @epel

$ cat .bashrc
# .bashrc

# Source global definitions
if [ -f /etc/bashrc ]; then
        . /etc/bashrc
fi

# User specific aliases and functions
complete -cf sudo
  • Bash completion does not have sudo available. Look at /etc/bash_completion.d. – Sokel Nov 8 '16 at 21:18
  • I don't understand. There is no file called sudo in /etc/bash_completion.d - yes. But on my ubuntu/debian systems there is also no such file in there but there parameter completion works. sudo apt-get di[tab] completes to sudo apt-get dist-upgrade as desired – masgo Nov 9 '16 at 9:45
  • 1
    Ubuntu provides its own bash completion scripts/rules than other distributions. You will need to look at the files the bash-completion package in ubuntu provides, find the one for sudo and go from there. it may not be named as such, but you can use grep to find it. – Sokel Nov 11 '16 at 17:40
  • 1
    but where should I search? I did a grep for sudo on everything in /etc/bash_completion.d and found nothing. It must be somewhere else – masgo Nov 20 '16 at 20:15
1

Not the perfect workaround, but you can add complete -cf sudo to your .bashrc which will autocomplete sudo commands thereon.

However, in doing so, it will not act exactly like normal tab completion. for example, if you were to use this, and then sudo cd [tab] you will get a lot of possibilities that won't be useful - i.e a file names will show... who wants to cd to a file?

For the most part though, it will complete commands like sudo yum upd[tab]

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.