PAGERを使用して最も広く使用されているシェルに適したスクリプトを作成するにはどうすればよいですか?

PAGERを使用して最も広く使用されているシェルに適したスクリプトを作成するにはどうすればよいですか?

デフォルトでは、次のスクリプトがあります。

if [ -t 1 ]; then
  bold="$(tput bold)"
  unbold="$(tput sgr0)"
else
  bold=""
  unbold=""
fi
TEXT="
${bold}Hello World${unbold}
There's a bunch of text in here that I don't control, but I
can escape it, so I put slashes before double quotes (\") and
dollar signs (\$)
"
ACTUAL_PAGER="${PAGER:-"less -R"}"
echo "$TEXT" | $ACTUAL_PAGER

これはbashではうまくいきますが、zshではzsh: command not found: less -RzshがACTUAL_PAGERPAGERmore

bash、zshなどでうまく機能する方法はありますか?

答え1

明示的に書いてください。

if [ -z "$PAGER" ]; then 
  ACTUAL_PAGER="less -R"
else
  ACTUAL_PAGER="$PAGER"  
fi

しかし、なぜ複数の言語のスクリプトを書こうとしているのですか?移植可能なスクリプトが必要な場合は、通常のPOSIXシェルに作成し、そうでない場合は、スクリプトが正しいインタプリタで実行されるように、必要なshebangを指定します。 PythonとPerlで実行される単一のスクリプトを作成しようとしていませんが、なぜbashとzshで実行される単一のスクリプトを作成しようとしますか?

関連情報