Ich möchte mein bash_profile
in einem Git-Repository aufbewahren und es auf alle Maschinen klonen, auf die ich Shell-Zugriff habe. Da ich die tmux
meiste Zeit über eine user@host
Zeichenfolge in der Statuszeile habe, wird diese nicht wie üblich in der Shell-Eingabeaufforderung angezeigt.
Es sind jedoch nicht alle von mir verwendeten Sites tmux
installiert, oder ich verwende sie möglicherweise nicht immer. Ich möchte erkennen, wann ich nicht in einer tmux
Sitzung bin, und meine Eingabeaufforderung entsprechend anpassen. Bisher .bash_profile
sieht meine halbgebackene Lösung in etwa so aus:
_display_host_unless_in_tmux_session() {
# ???
}
export PROMPT_COMMAND='PS1=$(_display_host_unless_in_tmux_session)${REST_OF_PROMPT}'
(Jedes Mal zu überprüfen ist wahrscheinlich nicht der beste Ansatz. Daher bin ich offen für Vorschläge für eine bessere Vorgehensweise. Bash-Skripte sind nicht meine Stärke.)
TMUX_PANE
. Ich habe es nur bemerkt, weil dein Rezept nicht funktioniert hat. Später stellte ich fest, dass ichunset
eine Variable in einem Shell-Skript, das ich über my beschaffe, über Gebühr verwendet hatte (und anschließend ).profile
.[ "$TERM" = "screen" ]
funktioniert möglicherweise nicht. In meinem Fall wurde mein Bildschirm alsscreen-256
Farbe gemeldet .Nachdem ich verschiedene Methoden ausprobiert habe, hat dies letztendlich für mich funktioniert, falls es jemandem da draußen hilft:
In diesem Code-Snippet überprüfe ich, ob wir nicht in der TMUX-Umgebung sind. Ich starte es. Wenn Sie diesen
.bashrc
Codeausschnitt in Ihre Datei einfügen, wird TMUX automatisch ausgeführt, sobald Sie das Terminal öffnen! PS: auf Ubuntu-Shell getestet.quelle
Wie bei früheren Antworten kann das Testen der
${TERM}
Variablen zu Eckfällen führen undtmux
Umgebungsvariablen in ihrem eigenen Leben festlegen:Um zu überprüfen, ob Sie sich in einer
tmux
Umgebung befinden, überprüfen Sie einfach:$ [ -z "${TMUX}" ] && echo "not in tmux"
quelle