Systemd `journalctl` - 无法更改默认 $PAGER

Systemd `journalctl` - 无法更改默认 $PAGER

我在 Arch Linux 上。

我发现了一些新的寻呼机软件OV并安装了它。它有更多的功能,less而且我喜欢它,所以我想将它设置为我的默认寻呼机。

我将以下内容添加到我的 .bashrc 中:

export PAGER=/usr/bin/ov

大多数程序都尊重这个环境变量(例如man),但由于某种原因journalctl没有。在谷歌搜索这个问题时,我发现了另一个变量SYSTEMD_PAGER。我预计设置此环境变量可以解决问题,但事实并非如此。

即使:

export PAGER=/usr/bin/ov
export SYSTEMD_PAGER=/usr/bin/ov

那没有用。然后我尝试显式传递 var:

PAGER=/usr/bin/ov journalctl
SYSTEMD_PAGER=/usr/bin/ov journalctl

没有运气。journalctl 总是使用默认less寻呼机。

我确实找到了一种强制它的方法:

journalctl | ov

这可行,但我不想每次都通过管道传输。它应该尊重环境变量。

我查看了journalctl文档,但找不到答案。

是否可以为 systemd 配置默认寻呼机journalctl?如果是这样,怎么办?

答案1

SYSTEMD_PAGERSECURE我想您已经看到了实际效果。从man journalctl:

$SYSTEMD_PAGER
   Pager to use when --no-pager is not given; overrides $PAGER.
   If neither $SYSTEMD_PAGER nor $PAGER are set, a set of
   well-known pager implementations are tried in turn, including
   less(1) and more(1), until one is found. If no pager
   implementation is discovered no pager is invoked. Setting
   this environment variable to an empty string or the value
   "cat" is equivalent to passing --no-pager.

   Note: if $SYSTEMD_PAGERSECURE is not set, $SYSTEMD_PAGER (as
   well as $PAGER) will be silently ignored.

和:

$SYSTEMD_PAGERSECURE
   Takes a boolean argument. When true, the "secure" mode of the
   pager is enabled; if false, disabled. If $SYSTEMD_PAGERSECURE
   is not set at all, secure mode is enabled if the effective
   UID is not the same as the owner of the login session, see
   geteuid(2) and sd_pid_get_owner_uid(3). In secure mode,
   LESSSECURE=1 will be set when invoking the pager, and the
   pager shall disable commands that open or create new files or
   start new subprocesses. When $SYSTEMD_PAGERSECURE is not set
   at all, pagers which are not known to implement secure mode
   will not be used. (Currently only less(1) implements secure
   mode.)

所以这应该有效:

SYSTEMD_PAGERSECURE=true PAGER=/usr/bin/ov journalctl

答案2

据我所知,您无法journalctl使用环境变量更改寻呼机。

最好的方法是在 bash 中使用alias

alias alias_name="command_to_run"

所以在你的情况下它可能是:

alias journalov="journalctl --no-pager | ov"

--no-pager标志摆脱了内部寻呼机,并且应该更快。

现在您的新命令是journalov,您可以根据自己的喜好进行更改。

相关内容