{{indexmenu_n>40}} ## Avoir l'auto-complétion en ligne de commande Cette partie détaille comment avoir la complétion en ligne de commande sur votre machine si vous utilisez `bash`. C'est également possible d'avoir la complétion avec `zsh` et `fish`, mais ce n'est pas détaillé ici. Les scripts de complétion originaux pour les 3 shells sont disponibles [ici](https://git.zx2c4.com/password-store/tree/src/completion). Pour avoir l'auto-complétion d'une commande en `bash`, il faut avoir un fichier de complétion du même nom dans `/etc/bash_completion.d/`. ### Le cas easy Prenons l'exemple d'une machine qui a le dépôt `pass` de Picasoft dans le `$HOME/.picapass` de l'utilisateurice. Assurez vous d'avoir un alias `picapass` [[technique:adminsys:secu:password_store:usage|en place]]. Le script de complétion bash est [sur le dépôt](https://gitlab.utc.fr/picasoft/interne/pass/-/blob/master/.bash_completion.d/picapass). Copiez le dans votre `/etc/bash_completion.d/` : ```bash sudo cp $HOME/.picapass/.bash_completion.d/picapass /etc/bash_completion.d/picapass ``` Normalement, les changements seront effectifs à la prochaine session bash. Ouvrez un nouveau terminal. (`source ~/.bashrc` ne suffit pas) ### Utiliser un autre alias Si vous utilisez **un autre alias** que `picapass`, renommez le fichier : ```bash sudo mv /etc/bash_completion.d/picapass /etc/bash_completion.d/ ``` Et éditez le fichier de complétion : ```bash # dernière ligne complete -o filenames -F _pass picapass # remplacer cette ligne complete -o filenames -F _pass # par cette ligne ``` ### Supporter un autre dossier Si votre dossier "picapass" **n'est pas `$HOME/.picapass`**, éditez le fichier le fichier de complétion : ```bash # ligne 8 local prefix="${PASSWORD_STORE_DIR:-$HOME/.picapass/}" # remplacer cette ligne local prefix="${PASSWORD_STORE_DIR:-}" # par cette ligne ``` ### Ça ne fonctionne pas ? C'est sûrement parce qu'il manque ceci dans le `~/.bashrc` : ```bash # necessary to use completion if ! shopt -oq posix; then if [ -f /usr/share/bash-completion/bash_completion ]; then . /usr/share/bash-completion/bash_completion elif [ -f /etc/bash_completion ]; then . /etc/bash_completion fi fi ``` ### Devenir un·e vrai·e bg Celleux qui veulent ***optimiser*** leur utilisation du `pass` peuvent créer un deuxième alias `picapas` qui équivaut à `pass -c` ```bash alias picapas="PASSWORD_STORE_DIR=$HOME/.picapass pass -c" ``` Répétez les mêmes instructions, avec le fichier `$HOME/.picapass/.bash_completion.d/picapas`.