Wenn tmux ein neues Fenster startet oder öffnet, wird mein .profile
oder nicht geladen .bashrc
. Am Ende schreibe ich . ~/.bashrc
jedes Mal. Gibt es eine Möglichkeit, dies automatisch zu erreichen?
Wenn tmux ein neues Fenster startet oder öffnet, wird mein .profile
oder nicht geladen .bashrc
. Am Ende schreibe ich . ~/.bashrc
jedes Mal. Gibt es eine Möglichkeit, dies automatisch zu erreichen?
Antworten:
Ja, am Ende von .bash_profile
setzen Sie die Zeile:
. ~/.bashrc
Dadurch wird die RC-Datei automatisch unter den Umständen abgerufen, unter denen normalerweise nur das Profil verarbeitet wird.
Die Regeln bash
für die Ausführung bestimmter Dateien sind kompliziert und hängen von der Art der zu startenden Shell (Anmeldung / Nichtanmeldung, interaktiv oder nicht usw.) sowie von Befehlszeilenargumenten und Umgebungsvariablen ab.
Sie können sie in der man bash
Ausgabe sehen, suchen INVOCATION
Sie einfach nach - Sie werden wahrscheinlich etwas Zeit brauchen, um sie zu verdauen und zu dekodieren :-)
.bashrc/.profile is not loaded on new tmux session (or window) — why?
Das Ausführen von bash hat explizit für mich funktioniert, indem diese Zeile zu meiner ~ / .tmux.conf-Datei hinzugefügt wurde:
set-option -g default-command "exec /bin/bash"
~/.tmux.conf
: set -g default-command "/bin/bash"
. Danke Kumpel.
Frühere Antworten lieferten Lösungen, erklärten jedoch nicht den Grund. Hier ist es.
Dies hängt mit den Bash-Init-Dateien zusammen. Wird standardmäßig ~/.bashrc
in einem interaktiven Nicht-Login verwendet Shell . Es wird nicht in einer Login-Shell bezogen. Tmux verwendet standardmäßig eine Login-Shell . Daher werden Shells, die mit tmux gestartet wurden, übersprungen ~/.bashrc
.
default-command
Shell-BefehlDer Standardwert ist eine leere Zeichenfolge. die tmux anweist, eine Anmeldeshell mit dem Wert der
default-shell
Option zu erstellen .
Init-Dateien für Bash,
/etc/profile
~/.bash_profile
, ~/.bash_login
,~/.profile
(Nur erste, das vorhanden ist )/etc/bash.bashrc
(einige Linux; nicht unter Mac OS X)~/.bashrc
$BASH_ENV
Die seltsame interaktive Anforderung, keine Logins zu laden, verwirrt die Leute auch in anderen Situationen. Die beste Lösung besteht darin , die Ladeanforderung nur~/.bashrc
als interaktiv zu ändern. Genau das tun einige Distributionen wie 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
Dies sollte die gewünschte Lösung sein. Und ich empfehle jedem Bash-Benutzer, dies im Profil einzurichten.
Verweise
man tmux
Aus diesem Thread:
scheint mit .bash_profile
würde funktionieren.
$echo case $- in *i*) . ~/.bashrc;; esac >> .bash_profile
Die Lösung, die für mich funktioniert hat, ist die folgende:
.bash_profile
Datei, wenn Sie keine haben~
.bash_profile
Putsource ~/.bashrc
odersource ~/.profile
Das Problem sollte jetzt behoben sein.
Ich hatte das gleiche Problem und die Lösungen haben bisher bei mir nicht funktioniert. Die Lösung, die letztendlich für mich funktioniert hat, finden Sie hier .
Kurz gesagt, tmux
Windows / Sessions verwenden eine Anmeldeshell, die ~/.profile
beim Start unter anderem nach einer anderen Datei sucht .
Was ich wollte, war, dass zsh mit jedem neuen tmux
Fenster beginnt, damit ich es exec zsh
am Ende meines Fensters platziere ~/.profile
.