---
title: Shell init (helper gcd)
description: Configurez `gwm shell-init` pour que `gcd <pattern>` et `gcd` (sans argument) fassent un cd dans un worktree en une frappe.
---
# Shell init (helper `gcd`)
Un binaire seul ne peut pas changer le répertoire courant du shell parent — seul le shell le peut. `gwm shell-init <shell>` imprime une fonction (nommée `gcd`) qui réunit deux flux dans un seul wrapper :
- `gcd <pattern>` → `gwm cd <pattern>` (résolution fuzzy, sort avec `0` en cas de hit, `1` en cas d'échec / ambiguïté / hors d'un dépôt).
- `gcd` (sans argument) → `gwm switch` (sélecteur interactif ; `Enter` pour valider, `Esc` / `Ctrl-C` / `q` pour annuler avec le code de sortie `1`).
Dans les deux cas, le wrapper n'effectue le `cd` qu'après un code de sortie réussi, de sorte qu'un sélecteur annulé ou un pattern manqué ne vous laisse jamais échoué dans `$HOME`.

## installation
`eval` du wrapper dans le fichier rc de votre shell :
```bash
# zsh
echo 'eval "$(gwm shell-init zsh)"' >> ~/.zshrc
# bash
echo 'eval "$(gwm shell-init bash)"' >> ~/.bashrc
# fish — à persister aussi en l'ajoutant à ~/.config/fish/config.fish
gwm shell-init fish | source
# PowerShell — session courante uniquement
gwm shell-init powershell | Out-File -Append -Encoding utf8 $PROFILE
```
Ouvrez un shell tout neuf (ou faites un `source` du fichier rc) et `gcd` est disponible sur votre `$PATH` en tant que fonction shell.
## utilisation
```bash
gcd auth # → cd $(gwm cd auth)
# → ex. ~/cc-worktree/myrepo/feat-99-user-authentication
gcd # → cd $(gwm switch)
# → ouvre le sélecteur, cd dans le worktree choisi
```
Le pattern est matché avec le même moteur fuzzy que celui utilisé par le filtre du TUI ([nucleo-matcher](https://docs.rs/nucleo-matcher)) — `auth` matche `feat-99-user-authentication`, `mig` matche `chore-12-rails-migration`, etc. Une ambiguïté (deux worktrees matchent aussi bien) sort avec `1` et imprime les deux candidats, de sorte que le wrapper ne fasse pas de `cd`.
## forme brute (sans wrapper)
Si vous ne voulez pas installer le wrapper, les formes brutes fonctionnent aussi :
```bash
cd "$(gwm cd auth)" # résolution fuzzy, $(...) capture le chemin
cd "$(gwm switch)" # ouvre le sélecteur, tapez pour filtrer, Enter pour valider
gwm s # alias pour `switch`
```
## voir aussi
- [TUI → Filtre fuzzy](/fr/tui/filter) — même moteur, mêmes règles de matching
- [CLI → Référence des sous-commandes](/fr/cli/reference#gwm-path-pattern-alias--gwm-cd-pattern) — tous les flags de `gwm cd` et `gwm switch`
- [CLI → Complétions shell](/fr/cli/completions) — déposez un complèteur `_gwm` qui connaît les noms de worktrees