実行中のシェルのバージョン番号を取得するためにすべてのシェルで動作するPOSIX互換の方法または方法はありますか?
操作できるように名前/バイナリをインポートできますが、非常に単純なシェル(Travis-CI / Ubuntu Trustyでテスト済み)でも機能しません。$SHELL
ps -p$$ -ocmd=
$SHELL --version
$(ps -p$$ -ocmd=) --version
sh
ほとんどのシェルに機能する方法はありますか(たとえば、case
シェルを区別する必要がある場合)。
編集する:これは、情報提供の目的でのみ使用されるシェルバージョンを印刷するために使用されます。はいいいえ戻り値で操作を実行するには、その値をユーザーに表示するだけです。
ベストアンサー1
--version
定義されたフラグはありません。sh
ユーティリティ用POSIX規格。どのようなバージョン情報も含む標準環境やシェル変数はありません。これはシェルが不均一であることを意味します。必要そのバージョンを利用可能にしてください。
特定のバージョンのシェルをテストする必要がある場合、スクリプトはPOSIXと互換性がない可能性が高いため、質問は関係ありません。
ksh
シェルについては、以下を参照してください。kshバージョンを安全に入手するには?