在 ~/.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

相关内容