これらの環境変数を使用しようとすると、空の文字列が表示されます。
$ $PAGER some_file;
bash: some_file: command not found
$
私はいくつかをテストしました。
$ echo $PAGER;
$ man man; ## Here it's using less(1)
$ export PAGER;
$ man man; ## Still using less(1)
$ PAGER='';
$ echo $PAGER;
$ man man; ## Here it uses cat(1)
$ export PAGER;
$ man man; ## Here it uses cat(1), too
$ unset PAGER;
$ man man; ## Here it uses less(1) again
なぜ?この変数をどのように使用できますか?
env |grep PAGER
何も表示されません。
私のシステムはDebian 11(テスト)です。
編集する:
私の意図は、ページャに依存するスクリプトを書くことです。
使用したいが、less
そこにいることを保証することはできませんので、使用したいと思います$PAGER
。
これらの変数は、私が依存できるように常に存在しなければならないわけではありませんか?
ベストアンサー1
man
いいえ頼る存在するPAGER
。 Debian で出力を表示するツールは次のとおりです。次のように決定:
- (または)オプションを設定すると、
-P
このオプションが使用されます。--pager
MANPAGER
環境変数が設定されると、その変数が使用されます。PAGER
環境変数が設定されると、その変数が使用されます。pager
パスに存在し、実行可能な場合はそれを使用してください。- そうでない場合(またはページャがnull値で上書きされた場合)
cat
。
pager
Debianのデフォルト値less
(参考資料を参照readlink -f /usr/bin/pager
)。cat
NULLではないが実行できない値でポケットベルを上書きすると、オーバーライドは適用されず、man -P non-existent
エラーで失敗します。
などの独自の値を設定するには、PAGER
Bash(Debianのデフォルトのユーザーシェル)用のシェル起動ファイルに追加するだけです~/.bashrc
。
言及した環境変数(PAGER
、、、 )はプロセス環境に存在EDITOR
するVISUAL
必要はなく、存在すると期待することもできません。ユーザーが自分の設定を指定できるようにするのに便利ですが、常にデフォルトが必要です。一部のディストリビューションでは、ユニークな汎用コマンドを提供して助けを求めています。sensible-editor
sensible-pager
Debian で。バラよりPOSIX環境変数はシェルに対して定義されていますか?それとも、必ずしもシェルを実行する必要がないプロセスに対して定義されていますか?これに関するさらなる議論。