You are viewing documentation for Kubernetes version: v1.24
Kubernetes v1.24 documentation is no longer actively maintained. The version you are currently viewing is a static snapshot. For up-to-date information, see the latest version.
bash auto-completion on macOS
Introduction
The kubectl completion script for Bash can be generated with kubectl completion bash. Sourcing this script in your shell enables kubectl completion.
However, the kubectl completion script depends on bash-completion which you thus have to previously install.
Upgrade Bash
The instructions here assume you use Bash 4.1+. You can check your Bash's version by running:
echo $BASH_VERSION
If it is too old, you can install/upgrade it using Homebrew:
brew install bash
Reload your shell and verify that the desired version is being used:
echo $BASH_VERSION $SHELL
Homebrew usually installs it at /usr/local/bin/bash.
Install bash-completion
You can test if you have bash-completion v2 already installed with type _init_completion. If not, you can install it with Homebrew:
brew install bash-completion@2
As stated in the output of this command, add the following to your ~/.bash_profile file:
export BASH_COMPLETION_COMPAT_DIR="/usr/local/etc/bash_completion.d"
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
Reload your shell and verify that bash-completion v2 is correctly installed with type _init_completion.
Enable kubectl autocompletion
You now have to ensure that the kubectl completion script gets sourced in all your shell sessions. There are multiple ways to achieve this:
Source the completion script in your
~/.bash_profilefile:echo 'source <(kubectl completion bash)' >>~/.bash_profileAdd the completion script to the
/usr/local/etc/bash_completion.ddirectory:kubectl completion bash >/usr/local/etc/bash_completion.d/kubectlIf you have an alias for kubectl, you can extend shell completion to work with that alias:
echo 'alias k=kubectl' >>~/.bash_profile echo 'complete -o default -F __start_kubectl k' >>~/.bash_profileIf you installed kubectl with Homebrew (as explained here), then the kubectl completion script should already be in
/usr/local/etc/bash_completion.d/kubectl. In that case, you don't need to do anything.Note: The Homebrew installation of bash-completion v2 sources all the files in theBASH_COMPLETION_COMPAT_DIRdirectory, that's why the latter two methods work.
In any case, after reloading your shell, kubectl completion should be working.