Zusammenfassung
Wenn ich eine neue tmux-Sitzung erstelle, wird meine Eingabeaufforderung von einer Standard-Bash-Konfiguration abgeleitet und ich muss sie manuell ausführen, source ~/.bashrc
um meine benutzerdefinierte Eingabeaufforderung zu erhalten.
Analyse
Ich benutze eine RHEL 7 Maschine. Ich habe dieses Verhalten nach einem Bash-Update vor einiger Zeit bemerkt, bin aber bis jetzt noch nicht dazu gekommen, die Frage zu stellen (und bin mir nicht sicher, um welches Update es sich handelt).
Zum Beispiel habe ich meine Eingabeaufforderung so angepasst, dass sie wie folgt aussieht:
[user@hostname ~]$
Immer wenn ich eine neue tmux-Sitzung starte, wird der scheinbare Bash-Standard verwendet:
-sh-4.2$
Ein kurzer Durchlauf von source ~/.bashrc
behebt immer das Problem, aber es ist ärgerlich, dass ich dies jedes Mal tun muss, wenn ich etwas Kleines reparieren möchte. Irgendwelche Ideen, wie man tmux dazu bringt, dies wieder automatisch zu tun?
Für weitere Informationen stehe ich gerne zur Verfügung.
tmux.conf
Als Referenz habe ich meine tmux.conf
Datei unten, obwohl es kaum das ist, was Sie als Gewohnheit bezeichnen können.
setw -g mode-keys vi
# reload tmux.conf
bind r source-file ~/.tmux.conf \; display-message " ✱ ~/.tmux.conf is reloaded"
source ~/.bashrc
Zeile zu meiner hinzugefügt , habe.bash_profile
versucht , mich aus- und wieder einzuloggen, eine neue tmux-Sitzung zu erstellen, aber keine Änderung. Irgendwelche Ideen?.tmux.conf
die Zeile in Ihre Datei einzufügenset-option -g default-shell "/bin/bash"
. Dies sollte Ihr Problem lösen (zumindest hoffe ich es)!bash
über Homebrew installiert haben und dies nicht funktioniert, wechseln Sie"/bin/bash"
zu"/usr/local/bin/bash"
.Dies hängt mit den Bash-Init-Dateien zusammen. Wird standardmäßig
~/.bashrc
in einer interaktiven Shell ohne Anmeldung verwendet . 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
.Init-Dateien für Bash,
/etc/profile
~/.bash_profile
,~/.bash_login
,~/.profile
(Nur erste, das vorhanden ist )/etc/bash.bashrc
(etwas Linux; nicht unter Mac OS X)~/.bashrc
$BASH_ENV
Lösung
Das seltsame interaktive Laden ohne Anmeldung verwirrt die Menschen auch in anderen Situationen. Die beste Lösung ist , die Ladeanforderung von
~/.bashrc
as interactive zu ändern , was genau das ist, was manche Distributionen, wie Ubuntu, tun.Dies sollte die gewünschte Lösung sein. Und ich empfehle jedem Bash-Benutzer, dies im Profil einzurichten.
Verweise
man tmux
quelle
Folgendes hinzufügen zu
.tmux.conf
:Ergibt NICHT das gewünschte Ergebnis.
Nur wenn eine Addition
source "$HOME/.bashrc"
zum~/.bash_profile
angestrebten Ergebnis erzielt wird.Dies funktioniert in einer aktiven tmux-Sitzung, wenn Sie ein neues Fenster oder einen neuen Bereich öffnen, und auch, wenn Sie eine neue tmux-Sitzung trennen und öffnen.
Getestet am:
quelle