执行了一个
sudo less ...
Run Code Online (Sandbox Code Playgroud)
...为了查看受限制的日志文件并对其进行一些搜索,我发现我的~/.lesshst
文件的所有权和组更改为root:root
(其中~
指的是调用sudo
命令的用户的主目录,而不是主目录root
,明显地)。
这发生在全新的 Ubuntu 18.04 安装上less --version
:
Run Code Online (Sandbox Code Playgroud)less 487 (GNU regular expressions) Copyright (C) 1984-2016 Mark Nudelman
我找不到(谷歌)任何人观察的参考,更不用说在任何地方解释这种行为了;所以我在这里寻找它的基本原理或确认它只是一个错误的迹象。
Ste*_*itt 16
这是正常的。
sudo less ...
Run Code Online (Sandbox Code Playgroud)
less
以 root 身份运行,但不更改主目录。运行搜索会导致在 中更新搜索历史~/.lesshst
,这将文件的所有权更改为当前用户 root(为确保更新可以安全完成,less
将历史写入新的临时文件,然后重命名;这会导致原始文件的所有权丢失)。
如果你想避免这种情况,你可以告诉less
使用 root 的历史记录,通过告诉sudo
将HOME
变量设置为指向 root 的主目录:
sudo -H less ...
Run Code Online (Sandbox Code Playgroud)
另一种选择是暂时禁用搜索历史:
sudo LESSHISTFILE=- less ...
Run Code Online (Sandbox Code Playgroud)
但是,这确实意味着您将无法使用存储的搜索历史记录(/后跟?,甚至n不指定搜索字符串)。