Alias ​​y tmux

12

Alias ​​definidos en .bash_aliasesy .bashrcno funcionan tmux.

¿Se puede cambiar esto en alguna configuración, por lo que los alias funcionan tmux?

xralf
fuente
2
¿Estás seguro de que hay un problema tmux? Uso tmux aproximadamente durante un año y no he visto ningún problema con los alias. Intente agregar set -xal comienzo de su .bashrcy ejecutar en tmuxcomando source ~/.bashrc. Es posible que encuentre errores y resolverá su problema.
prisa

Respuestas:

9

tmuxinicia un shell de inicio de sesión de forma predeterminada, por ~/.bashrclo que no se ejecutará (que luego se origina ~/.bash_aliases. Debe obtenerlo ~/.bashrcde su ~/.bash_profile. Consulte la INVOCATIONsección de man bash.

Chris Down
fuente
19

( La respuesta de Chris Down tiene la explicación correcta pero no una buena solución)

Su problema proviene de una combinación de un error de diseño bash y un error de diseño tmux.

Por defecto, tmux inicia un shell de inicio de sesión en cada ventana. Esto no tiene ningún sentido: si ha configurado tmux como su shell de inicio de sesión, debe establecer la default-commandopción en algo diferente a tmux; y si no ha configurado tmux como su shell de inicio de sesión, debe configurar la default-commandopción para evitar iniciar un shell de inicio de sesión dentro de tmux. Así que pon esto en tu lugar ~/.tmux.confpara decirle a tmux que inicie un shell ordinario:

set-option -g default-command $SHELL

Entonces tu .bashrcserá leído. Hay otro problema con bash, que no importa aquí si configura tmux como se recomienda anteriormente, pero que volverá a surgir si inicia sesión en modo texto (en una consola de texto o en SSH). Bash lee ~/.bash_profileen shells de inicio de sesión y ~/.bashrcen shells interactivos, pero solo si no son shells de inicio de sesión. Para leer ~/.bashrctambién en shells de inicio de sesión si son interactivos, agregue esto a su ~/.bash_profile:

case $- in *i*) . ~/.bashrc;; esac
Gilles 'SO- deja de ser malvado'
fuente
+! Tomó esa última parte para arreglar mis alias y el aviso de PS1, ¡pero lo hizo!
Michael Durrant