シェルスクリプトが次の場合
#!/bin/sh
しかし、私の$ SHELLの価値はkshです。
kshをshに変更してスクリプトを実行すると、どのような違いがありますか?つまり。スクリプトが実行されるシェルの種類によって異なる動作をするかどうか。
答え1
スクリプトが実行されるシェルの種類によって異なる動作をするかどうか。
ある意味では、別の方法で
bash script.sh
行動ksh script.sh
することもできます。はい。一般的に違いは、1つは機能し、1つはエラーが発生しますが、さまざまなオプションがあることです。多くの単純なスクリプトは通常のシェルで同じ動作をしますが、より複雑なスクリプトは他のシェルが提供する言語間の多くの違いの1つに直面する可能性があります。スクリプトはあなたの値によって異なる動作をしますか
SHELL
?スクリプトが$SHELL
直接または間接的に自分自身を呼び出す、テストする、またはその値を使用する場合にのみ適用されます。通常のシェルスクリプトは通常そうではありませんが、可能です。スクリプトは、呼び出された親シェルによって異なる動作をしますか?ごくまれです。スクリプトはそれを検出するためにかなり多くの作業を行う必要があるため、ほぼ意図的でなければなりません。
私考えるあなたのユースケースはインタラクティブシェル(例:)./script.sh
で実行されています。これが正しい場合は、上記の最後のケースに属し、スクリプトはあなたが直接使用している他のシェルとほぼ同じ方法で実行されます。システムは常に新しいプロセスを作成し、スクリプトを実行するように指示します。sh
ksh
/bin/sh
答え2
いいえ、違いはありません。 このスクリプトを解釈するためのものなので、あなたの値には#!/usr/bin/sh
違いはありません。/usr/bin/sh
$SHELL