Most people like to have shell completion on the command line. In other words, when you're typing a command, you can hit and the shell will show you what the options are. For example, if you type ddev <TAB>
, you'll see all the possible commands. ddev debug <TAB>
will show you the options for the command. And ddev list -<TAB>
will show you all the flags available for ddev list
.
Shells like bash and zsh need help to do this though, they have to know what the options are. DDEV-Local provides the necessary hint scripts, and if you use homebrew, they get installed automatically. But if you use oh-my-zsh, for example, you may have to manually install the hint script.
Although most people will use techniques like homebrew for installation, a tar archive of the shell completion scripts is available in each release, called "ddev_shell_completion_scripts..tar.gz". If you need to manually install, you can download and untar the scripts, then copy them as needed to where they have to go. For example, sudo cp ddev_bash_completion.sh /etc/bash_completion.d/ddev
.
Note that scripts for the fish shell and Windows Powershell are also provided, but no instructions are given here for deploying them.
Bash Completion with Homebrew: The easiest way to use bash completion on either macOS or Linux is to install with homebrew. brew install bash-completion
. When you install it though, it will warn you with something like this, which may vary on your system.
Add the following line to your ~/.bash_profile:
[[ -r "/usr/local/etc/profile.d/bash_completion.sh" ]] && . "/usr/local/etc/profile.d/bash_completion.sh"
You need to add the suggested line to your ~/.bash_profile or ~/.profile to get it to work, and then in the current shell you need tou source ~/.bash_profile
or source ~/.profile
to make it take effect. (You can also just open a new shell window.)
Then, if you're installing ddev from homebrew, each new release will automatically get a refreshed completions script.
Bash Completion without Homebrew: The completion script is exactly the same, it's just that you have to install it yourself. Each system may have a slightly different technique, and you'll need to figure it out. On Debian/Ubuntu, you would use these instructions to enable bash-completion, and then sudo mkdir -p /etc/bash_completion.d && sudo cp ddev_bash_completion.sh /etc/bash_completion.d
. This deploys the ddev_bash_completion.sh script where it needs to be. Again, every Linux distro has a different technique, and you may have to figure yours out.
Zsh Completion with Homebrew: This works exactly the same as bash completion. brew install zsh-completion
. You'll get instructions something like this:
if type brew &>/dev/null; then
FPATH=$(brew --prefix)/share/zsh-completions:$FPATH
autoload -Uz compinit
compinit
fi
You may also need to force rebuild `zcompdump`:
rm -f ~/.zcompdump; compinit
Additionally, if you receive "zsh compinit: insecure directories" warnings when attempting
to load these completions, you may need to run this:
chmod go-w '/usr/local/share'
So follow those instructions and your zsh should be set up.
If you installed zsh with homebrew, ddev's completions will be automatically installed when you brew install ddev
.
Otherwise, Oh-My-Zsh may be set up very differently in different places, so as a power zsh user you'll need to put ddev_bash_completion.sh where it belongs. echo $fpath
will show you the places that it's most likely to belong. An obvious choice is ~/.oh-my-zsh/completions if that exists, so you can mkdir -p ~/.oh-my-zsh/completions && cp ddev_zsh_completions.sh ~/.oh-my-zsh/completions/_ddev
and then autoload -Uz compinit && compinit
.