Cuando tmux se inicia o abre una nueva ventana, no carga mi .profile
o .bashrc
. Termino escribiendo . ~/.bashrc
todo el tiempo. ¿Hay alguna forma de que esto suceda automáticamente?
Cuando tmux se inicia o abre una nueva ventana, no carga mi .profile
o .bashrc
. Termino escribiendo . ~/.bashrc
todo 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 bash
ejecutan 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 bash
salida, 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, ~/.bashrc
se 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-command
comando 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-shell
opció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_ENV
El 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 ~/.bashrc
como 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 tmux
De este hilo:
parece que el uso .bash_profile
funcionaría.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
La solución que funcionó para mí es la siguiente:
.bash_profile
archivo si no tiene uno en~
.bash_profile
poner source ~/.bashrc
osource ~/.profile
El 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 tmux
ventanas / 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 tmux
ventana, así que puse exec zsh
en la parte inferior de mi~/.profile
.