bash auto-completion on Linux
The kubectl completion script for Bash can be generated with the command
kubectl completion bash. Sourcing the completion script in your shell enables kubectl autocompletion.
However, the completion script depends on bash-completion, which means that you have to install this software first (you can test if you have bash-completion already installed by running
bash-completion is provided by many package managers (see here). You can install it with
apt-get install bash-completion or
yum install bash-completion, etc.
The above commands create
/usr/share/bash-completion/bash_completion, which is the main script of bash-completion. Depending on your package manager, you have to manually source this file in your
To find out, reload your shell and run
type _init_completion. If the command succeeds, you're already set, otherwise add the following to your
Reload your shell and verify that bash-completion is correctly installed by typing
Enable kubectl autocompletion
You now need to ensure that the kubectl completion script gets sourced in all your shell sessions. There are two ways in which you can do this:
echo 'source <(kubectl completion bash)' >>~/.bashrc
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
If you have an alias for kubectl, you can extend shell completion to work with that alias:
echo 'alias k=kubectl' >>~/.bashrc echo 'complete -F __start_kubectl k' >>~/.bashrc
Both approaches are equivalent. After reloading your shell, kubectl autocompletion should be working.