私は #!/bin/sh shebang を使ってシェルスクリプトを作成しました。 Solarisでは動作しないと聞きました。 Kornシェルスクリプトを作成する必要があります。
ところで、スレッドの1つで、誰かが上部のshebangだけを変更すれば変換が可能であると述べました。これは、Solarisのshがある他のディレクトリを指します。
これが本当かどうかはわかりませんし、明確にしてくれたら嬉しいです。
このアプローチはうまくいくでしょうか?これが最善の方法ですか?
答え1
スクリプトが移植可能であると仮定すると、つまりbashisms、GNUisms、またはPOSIX以外のものを使用しない場合は、shebangを介して#!/bin/sh
ほとんどのUnixおよびLinuxオペレーティングシステムで動作する必要があります。
ただし、Solaris 10 以前には/bin/sh
POSIX シェルはありませんが、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
次のコマンドを使用できます。