cronジョブで夜ごとに実行されるbashスクリプトがあります。大文字と小文字を区別しないファイル一致が必要なため、スクリプトは次のように呼び出します。
shopt -s nocaseglob
これが他のcronスクリプトに影響しないことを確認したいと思います。このスクリプトが終了してもこの設定は保持されますか?または、スクリプトの実行中にのみこの設定が有効になりますか?
ありがとうございます!
答え1
設定オプションはshopt
シェル設定です。実行されるシェルインスタンスにのみ影響します。シェルプロセスによって呼び出されるサブシェルと同様の構文は$(…)
ローカルです(…)
。同時にまたは後で実行される他のシェルスクリプトには影響を与えず、このスクリプトによって実行されるコマンドで実行されるスタンドアロンbashスクリプトにも影響しません。
変数をエクスポートしない限り、変数の値と型にも同様に適用されます。関数にはローカル変数もあります。オプションは、関数内で設定すると関数が返されるとそのままになるため、常にグローバル変数です。
環境変数(つまり、エクスポートされた変数)、I / Oリダイレクト、リソース制限、umask、現在のディレクトリ、およびその他のさまざまな設定は、現在のシェルプロセスとすべての子プロセス(つまり、このスクリプトで呼び出されるすべてのコマンド)に適用されます。また、同時に実行できる無関係なプロセスにエスケープされません。