~/.profile에서 $(tput ...)를 사용하여 LESS_TERMCAP_* 변수를 설정하면 작동하지 않습니다.

~/.profile에서 $(tput ...)를 사용하여 LESS_TERMCAP_* 변수를 설정하면 작동하지 않습니다.

이 내 꺼야 ~/.bashrc:

# ...unnecessary lines skipped...
# man colors
LESS_TERMCAP_mb=$(tput blink) # start bold
LESS_TERMCAP_md=$(tput setaf 2 ; tput bold) # start bold
LESS_TERMCAP_me=$(tput sgr0)  # turn off bold, blink and underline
LESS_TERMCAP_so=$(tput smso)  # start standout (reverse video)
LESS_TERMCAP_se=$(tput rmso)  # stop standout
LESS_TERMCAP_us=$(tput smul)  # start underline
LESS_TERMCAP_ue=$(tput rmul)  # stop underline
export LESS_TERMCAP_mb
export LESS_TERMCAP_md
export LESS_TERMCAP_me
export LESS_TERMCAP_so
export LESS_TERMCAP_se
export LESS_TERMCAP_us
export LESS_TERMCAP_ue

이것은 작동하며 매뉴얼 페이지에서 색상을 볼 수 있습니다. 그러나 행을 에서 으로 이동하고 다시 로그인하면 ~/.bashrc매뉴얼 ~/.profile페이지의 색상이 사라집니다.

tput여러 제어 기호보다 깔끔하기 때문에 사용하고 싶은 유혹이 듭니다 .

tput더 이상 작동하지 않습니까 .profile?

답변1

tput$TERM환경 변수에서 현재 터미널 에뮬레이터를 알아야 하기 때문에 작동하지 않습니다 . 읽을 때 ~\.profile터미널 에뮬레이터가 사용되지 않으므로 tput출력이 생성되지 않습니다.

tput키를 통해 -T사용할 터미널 기능을 지정할 수 있습니다 . 따라서 다음 코드가 작동합니다.

LESS_TERMCAP_mb=$(tput -T ansi blink) # start bold
LESS_TERMCAP_md=$(tput -T ansi setaf 2 ; tput -T ansi bold) # start bold
LESS_TERMCAP_me=$(tput -T ansi sgr0)  # turn off bold, blink and underline
LESS_TERMCAP_so=$(tput -T ansi smso)  # start standout (reverse video)
LESS_TERMCAP_se=$(tput -T ansi rmso)  # stop standout
LESS_TERMCAP_us=$(tput -T ansi smul)  # start underline
LESS_TERMCAP_ue=$(tput -T ansi rmul)  # stop underline
export LESS_TERMCAP_mb
export LESS_TERMCAP_md
export LESS_TERMCAP_me
export LESS_TERMCAP_se
export LESS_TERMCAP_so
export LESS_TERMCAP_ue
export LESS_TERMCAP_us

관련 정보