Sommaire
Lorsque je crée une nouvelle session tmux, mon invite tire d'une configuration bash par défaut et je dois exécuter manuellement source ~/.bashrc
pour mon invite personnalisée.
Une analyse
J'utilise une machine RHEL 7. J'ai commencé à remarquer ce comportement après une mise à jour bash il y a quelque temps, mais je n'ai pas encore posé la question (et je ne sais pas quelle mise à jour cela a commencé).
Par exemple, j'ai personnalisé mon invite pour qu'elle ressemble à ceci:
[user@hostname ~]$
Chaque fois que je démarre une nouvelle session tmux, il utilise ce qui semble être le bash par défaut:
-sh-4.2$
Une courte série de source ~/.bashrc
correctifs résout toujours le problème, mais c'est ennuyeux de devoir le faire chaque fois que je veux réparer quelque chose de petit. Avez-vous des idées pour que tmux recommence automatiquement?
Si plus d'informations sont nécessaires, je suis heureux de vous fournir.
tmux.conf
Pour référence, j'ai mon tmux.conf
fichier ci-dessous, bien que ce ne soit pas ce que vous pourriez appeler personnalisé.
setw -g mode-keys vi
# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"
source ~/.bashrc
ligne à mon.bash_profile
, essayé de me déconnecter et de me reconnecter, de créer une nouvelle session tmux, mais aucun changement. Des idées?.tmux.conf
la ligneset-option -g default-shell "/bin/bash"
. Cela devrait résoudre votre problème (du moins je l'espère)!bash
via Homebrew et que cela ne fonctionne pas, passez"/bin/bash"
à"/usr/local/bin/bash"
.Ceci est lié aux fichiers d'initialisation Bash. Par défaut,
~/.bashrc
est utilisé dans un shell interactif sans connexion . Il ne proviendra pas d'un shell de connexion. Tmux utilise un shell de connexion par défaut. Par conséquent, les shells démarrés par tmux sautent~/.bashrc
.Fichiers init pour Bash,
/etc/profile
~/.bash_profile
,~/.bash_login
,~/.profile
(Seulement le premier qui existe)/etc/bash.bashrc
(certains Linux; pas sur Mac OS X)~/.bashrc
$BASH_ENV
Solution
L'étrange exigence de chargement interactif sans connexion déroute également les gens dans d'autres situations. La meilleure solution consiste à modifier l'exigence de chargement en
~/.bashrc
tant qu'interactif uniquement , ce qui est exactement ce que font certaines distributions, comme Ubuntu.Cela devrait être la solution que vous désirez. Et je recommande à chaque utilisateur Bash de configurer cela dans le profil.
Les références
man tmux
la source
Ajout de ce qui suit à
.tmux.conf
:NE FAIT PAS donne le résultat souhaité.
Uniquement lors de l'ajout
source "$HOME/.bashrc"
au~/.bash_profile
résultat souhaité est atteint.Cela fonctionnera sur une session tmux active lors de l'ouverture d'une nouvelle fenêtre ou d'un nouveau volet, ainsi que lors du détachement et de l'ouverture d'une nouvelle session tmux.
Testé sur:
la source