「less」は、Bash と Git で呼び出されると異なる動作をします。

「less」は、Bash と Git で呼び出されると異なる動作をします。

より大きな違いを見るには、を使用してgit diffページを付けますless。これは別のウィンドウを開いてデータを確認することでps -aux確認できます/proc

しかしless、Gitで呼び出すと、ヒット後に端末の内容を以前の状態に復元しませんq(差分内容は端末に残ります)。しかし、私がするとき

git diff commit1 commit2 --color | less -R

lessキーを押して終了するとq内容が消え、端末は前の状態に戻ります。

私がそうするなら、はるかに興味深いのは

export PAGER=less LESS='-R'

呼び出しgit diff(またはページャを呼び出す他のコマンド)は、lessBashシェルから直接呼び出すのと同じように動作します。

私

以下は私の問題を説明する短いスクリーンショットです。左ペインでは、コマンドは次のように実行されます。

unset PAGER GIT_PAGER LESS
git diff HEAD^ HEAD

右側のウィンドウでコマンドを表示できます。最新のコミットでは、yファイルに100行以上が記録されました。終了するには、両方のウィンドウでlessキーを使用してくださいq

違いが何であるかを教えて、その理由を説明できる人はいますか?

ベストアンサー1

文書:

LESS環境変数が設定されていない場合、Gitはそれを設定します(FRX環境LESS変数が設定されている場合、Gitはそれをまったく変更しません)。

-X()オプションは、--no-init終了後に端末を消去しないように機能しますless

おすすめ記事