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