tmux가 PS1 프롬프트를 채색하지 않음


11

나는 최근 터미널 시청의 즐거움을 위해 약간의 태양 색을 수용하기 위해 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 변수는 필드 색상 지정을 제외한 모든 측면에 적용됩니다.

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


작은 따옴표를보십시오
Kevin

5
PS1게시 한 설정에 색상을 변경하라는 명령이 없습니다. tmux 외부에서 작동하는 실제 설정을 게시하십시오. 또한 PS1in in .bashrc이 아닌에 설정해야합니다 .bash_profile. .bash_profile전혀 실행되지 않을 수 있으며 나중에 설정이 재정의 될 수 있습니다.
Gilles 'SO- 악마 그만'

답변:


3

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에서 동일하게 작동합니다.


11

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

force_color_prompt=yes

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


이것이 왜 tmux에서 외부와 다르게 작동하는지 확실하지 않지만 이것은 나에게도 속임수였습니다.
Matt Lacey

잉크를 지정해야합니다. 명령을 실행 tmux한 다음 tmux 세션 실행 내부에서 수행해야합니다 source ~/.bashrc. 각 패널에서이를 수행해야합니다.
evaristegd

고마워,이 작업은 우분투 18.04 그놈 터미널에서도 가능합니다.
intijk

2

내 컴퓨터에서 해결책은

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

~/.tmux.conf.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.