Resumen
Cuando creo una nueva sesión de tmux, mi solicitud se extrae de una configuración bash predeterminada y tengo que ejecutarla manualmente source ~/.bashrc
para mi solicitud personalizada.
Análisis
Estoy usando una máquina RHEL 7. Comencé a notar este comportamiento después de una actualización de bash hace un tiempo, pero hasta ahora no he podido hacer la pregunta (y no estoy seguro de qué actualización comenzó a ocurrir).
Por ejemplo, he personalizado mi solicitud para que se vea así:
[user@hostname ~]$
Cada vez que comienzo una nueva sesión de tmux, utiliza lo que parece ser el bash predeterminado:
-sh-4.2$
Una ejecución rápida de source ~/.bashrc
siempre soluciona el problema, pero es molesto tener que hacer esto cada vez que quiero arreglar algo pequeño. ¿Alguna idea sobre cómo hacer que tmux vuelva a hacer esto automáticamente?
Si necesita más información, me complace proporcionarla.
tmux.conf
Como referencia, tengo mi tmux.conf
archivo a continuación, aunque no es lo que se podría llamar personalizado.
setw -g mode-keys vi
# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"
source ~/.bashrc
línea a mi.bash_profile
, intenté cerrar sesión y volver a iniciarla, crear una nueva sesión de tmux, pero sin cambios. ¿Algunas ideas?.tmux.conf
la líneaset-option -g default-shell "/bin/bash"
. ¡Esto debería resolver tu problema (al menos eso espero)!bash
través de Homebrew y esto no funciona, cambie"/bin/bash"
a"/usr/local/bin/bash"
.Esto está relacionado con los archivos de inicio de Bash. Por defecto,
~/.bashrc
se usa 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 comenzaron por tmux skip~/.bashrc
.Archivos de inicio para Bash,
/etc/profile
~/.bash_profile
`~/.bash_login
`~/.profile
(solo el primero que existe)/etc/bash.bashrc
(algunos Linux; no en Mac OS X)~/.bashrc
$BASH_ENV
Solución
El extraño requisito interactivo de carga sin inicio de sesión también confunde a las personas en otras situaciones. La mejor solución es cambiar el requisito de carga solo
~/.bashrc
como interactivo , que es exactamente lo que están haciendo algunas distribuciones, como Ubuntu.Esta debería ser la solución que deseas. Y recomiendo que cada usuario de Bash configure esto en el perfil.
Referencias
man tmux
fuente
Agregando lo siguiente a
.tmux.conf
:NO produce el resultado deseado.
Solo cuando se agrega
source "$HOME/.bashrc"
al~/.bash_profile
resultado deseado.Esto funcionará en una sesión activa de tmux al abrir una nueva ventana o panel, y también al separar y abrir una nueva sesión de tmux.
Probado en:
fuente