シェルスクリプトは現在、シェルとは異なるシェルに作成されています。

シェルスクリプトは現在、シェルとは異なるシェルに作成されています。

シェルスクリプトが次の場合

#!/bin/sh

しかし、私の$ SHELLの価値はkshです。

kshをshに変更してスクリプトを実行すると、どのような違いがありますか?つまり。スクリプトが実行されるシェルの種類によって異なる動作をするかどうか。

ベストアンサー1

スクリプトが実行されるシェルの種類によって異なる動作をするかどうか。

  • ある意味では、別の方法でbash script.sh行動ksh script.shすることもできます。はい。一般的に違いは、1つは機能し、1つはエラーが発生しますが、さまざまなオプションがあることです。多くの単純なスクリプトは通常のシェルで同じ動作をしますが、より複雑なスクリプトは他のシェルが提供する言語間の多くの違いの1つに直面する可能性があります。

  • スクリプトはあなたの値によって異なる動作をしますかSHELL?スクリプトが$SHELL直接または間接的に自分自身を呼び出す、テストする、またはその値を使用する場合にのみ適用されます。通常のシェルスクリプトは通常そうではありませんが、可能です。

  • スクリプトは、呼び出された親シェルによって異なる動作をしますか?ごくまれです。スクリプトはそれを検出するためにかなり多くの作業を行う必要があるため、ほぼ意図的でなければなりません。


考えるあなたのユースケースはインタラクティブシェル(例:)./script.shで実行されています。これが正しい場合は、上記の最後のケースに属し、スクリプトはあなたが直接使用している他のシェルとほぼ同じ方法で実行されます。システムは常に新しいプロセスを作成し、スクリプトを実行するように指示します。shksh/bin/sh

おすすめ記事