gwm-cli 1.6.0

git worktree manager — TUI + CLI, native libgit2, per-repo bootstrap
Documentation
---
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`.

![gcd qui résout en flou et fait cd dans un worktree](../../1.getting-started/_assets/shell-init.gif)

## 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
Invoke-Expression (& gwm shell-init powershell | Out-String)
# PowerShell — persister via $PROFILE
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