macOS Catalina doesn't support anymore bash and came with zsh, I didn't test this guideline in the macOS Catalina or Big Sur.
macOS comes with a really old bash version. Check the version from the environment variable..
$ echo $BASH_VERSION
3.2.57(1)-release
We can install a newer version of bash via Homebrew package manager, get Homebrew from here https://brew.sh.
Install the new version of Bash
Once you have installed the command Homebrew you can install Bash and the bash-completion for this new version.
$ brew install bash
$ brew install bash-completion@2
The new version of Bash is installed in /usr/local/bin/bash
.
Include the new Bash in the allowed shells
Edit the file /etc/shells
and add at the end the new Bash path.
$ sudo vi /etc/shells
# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.
/bin/bash
/bin/csh
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh
/usr/local/bin/bash
Change the default shell
Set to the default shell to the current user.
$ chsh -s /usr/local/bin/bash
Install kubectl autocomplete
You can check what kubectl recommend for install the autocomplete.
$ kubectl completion -h
Store the configuration for the automcompletion.
$ kubectl completion bash > ~/.kube/kubectl_autocompletion
Edit ~/.bash_profile
to include the source and load the bash_completion, include these lines at the end of the file.
if [ -f /usr/local/share/bash-completion/bash_completion ]; then
. /usr/local/share/bash-completion/bash_completion
fi
source ~/.kube/kubectl_autocompletion
Now you can restart your shell and use kubectl autocomplete.