kshスクリプト内からkshのバージョンを安全に取得するにはどうすればよいですか?
ksh --versionecho ${.sh.version}echo $KSH_VERSION
そして、適切な状況を考えると、これらはそれぞれ正常に機能します。しかし、私は完璧ではないケースに関心があります。
具体的には、古いバージョンのkshを使用しているいくつかのマシンがありますが、私の目的のために、機能が大幅に不足しています。とにかく、バージョンを(プログラムで)チェックする理由は、kshバージョンが性能の低いバージョンの1つであるかどうかを確認するためです。もしそうなら、あまり素晴らしいコードではないブランチを実行したいです。
しかし、問題のあるマシンでは、シェルの無能さはバージョンのチェックにまで及びます...
- 試してみると
ksh --version、何も表示されず、ksh!の新しいインスタンスが開きます。 私が試みるなら
echo ${.sh.version}、kshこれを捨てることができない構文エラーとしてこれを扱います2> /dev/null。$ echo ${.sh.version} 2> /dev/null ksh: ${.sh.version}: bad substitutionもちろん
echo $KSH_VERSION正常に動作するように見えます-クラッシュしないことを意味します-これらのマシンでは空白です。また、私は見たどこかKSH_VERSIONのみで設定されているがpdksh。
質問:
kshプログラムでバージョンを安全に確認するにはどうすればよいですか?ここでの目的のために、実際のバージョン番号が何であるかは気にしませんksh。それがの古いバージョンであるかどうかだけです。- で
$KSH_VERSION十分に良いですか?空白の場合、ksh必然的に古いバージョンですか?他のフォーラムは正しいのkshですか? - これを確認する方法はまったくありませんか?
PS1この関数を使用するように設定しています。ただし、Old kshはではサポート$()していませんPS1。したがって、kshの最新バージョンのPS1場合、作成した関数を使用します。古いバージョンの場合、を使用し$PWDます。