首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么将LESS_TERMCAP设置放在~/..profile中时不能工作

为什么将LESS_TERMCAP设置放在~/..profile中时不能工作
EN

Unix & Linux用户
提问于 2021-12-30 17:45:05
回答 1查看 335关注 0票数 2

我有以下LESS_TERMCAP设置:

代码语言:javascript
复制
# less config
export LESS=-R         
export LESS_TERMCAP_mb=当我投入到~/.profile中时,观看者就会变得非常混乱。另一方面,当我投入到~/.zshrc (我正在使用zsh)时,它是有效的,为什么?由于我被教会将环境变量保存在非登录shell配置文件(如~/.profile )中,所以我想这样做。更多信息: tapyu@tapyu-ThinkPad-P73
 OS: Ubuntu 20.04 focal
 Kernel: x86_64 Linux 5.13.0-28-generic
 Uptime: 2h 25m
 Packages: 2559
 Shell: zsh 5.8
 Resolution: 2048x1152
 DE: GNOME 3.36.5
 WM: Mutter
 WM Theme: Adwaita
 GTK Theme: Yaru-dark [GTK2/3]
 Icon Theme: Yaru
 Font: Ubuntu 11
 Disk: 123G / 217G (60%)
 CPU: Intel Core i7-9750H @ 12x 4.5GHz [43.0°C]
 GPU: Intel Corporation UHD Graphics 630 (Mobile)
NVIDIA Corporation GP107GLM [Quadro P620] (rev a1)
 RAM: 4740MiB / 23681MiB诚挚的问候。\E[01;31m' # begin blinking
export LESS_TERMCAP_md=当我投入到D1中时,观看者就会变得非常混乱。另一方面,当我投入到D2 (我正在使用D3)时,它是有效的,为什么?由于我被教会将环境变量保存在非登录shell配置文件(如D4 )中,所以我想这样做。更多信息:A5诚挚的问候。\E[01;31m' # begin bold    
export LESS_TERMCAP_me=当我投入到D1中时,观看者就会变得非常混乱。另一方面,当我投入到D2 (我正在使用D3)时,它是有效的,为什么?由于我被教会将环境变量保存在非登录shell配置文件(如D4 )中,所以我想这样做。更多信息:A5诚挚的问候。\E[0m' # end mode          
export LESS_TERMCAP_se=当我投入到D1中时,观看者就会变得非常混乱。另一方面,当我投入到D2 (我正在使用D3)时,它是有效的,为什么?由于我被教会将环境变量保存在非登录shell配置文件(如D4 )中,所以我想这样做。更多信息:A5诚挚的问候。\E[0m' # end standout-mode
export LESS_TERMCAP_so=当我投入到D1中时,观看者就会变得非常混乱。另一方面,当我投入到D2 (我正在使用D3)时,它是有效的,为什么?由于我被教会将环境变量保存在非登录shell配置文件(如D4 )中,所以我想这样做。更多信息:A5诚挚的问候。\E[01;44;37m' # begin standout-mode
export LESS_TERMCAP_ue=当我投入到D1中时,观看者就会变得非常混乱。另一方面,当我投入到D2 (我正在使用D3)时,它是有效的,为什么?由于我被教会将环境变量保存在非登录shell配置文件(如D4 )中,所以我想这样做。更多信息:A5诚挚的问候。\E[0m' # end underline
export LESS_TERMCAP_us=当我投入到D1中时,观看者就会变得非常混乱。另一方面,当我投入到D2 (我正在使用D3)时,它是有效的,为什么?由于我被教会将环境变量保存在非登录shell配置文件(如D4 )中,所以我想这样做。更多信息:A5诚挚的问候。\E[01;33m' # begin underline
export LESSOPEN='| /usr/bin/highlight -O ansi %s 2>/dev/null'

当我投入到D1中时,观看者就会变得非常混乱。另一方面,当我投入到D2 (我正在使用D3)时,它是有效的,为什么?

由于我被教会将环境变量保存在非登录shell配置文件(如D4 )中,所以我想这样做。

更多信息:

A5

诚挚的问候。

EN

回答 1

Unix & Linux用户

发布于 2021-12-31 21:15:41

检查LESS_TERMCAP_xxx变量的值:

代码语言:javascript
复制
print -lr ${(q)LESS_TERMCAP_mb}

(或者,如果不使用zsh:echo "$LESS_TERMCAP_mb" | od -tx1c)

正如Thomas猜测的那样,很有可能你会看到\$\\E\[01\;31m而不是 ($ \ E […)而不是033 […)。如果.profile是由一个shell调用的,比如dash,它不理解语法,就会发生这种情况。/bin/sh是包括Ubuntu在内的许多流行发行版的破折号。

一种解决方案是使用另一种表示转义字符的方法。您可以使用printf可移植地生成它:

代码语言:javascript
复制
esc=$(printf \\033)
export LESS_TERMCAP_mb="${esc}[01;31m" # begin blinking
…

或者,在.zshrc中定义这些变量。这样做的好处是允许您根据终端的功能定制它们的内容。然后,您可能需要调用tput,而不是硬编码转义序列。(关于减少的文件_特姆卡普_*变量?可能会有所帮助。)

或者,使用减键定义这些变量,后者将它们写入less的配置文件(~/.less)中。如果您总是将它们设置为相同的值,这比将它们放在环境中更有意义,因为它们是一种less具体来说。然而,这在较早版本的旧式中行不通.

\033'\[01\;31m (D5…)而不是D6…)。如果D7是由一个shell调用的,比如dash,它不理解D8语法,就会发生这种情况。D9是包括Ubuntu在内的许多流行发行版的破折号。

一种解决方案是使用另一种表示转义字符的方法。您可以使用D10可移植地生成它:

A11

或者,在D12中定义这些变量。这样做的好处是允许您根据终端的功能定制它们的内容。然后,您可能需要调用D13,而不是硬编码转义序列。(C14可能会有所帮助。)

或者,使用C15定义这些变量,后者将它们写入less的配置文件(D16)中。如果您总是将它们设置为相同的值,这比将它们放在环境中更有意义,因为C17。然而,C18.

…'语法,就会发生这种情况。D9是包括Ubuntu在内的许多流行发行版的破折号。

一种解决方案是使用另一种表示转义字符的方法。您可以使用D10可移植地生成它:

A11

或者,在D12中定义这些变量。这样做的好处是允许您根据终端的功能定制它们的内容。然后,您可能需要调用D13,而不是硬编码转义序列。(C14可能会有所帮助。)

或者,使用C15定义这些变量,后者将它们写入less的配置文件(D16)中。如果您总是将它们设置为相同的值,这比将它们放在环境中更有意义,因为C17。然而,C18.

\033'\[01\;31m (D5…)而不是D6…)。如果D7是由一个shell调用的,比如dash,它不理解D8语法,就会发生这种情况。D9是包括Ubuntu在内的许多流行发行版的破折号。

一种解决方案是使用另一种表示转义字符的方法。您可以使用D10可移植地生成它:

A11

或者,在D12中定义这些变量。这样做的好处是允许您根据终端的功能定制它们的内容。然后,您可能需要调用D13,而不是硬编码转义序列。(C14可能会有所帮助。)

或者,使用C15定义这些变量,后者将它们写入less的配置文件(D16)中。如果您总是将它们设置为相同的值,这比将它们放在环境中更有意义,因为C17。然而,C18.

票数 1
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/684455

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档