Aliasy i tmux

12

Aliasy zdefiniowane w .bash_aliasesi .bashrcnie działają w tmux.

Czy można to zmienić w niektórych konfiguracjach, aby działały aliasy tmux?

xralf
źródło
2
Czy na pewno masz problem tmux? Korzystam z tmuxa około roku i nie widziałem żadnych problemów z aliasami. Spróbuj dodać set -xna początku .bashrci uruchom tmuxpolecenie source ~/.bashrc. Być może znajdziesz jakieś błędy, a to rozwiąże twój problem.
pędzi

Odpowiedzi:

9

tmuxUruchamia shell logowania domyślnie, więc ~/.bashrcnie będzie wykonywany (które następnie kolejno źródła ~/.bash_aliases. Trzeba źródła ~/.bashrcz listy ~/.bash_profile. Patrz INVOCATIONsekcja man bash.

Chris Down
źródło
19

(Odpowiedź Chrisa Downa zawiera właściwe wyjaśnienie, ale nie dobre obejście)

Twój problem wynika z połączenia błędu projektowania basha i błędu projektowania tmux.

Domyślnie tmux uruchamia powłokę logowania w każdym oknie. To nie ma sensu: jeśli ustawiłeś tmux jako powłokę logowania, musisz ustawić default-commandopcję na coś innego niż tmux; a jeśli nie ustawiłeś tmux jako powłoki logowania, musisz ustawić default-commandopcję unikania uruchamiania powłoki logowania w tmuxie. Więc wypowiedz to w swoim, ~/.tmux.confaby powiedzieć Tmuxowi, aby uruchomił zwykłą powłokę:

set-option -g default-command $SHELL

Wtedy .bashrczostaniesz przeczytany. Jest jeszcze jeden problem z bash, który nie ma tutaj znaczenia, jeśli skonfigurujesz tmux zgodnie z zaleceniami powyżej, ale który pojawi się ponownie, jeśli zalogujesz się w trybie tekstowym (na konsoli tekstowej lub przez SSH). Bash czyta ~/.bash_profilew powłokach logowania i ~/.bashrcw interaktywnych powłokach, ale tylko wtedy, gdy nie są one powłokami logowania. Aby czytać ~/.bashrcrównież w powłokach logowania, jeśli są interaktywne, dodaj to do ~/.bash_profile:

case $- in *i*) . ~/.bashrc;; esac
Gilles „SO- przestań być zły”
źródło
+! Ostatnią część zajęło naprawienie moich aliasów i monitu PS1, ale tak się stało!
Michael Durrant