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?
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?
Respuestas:
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:
set-option -g default-command "exec /bin/bash"
~/.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.
default-commandcomando de shellEl valor predeterminado es una cadena vacía, que indica a tmux que cree un shell de inicio de sesión utilizando el valor de la
default-shellopción.
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.
# 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 desea. Y recomiendo a todos los usuarios de Bash que configuren esto en el perfil.
Referencias
man tmuxDe este hilo:
parece que el uso .bash_profilefuncionaría.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
La solución que funcionó para mí es la siguiente:
.bash_profilearchivo si no tiene uno en~.bash_profileponer source ~/.bashrcosource ~/.profileEl problema ahora debería solucionarse.
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~/.profile entre otros archivos cuando se inicia.
Lo que quería era que zsh comenzara con cada nueva tmuxventana, así que puse exec zshen la parte inferior de mi~/.profile .