Chciałbym, aby moje bash_profile
w repozytorium git i sklonować go do maszyny, co mam dostęp do powłoki. Ponieważ przez tmux
większość czasu mam user@host
ciąg znaków w wierszu stanu, a nie jego tradycyjne miejsce w wierszu poleceń powłoki.
tmux
Jednak nie wszystkie witryny, z których korzystam, zostały zainstalowane lub nie zawsze mogę z nich korzystać. Chciałbym wykryć, kiedy nie jestem w tmux
sesji i odpowiednio dostosować mój monit. Jak dotąd moje na wpół upieczone rozwiązanie .bash_profile
wygląda mniej więcej tak:
_display_host_unless_in_tmux_session() {
# ???
}
export PROMPT_COMMAND='PS1=$(_display_host_unless_in_tmux_session)${REST_OF_PROMPT}'
(Sprawdzanie za każdym razem prawdopodobnie nie jest najlepszym podejściem, dlatego jestem otwarty na sugestie, jak to zrobić lepiej. Skrypty Bash nie są moją mocną stroną).
TMUX_PANE
. Zauważyłem tylko, że twój przepis nie zadziałał. Później dowiedziałem się, że niesłusznie użyłem (a następnieunset
) zmiennej w skrypcie powłoki, który pozyskuję.profile
.[ "$TERM" = "screen" ]
może nie działać. W moim przypadku mój ekran zgłaszał się jakoscreen-256
kolorowy.Po wypróbowaniu różnych sposobów, to ostatecznie działało dla mnie, na wypadek, gdyby to pomogło komukolwiek:
W tym fragmencie kodu sprawdzam, czy nie znajdujemy się w środowisku TMUX, uruchamiam go. Jeśli umieścisz ten fragment kodu w swoim
.bashrc
pliku, automatycznie uruchomisz TMUX za każdym razem, gdy otworzysz terminal! PS: testowane na powłoce Ubuntu.źródło
Podobnie jak w przypadku poprzednich odpowiedzi, testowanie
${TERM}
zmiennej może prowadzić do przypadków narożnych,tmux
ustawia zmienne środowiskowe w swoim życiu:Aby sprawdzić, czy jesteś w
tmux
środowisku, po prostu sprawdź:$ [ -z "${TMUX}" ] && echo "not in tmux"
źródło