less는 env 내에서 호출될 때 출력을 페이지 매김하지 않습니다.

less는 env 내에서 호출될 때 출력을 페이지 매김하지 않습니다.

업데이트 후, 내 Tinted Bash 프로필에 페이지 매김이 끊어진 것을 발견했습니다 man. 무엇이 변경되었는지는 모르겠지만 호출로 인해 페이지 매김 동작 없이 env less hello.txt콘텐츠가 hello.txt터미널(예: cat)에 에코된다는 사실로 범위를 좁혔습니다. 이 문제를 어떻게 디버그하고 해결할 수 있나요?

일부 환경 변수의 영향을 제거하기 위해 최소한의 환경에서 테스트했습니다.

env -i TERM=xterm-256color /usr/bin/less hello.txt

심지어:

env -i /usr/bin/less hello.txt

또한 파일을 표준 출력으로 인쇄합니다. 동일한 소프트웨어 버전을 사용하는 다른 시스템에서는 페이징이 작동합니다( TERM보존된 경우).

에반은 다르게 행동하기 때문에 env -i그 원인이 내 환경에 있는 것은 아니라고 생각합니다.

lessenv: less 581.2 (PCRE2 regular expressions)및 와 동일한 버전 GNU coreutils 8.32, 운영 체제는 Arch Linux 64비트, 최신 쉘: 입니다 GNU bash, version 5.1.8(1)-release (x86_64-pc-linux-gnu).

답변1

env foo …일반적인 동작과 다른 동작에 대한 가장 가능성 있는 설명 foo …은 그것이 foo함수 또는 별칭이라는 것입니다. 외부 명령 이므로 외부 명령으로 env찾습니다 .foo

하지만 여기서는 env그 자체가 별칭입니다. 분명히 env표준 명령이 아닌 경우 env다르게 동작할 수 있습니다.

이건 실수로 밝혀졌어GRC파일을 설정합니다Bash 시작 중에 포함됨(zsh 및 Fish 버전도 있습니다.) 다음을 포함한 여러 명령을 env별칭으로 정의합니다: alias env표준 출력과 표준 오류가 파이프로 리디렉션되어 지정된 명령을 실행하고 파이프에 이스케이프 시퀀스를 삽입하여 텍스트 색상을 변경합니다. . 이는 사람들이 읽고 싶은 출력을 좋은 형식으로 생성하는 명령에 적합합니다. 하지만 이렇게 하는 것은 의미가 없습니다 . 이 명령의 주요 목적은 수정된 환경으로 다른 명령을 호출하는 것입니다. 사용자가 실행될 때 자동으로 출력 및 오류 출력을 파이프로 리디렉션하는 것은 파괴적이며 어쨌든 grc는 출력 색상을 지정하는 방법을 모르기 때문에 쓸모가 없습니다. 목표는 인수 없이 출력을 색상화하는 것입니다. 그러면 환경이 표시되지만 출력이 처음에는 사용자 친화적이지 않기 때문에 거의 쓸모가 없습니다. 그와 달리 정렬된 출력을 생성하기 때문에 더 나은 작업을 수행합니다 . a 인용된 형식으로 명시적으로 줄바꿈을 사용하여 값을 만듭니다).grc -es envgrc -es …grcenvfooenv fooenvenvexportenv

관련 정보