我在 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
,您可以根据自己的喜好进行更改。