Cuando tmux se inicia o abre una nueva ventana, no carga mi .profileo .bashrc. Termino escribiendo . ~/.bashrctodo el tiempo. ¿Hay alguna forma de que esto suceda automáticamente?
94
Sí, al final de tu .bash_profile, pon la línea:
. ~/.bashrc
Esto genera automáticamente el archivo rc en aquellas circunstancias en las que normalmente solo procesaría el perfil.
Las reglas sobre cuándo se bashejecutan ciertos archivos son complicadas y dependen del tipo de shell que se inicia (inicio de sesión / no inicio de sesión, interactivo o no, etc.), junto con los argumentos de la línea de comandos y las variables de entorno.
Puede verlos en la man bashsalida, solo busque INVOCATION, probablemente necesitará algo de tiempo para digerirlo y decodificarlo :-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?Ejecutar bash funcionó explícitamente para mí, agregando esta línea a mi archivo ~ / .tmux.conf:
fuente
~/.tmux.conf:set -g default-command "/bin/bash". Gracias amigo.Las respuestas anteriores proporcionaron soluciones pero no explicaron el motivo. Aquí está.
Esto está relacionado con los archivos init de Bash. De forma predeterminada,
~/.bashrcse utiliza en un shell interactivo sin inicio de sesión . No se obtendrá en un shell de inicio de sesión. Tmux usa un shell de inicio de sesión por defecto. Por lo tanto, los shells iniciados por tmux skip~/.bashrc.Archivos de inicialización para Bash,
/etc/profile~/.bash_profile,~/.bash_login,~/.profile(Sólo primera que existe)/etc/bash.bashrc(algunos Linux; no en Mac OS X)~/.bashrc$BASH_ENVEl extraño requisito de carga interactivo, sin inicio de sesión, confunde a las personas en otras situaciones también. La mejor solución es cambiar el requisito de carga
~/.bashrccomo interactivo únicamente , que es exactamente lo que están haciendo algunas distribuciones, como Ubuntu.Esta debería ser la solución que desea. Y recomiendo a todos los usuarios de Bash que configuren esto en el perfil.
Referencias
man tmuxfuente
De este hilo:
parece que el uso
.bash_profilefuncionaría.fuente
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profileLa solución que funcionó para mí es la siguiente:
.bash_profilearchivo si no tiene uno en~.bash_profileponersource ~/.bashrcosource ~/.profileEl problema ahora debería solucionarse.
fuente
Tuve el mismo problema y las soluciones hasta ahora no funcionaron para mí. La solución que terminó funcionando para mí se puede encontrar aquí .
En resumen, las
tmuxventanas / sesiones usan un shell de inicio de sesión que busca un~/.profileentre otros archivos cuando se inicia.Lo que quería era que zsh comenzara con cada nueva
tmuxventana, así que puseexec zshen la parte inferior de mi~/.profile.fuente