Lorsque tmux démarre ou ouvre une nouvelle fenêtre, il ne charge pas mon fichier .profile
ou .bashrc
. Je finis par taper à . ~/.bashrc
chaque 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 .profile
ou .bashrc
. Je finis par taper à . ~/.bashrc
chaque 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 bash
sortie, 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, ~/.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 skip ~/.bashrc
.
default-command
commande 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-shell
option.
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_ENV
L'é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 ~/.bashrc
tant 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 tmux
De ce fil:
semble utiliser .bash_profile
fonctionnerait.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
La solution qui a fonctionné pour moi est la suivante:
.bash_profile
fichier si vous n'en avez pas~
.bash_profile
put source ~/.bashrc
ousource ~/.profile
Le 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 tmux
fenêtres / sessions utilisent un shell de connexion qui recherche un ~/.profile
fichier parmi d'autres au démarrage.
Ce que je voulais, c'était que zsh commence à chaque nouvelle tmux
fenêtre donc je mets exec zsh
au bas de mon ~/.profile
.