Quando tmux si avvia o apre una nuova finestra, non carica il mio .profile
o .bashrc
. Finisco per digitare . ~/.bashrc
ogni volta. C'è un modo per farlo accadere automaticamente?
Quando tmux si avvia o apre una nuova finestra, non carica il mio .profile
o .bashrc
. Finisco per digitare . ~/.bashrc
ogni volta. C'è un modo per farlo accadere automaticamente?
Risposte:
Sì, alla fine del tuo .bash_profile
, metti la riga:
. ~/.bashrc
Questo genera automaticamente il file rc in quelle circostanze in cui normalmente elaborerebbe solo il profilo.
Le regole su quando vengono bash
eseguiti determinati file sono complicate e dipendono dal tipo di shell avviata (login / non login, interattiva o meno, e così via), insieme agli argomenti della riga di comando e alle variabili d'ambiente.
Puoi vederli man bash
nell'output, basta cercare INVOCATION
- probabilmente avrai bisogno di un po 'di tempo per digerirlo e decodificarlo :-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
L'esecuzione di bash ha funzionato esplicitamente per me, aggiungendo questa riga al mio file ~ / .tmux.conf:
set-option -g default-command "exec /bin/bash"
~/.tmux.conf
: set -g default-command "/bin/bash"
. Grazie compagno.
Le risposte precedenti fornivano soluzioni ma non spiegavano il motivo. Ecco qui.
Ciò è correlato ai file di inizializzazione di Bash. Per impostazione predefinita, ~/.bashrc
viene utilizzato in una shell interattiva e non di accesso . Non verrà fornito in una shell di accesso. Tmux utilizza una shell di login per impostazione predefinita. Quindi, le shell avviate da tmux skip ~/.bashrc
.
default-command
comando di shellL'impostazione predefinita è una stringa vuota, che istruisce tmux a creare una shell di login utilizzando il valore
default-shell
dell'opzione.
File di inizializzazione per Bash,
/etc/profile
~/.bash_profile
, ~/.bash_login
, ~/.profile
(Solo prima che esiste)/etc/bash.bashrc
(alcuni Linux; non su Mac OS X)~/.bashrc
$BASH_ENV
Lo strano requisito di caricamento interattivo e senza login confonde le persone anche in altre situazioni. La soluzione migliore è modificare i requisiti di caricamento solo~/.bashrc
come interattivo , che è esattamente ciò che stanno facendo alcune distribuzioni, come 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
Questa dovrebbe essere la soluzione che desideri. E consiglio a tutti gli utenti di Bash di impostarlo nel profilo.
Riferimenti
man tmux
Da questo thread:
sembra che l'uso .bash_profile
funzionerebbe.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
La soluzione che ha funzionato per me è la seguente:
.bash_profile
file se non ne hai uno in~
.bash_profile
put source ~/.bashrc
osource ~/.profile
Il problema dovrebbe ora essere risolto.
Ho avuto lo stesso problema e le soluzioni finora non hanno funzionato per me. La soluzione che ha finito per funzionare per me può essere trovata qui .
In breve, le tmux
finestre / sessioni utilizzano una shell di login che cerca ~/.profile
tra gli altri file all'avvio.
Quello che volevo era che zsh iniziasse con ogni nuova tmux
finestra, quindi ho messo exec zsh
in fondo al mio ~/.profile
.