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

おすすめ記事