シェルスクリプトはSolarisで実行されますか?そうでない場合に互換性を持たせる最速の方法は次のとおりです。

シェルスクリプトはSolarisで実行されますか?そうでない場合に互換性を持たせる最速の方法は次のとおりです。

私は #!/bin/sh shebang を使ってシェルスクリプトを作成しました。 Solarisでは動作しないと聞きました。 Kornシェルスクリプトを作成する必要があります。

ところで、スレッドの1つで、誰かが上部のshebangだけを変更すれば変換が可能であると述べました。これは、Solarisのshがある他のディレクトリを指します。

これが本当かどうかはわかりませんし、明確にしてくれたら嬉しいです。

このアプローチはうまくいくでしょうか?これが最善の方法ですか?

答え1

スクリプトが移植可能であると仮定すると、つまりbashisms、GNUisms、またはPOSIX以外のものを使用しない場合は、shebangを介して#!/bin/shほとんどのUnixおよびLinuxオペレーティングシステムで動作する必要があります。

ただし、Solaris 10 以前には/bin/shPOSIX シェルはありませんが、POSIX より前のバージョンであり、後で標準に付属する機能が不足している古い Bourne シェルがあります。

スクリプトをそのままにすると問題が発生する可能性がありますが、POSIX準拠のSolarisシェルを指すようにshebangを設定すると、この問題を簡単に解決できます。

#!/usr/xpg4/bin/sh

デフォルトのSolarisユーティリティと異なる場合は、POSIX互換ユーティリティを選択するには、スクリプトの最初に次の行も追加する必要があります。

PATH=$(getconf PATH):PATH

答え2

はい、そうです。

SolarisとLinuxでは状況が異なるため、単一のスクリプトを作成する必要がある場合は、この方法を使用できます。

#!/usr/bin/env sh

< Your Code>

これはうまくいきます。

Linuxで。

$which sh
/bin/sh

ソラリスから。

$which sh
/usr/bin/sh

単一スクリプトでこのパスを回避するには、env次のコマンドを使用できます。

関連情報