Command-line completion
You can enable command-line completion (also known as tab-completion) in Bash and Zsh. This lets you tab-complete command names, flags names and flag values, and target names.
Bash
Bazel comes with a Bash completion script.
If you installed Bazel:
-
From the APT repository, then you’re done – the Bash completion script is already installed in
/etc/bash_completion.d
. -
From Homebrew, then you’re done – the Bash completion script is already installed in
$(brew --prefix)/etc/bash_completion.d
. - From the installer downloaded from GitHub, then:
-
Locate the absolute path of the completion file. The installer copied it to the
bin
directory.Example: if you ran the installer with
--user
, this will be$HOME/.bazel/bin
. If you ran the installer as root, this will be/usr/local/lib/bazel/bin
. -
Do one of the following:
-
Either copy this file to your completion directory (if you have one).
Example: on Ubuntu this is the
/etc/bash_completion.d
directory. -
Or source the completion file from Bash’s RC file.
Add a line similar to the one below to your
~/.bashrc
(on Ubuntu) or~/.bash_profile
(on macOS), using the path to your completion file’s absolute path:source /path/to/bazel-complete.bash
-
-
- Via bootstrapping, then:
-
Build the completion script:
bazel build //scripts:bazel-complete.bash
-
The completion file is built under
bazel-bin/scripts/bazel-complete.bash
.Do one of the following:
-
Either copy this file to your completion directory (if you have one).
Example: on Ubuntu this is the
/etc/bash_completion.d
directory -
Or copy it somewhere on your local disk, e.g. to
$HOME
, and source the completion file from Bash’s RC file.Add a line similar to the one below to your
~/.bashrc
(on Ubuntu) or~/.bash_profile
(on macOS), using the path to your completion file’s absolute path:source /path/to/bazel-complete.bash
-
-
Zsh
Bazel comes with a Zsh completion script.
If you installed Bazel:
-
From the APT repository, then you’re done – the Zsh completion script is already installed in
/usr/share/zsh/vendor-completions
. -
From Homebrew, then you’re done – the Zsh completion script is already installed in
$(brew --prefix)/share/zsh/site-functions
. -
From the installer downloaded from GitHub, then:
-
Locate the absolute path of the completion file. The installer copied it to the
bin
directory.Example: if you ran the installer with
--user
, this will be$HOME/.bazel/bin
. If you ran the installer as root, this will be/usr/local/lib/bazel/bin
. -
Add this script to a directory on your
$fpath
:fpath[1,0]=~/.zsh/completion/ mkdir -p ~/.zsh/completion/ cp /path/from/above/step/_bazel ~/.zsh/completion
You may have to call
rm -f ~/.zcompdump; compinit
the first time to make it work. -
Optionally, add the following to your .zshrc.
# This way the completion script does not have to parse Bazel's options # repeatedly. The directory in cache-path must be created manually. zstyle ':completion:*' use-cache on zstyle ':completion:*' cache-path ~/.zsh/cache
-