Systemd `journalctl` - 기본값 $PAGER를 변경할 수 없습니다.

Systemd `journalctl` - 기본값 $PAGER를 변경할 수 없습니다.

저는 아치 리눅스를 사용하고 있습니다.

새로운 호출기 소프트웨어를 발견했습니다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. 원하는 대로 변경할 수 있습니다.

관련 정보