74 lines
2.5 KiB
Markdown
74 lines
2.5 KiB
Markdown
---
|
|
title: "bash auto-completion on Linux"
|
|
description: "Some optional configuration for bash auto-completion on Linux."
|
|
headless: true
|
|
_build:
|
|
list: never
|
|
render: never
|
|
publishResources: false
|
|
---
|
|
|
|
### Introduction
|
|
|
|
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**](https://github.com/scop/bash-completion),
|
|
which means that you have to install this software first
|
|
(you can test if you have bash-completion already installed by running `type _init_completion`).
|
|
|
|
### Install bash-completion
|
|
|
|
bash-completion is provided by many package managers
|
|
(see [here](https://github.com/scop/bash-completion#installation)).
|
|
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 `~/.bashrc` file.
|
|
|
|
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 `~/.bashrc` file:
|
|
|
|
```bash
|
|
source /usr/share/bash-completion/bash_completion
|
|
```
|
|
|
|
Reload your shell and verify that bash-completion is correctly installed by typing `type _init_completion`.
|
|
|
|
### Enable kubectl autocompletion
|
|
|
|
#### Bash
|
|
|
|
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:
|
|
|
|
{{< tabs name="kubectl_bash_autocompletion" >}}
|
|
{{< tab name="User" codelang="bash" >}}
|
|
echo 'source <(kubectl completion bash)' >>~/.bashrc
|
|
{{< /tab >}}
|
|
{{< tab name="System" codelang="bash" >}}
|
|
kubectl completion bash | sudo tee /etc/bash_completion.d/kubectl > /dev/null
|
|
sudo chmod a+r /etc/bash_completion.d/kubectl
|
|
{{< /tab >}}
|
|
{{< /tabs >}}
|
|
|
|
If you have an alias for kubectl, you can extend shell completion to work with that alias:
|
|
|
|
```bash
|
|
echo 'alias k=kubectl' >>~/.bashrc
|
|
echo 'complete -o default -F __start_kubectl k' >>~/.bashrc
|
|
```
|
|
|
|
{{< note >}}
|
|
bash-completion sources all completion scripts in `/etc/bash_completion.d`.
|
|
{{< /note >}}
|
|
|
|
Both approaches are equivalent. After reloading your shell, kubectl autocompletion should be working.
|
|
To enable bash autocompletion in current session of shell, source the ~/.bashrc file:
|
|
|
|
```bash
|
|
source ~/.bashrc
|
|
```
|