tmux가 PS1 프롬프트를 채색하지 않음 “\033[1;33m hi”예상대로 동작하는 것처럼

나는 최근 터미널 시청의 즐거움을 위해 약간의 태양 색을 수용하기 위해 PS1 변수를 변경하기로 결정했습니다. tmux 세션에 있지 않으면 모든 것이 훌륭합니다! 무지개, 조랑말, 유니콘 및 독특한 프롬프트! 멋있는!

그러나 문제는 tmux에 있습니다. PS1의 가치가 내가 기대하는 것과 tmux가 실행되지 않을 때와 같은지 확인했습니다 \[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\].

.bash_profile의 모든 별칭 등도 예상대로 작동합니다. tmux는 echo -ne "\033[1;33m hi"예상대로 동작하는 것처럼 색상을 사고없이 표시합니다 gls --color.

내 .bash_profile의 현재 관련 줄은 export PS1="\[\033]0;\w\007\]\[\[\]\]\u\[\]@\[\[\]\]\h\[\]:\[\]\W\[\]$ \[\]"원래 .bash_prompt 파일에있는 스크립트를 일부 조건부 등을 처리하기 위해 소싱하고 있었지만 더 간단한 버전으로 되돌리려 고했습니다.

실행 bash하면 프롬프트가 색상으로 표시되지만 각 창에서 수행해야합니다. export PS1=[that long string I've already posted]하지 않을 것이다.

내 .tmux.conf는 다음과 같습니다.

set-option -g default-command "reattach-to-user-namespace -l /usr/local/bin/bash"
set -g default-terminal "xterm-256color"
set-window-option -g automatic-rename on
bind '"' split-window -c "#{pane_current_path}"
bind % split-window -h -c "#{pane_current_path}"
bind c new-window -c "#{pane_current_path}"

.bash_profile의 관련 부분 :

export TERM="xterm-256color"
if which tmux >/dev/null 2>&1; then
    test -z "$TMUX" && (tmux attach || tmux new-session)
fi

나는 macOS Sierra, iTerm 2를 사용하고 있습니다. 현재 홈 브루 버전의 bash와 시스템 bash (현재 홈 브루를 사용하고 있습니다), tmux 2.4를 모두 시도했습니다.

또한 touch testing_touch_from_bash_profile두 개의 창이있는 tmux 세션에서 내 .bash_profile에 배치 하고 하나의 창을 종료하고 창을 열어 파일이 실제로 생성되었는지 확인했습니다.

echo $TERM을 반환합니다 xterm-256color.

tmux를 종료 할 때 설정 변경을 테스트하기 위해 tmux를 종료했으며 tmux를 통해 시스템에서 현재 실행중인 tmux 프로세스가 없는지 확인했습니다 ps -ax | grep tmux.

이상하게도 .bash_prompt 스크립트를 소싱하면 각 tmux 창 내에서 색상을 변경하는 한 색상도 변경됩니다.

/programming/21005966/tmux-prompt-not-following-normal-bash-prompt-ps1-w를 보고 첫 번째 줄에서 bash 호출 후 –login 플래그를 추가하려고했습니다. 내 .tmux.conf의. tmux with tmux new bash를 시작 하면 첫 번째 창이 색상 화되지만 이후의 창이 나타나지 않습니다.

$ PS1 변수는 필드 색상 지정을 제외한 모든 측면에 적용됩니다.

누구든지 아이디어가 있습니까?



답변

PS1은 또한 흑백 출력을 제공합니다.

그러나 다시 광산으로 전환하면 색상이 생겨서 다른 것을 알아낼 수 있어야합니다.

$ echo $PS1
\[\033[01;31m\]\t \[\033[01;32m\]durrantm \[\033[02;36m\]\h \[\033[01;34m\]`pwd | sed "s#\(/[^/]\{1,\}/[^/]\{1,\}/[^/]\{1,\}/\).*\(/[^/]\{1,\}/[^/]\{1,\}\)/\{0,1\}#\1_\2#g"` \[\033[00;33m\]$(git_branch)\[\033[00m\]\n\$

git_branch는 내가 가진 bash 함수입니다.

git_branch () { 
  git branch 2> /dev/null | sed -e '/^[^*]/d' -e 's/* \(.*\)/\1/'
}

당신 대 광산 :

여기에 이미지 설명을 입력하십시오

이것은 OSX와 Ubuntu에서 동일하게 작동합니다.


답변

이 문제에 대한 나의 해결책은 설정이었습니다.

force_color_prompt=yes

.bashrc. 이제 tmux 프롬프트에 색상이 있습니다.


답변

내 컴퓨터에서 해결책은

set -g default-terminal "xterm-256color"

~/.tmux.conf.


답변