哪个文件定义了 LESSOPEN 环境变量?

mai*_*ash 5 less configuration environment-variables

在我的 Linux 机器上 - 我执行以下操作:

$ env | grep -i LESSOPEN
LESSOPEN=|/usr/bin/lesspipe.sh %s
Run Code Online (Sandbox Code Playgroud)

所以从env命令我看到:

LESSOPEN=|/usr/bin/lesspipe.sh %s
Run Code Online (Sandbox Code Playgroud)

我想更改变量LESSOPEN,因此我执行以下搜索以找到它所在的位置,以便我可以进行此更改。

$ grep -Ril "LESSOPEN" /
Run Code Online (Sandbox Code Playgroud)

但是grep搜索没有找到任何这样的文件LESSOPEN

Mar*_*ick 10

在 Red Hat 和 CentOS 系统上,它在/etc/profile.d/less.sh. 在第 5 版中,这包含

# less initialization script (sh)
[ -x /usr/bin/lesspipe.sh ] && export LESSOPEN="${LESSOPEN-|/usr/bin/lesspipe.sh %s}"
Run Code Online (Sandbox Code Playgroud)

在其他系统上,例如版本 7,该值可能是||/usr/bin/lesspipe.sh %s; 以|and开头的值之间的解释略有不同||,在less 手册页中有详细说明。

如果您希望系统上类似 bash 的 shell 的所有用户看到不同的值,您可以编辑该文件,或者通过编辑~/.bashrc或一行~/.bash_profile来为自己覆盖它export LESSOPEN=whatever

在 Linux 系统上,grep -r string /或者grep -R string /在读取某些特殊文件时可能会遇到问题。grep读取时会挂起/dev/rfkill,并且由于我认为是缓冲区分配错误,读取/proc. 另一种方法是排除/dev/proc

find / '(' -path /proc -o -path /dev ')' -prune -o -type f -exec grep -il lessopen {} +
Run Code Online (Sandbox Code Playgroud)