momh

Node.js et autocomplétion avec Tmux

Si je bénéficiais parfaitement de l’autocomplétion des commandes fournies par node.js dans mon terminal classique, celle-ci ne fonctionnait plus sous Tmux : une sombre histoire de différence entre interactive shell et login shell.

Mon .bashrc contenait pourtant bien le code nécessaire mais, au-delà de l’autocomplétion de node.js, il ne semblait pas du tout être lu, puisque même mon invite de commande ne correspondait pas à celle configurée...

Cependant, mes recherches se focalisaient sur le problème de l’autocomplétion de node.js et ne me fournissaient guère de solution... C’est en changeant de perspective que je suis tombé sur le sujet « New tmux sessions do not source bashrc file » sur Stack Exchange et surtout sur la réponse très complète de Simba qui présente donc la différence entre les interactiven non-login shells — qui sourcent le fichier .bashrc — et les login shells — qui sourcent quant à eux les fichiers .profile et .bash_profile notamment.

Deux solutions sont alors possibles :

  • soit on « source » le fichier .bashrc depuis l’un de ces deux derniers fichiers — cette solution étant celle que recommande Simba justement :
    # if running bash
    if [ -n "$BASH_VERSION" ]; then
        # include .bashrc if it exists
        if [ -f "$HOME/.bashrc" ]; then
        . "$HOME/.bashrc"
        fi
    fi
    
  • soit on « intègre » l’autocomplétion de node.js dans le fichier .profile avec la simple commande :
    npm completion >> ~/.profile