Las nuevas sesiones tmux no obtienen el archivo bashrc

17

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 ~/.bashrcpara 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 ~/.bashrcsiempre 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.confarchivo 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"
Justin W. Flory
fuente

Respuestas:

19

Hasta donde yo sé, por defecto tmuxejecuta un shell de inicio de sesión. Cuando bashse invoca como un intérprete interactivo de ingreso, busca ~/.bash_profile, ~/.bash_loginy ~/.profile. Entonces tienes que poner source ~/.bashrcuno de esos archivos.

Otra forma de resolver este problema es poner en su archivo .tmux.confla línea:

set-option -g default-shell "/bin/bash"
andreatsh
fuente
1
Agregué la source ~/.bashrclí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?
Justin W. Flory
1
Intenta poner en tu archivo .tmux.confla línea set-option -g default-shell "/bin/bash". ¡Esto debería resolver tu problema (al menos eso espero)!
andreatsh
Después de volver a cargar mi configuración tmux, ¡esto resolvió mi problema! ¿Quiere modificar su respuesta o crear una nueva? Me encantaría marcarlo como aceptado. :)
Justin W. Flory
¡Eres amable, modifiqué rápidamente mi respuesta!
andreatsh
2
Nota para usuarios de macOS: si ha instalado a bashtravés de Homebrew y esto no funciona, cambie "/bin/bash"a "/usr/local/bin/bash".
5

Esto está relacionado con los archivos de inicio de Bash. Por defecto, ~/.bashrcse 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.

default-command comando de shell

El valor predeterminado es una cadena vacía, que le indica a tmux que cree un shell de inicio de sesión utilizando el valor de la default-shellopción.

Archivos de inicio para Bash,

  1. modo de inicio de sesión:
    1. /etc/profile
    2. ~/.bash_profile` ~/.bash_login` ~/.profile(solo el primero que existe)
  2. no inicio de sesión interactivo :
    1. /etc/bash.bashrc (algunos Linux; no en Mac OS X)
    2. ~/.bashrc
  3. no interactivo:
    1. archivo fuente en $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.

# 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

Esta debería ser la solución que deseas. Y recomiendo que cada usuario de Bash configure esto en el perfil.

Referencias

Simba
fuente
2

Agregando lo siguiente a .tmux.conf:

set-option -g default-shell "/bin/bash"

NO produce el resultado deseado.

Solo cuando se agrega source "$HOME/.bashrc"al ~/.bash_profileresultado 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:

VERSION="16.04.2 LTS (Xenial Xerus)"
tmux 2.1
Andres Salgado
fuente