Lorsque tmux démarre ou ouvre une nouvelle fenêtre, il ne charge pas mon fichier .profileou .bashrc. Je finis par taper à . ~/.bashrcchaque fois. Existe-t-il un moyen de faire en sorte que cela se produise automatiquement?
Lorsque tmux démarre ou ouvre une nouvelle fenêtre, il ne charge pas mon fichier .profileou .bashrc. Je finis par taper à . ~/.bashrcchaque fois. Existe-t-il un moyen de faire en sorte que cela se produise automatiquement?
Réponses:
Oui, à la fin de votre .bash_profile, mettez la ligne:
. ~/.bashrc
Cela source automatiquement le fichier rc dans les circonstances où il ne traiterait normalement que le profil.
Les règles quant au moment bash exécution de certains fichiers sont compliquées et dépendent du type de shell démarré (connexion / non-connexion, interactif ou non, etc.), ainsi que des arguments de ligne de commande et des variables d'environnement.
Vous pouvez les voir dans la man bashsortie, recherchez simplement INVOCATION- vous aurez probablement besoin de temps pour le digérer et le décoder :-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
Lancer bash a fonctionné explicitement pour moi, en ajoutant cette ligne à mon fichier ~ / .tmux.conf:
set-option -g default-command "exec /bin/bash"
~/.tmux.conf : set -g default-command "/bin/bash". Merci mon pote.
Les anciennes réponses ont fourni des solutions mais n'ont pas expliqué la raison. C'est ici.
Ceci est lié aux fichiers init Bash. Par défaut, ~/.bashrcest 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 skip ~/.bashrc.
default-commandcommande shellLa valeur par défaut est une chaîne vide, qui demande à tmux de créer un shell de connexion en utilisant la valeur de l'
default-shelloption.
Fichiers d'initialisation 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_ENVL'étrange exigence de chargement interactif et sans connexion déroute également les gens dans d'autres situations. La meilleure solution est de modifier l'exigence de chargement en ~/.bashrctant qu'interactif uniquement , ce que font exactement certaines distributions, comme Ubuntu.
# write content below into ~/.profile, or ~/.bash_profile
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
Cela devrait être la solution que vous désirez. Et je recommande à chaque utilisateur de Bash de configurer cela dans le profil.
Références
man tmuxDe ce fil:
semble utiliser .bash_profilefonctionnerait.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
La solution qui a fonctionné pour moi est la suivante:
.bash_profilefichier si vous n'en avez pas~.bash_profileput source ~/.bashrcousource ~/.profileLe problème devrait maintenant être résolu.
J'ai eu le même problème et les solutions jusqu'à présent n'ont pas fonctionné pour moi. La solution qui a fonctionné pour moi peut être trouvée ici .
En bref, les tmuxfenêtres / sessions utilisent un shell de connexion qui recherche un ~/.profilefichier parmi d'autres au démarrage.
Ce que je voulais, c'était que zsh commence à chaque nouvelle tmux fenêtre donc je mets exec zshau bas de mon ~/.profile.