set +h
呼び出されるシェルスクリプトの効果を継承できないようです。
これはシェルスクリプト(./call
)です。
#!/bin/bash
set +h
export SHELLOPTS
./called
これは次のとおりです./called
。
#!/bin/bash
echo \$-=$-
echo SHELLOPTS=$SHELLOPTS
実行すると、./call
以下が印刷されます。
$-=hB
SHELLOPTS=braceexpand:hashall:interactive-comments
エクスポート時にシェルオプションが継承されたと思いましたSHELLOPTS
。これは明らかに真実ではありません。
set +h
呼び出されるシェルスクリプトの効果を継承する方法はありますか?
ベストアンサー1
~からバッシュマニュアル:
SHELLOPTSに表示されるオプションは、「set -o」によって「on」と報告されたオプションです。 Bash起動環境にこの変数が含まれていると、起動ファイルを読み取る前にリスト内の各シェルオプションが有効になります。
オプションが表示されます。オフには表示されないため、SHELLOPTS
新しいシェルがそれを有効または無効にするかどうかには影響しません。
次のいずれかの方法を試すことができます。
bash +h ./called
スクリプトの使用または実行set +h
ファイルを挿入し、これが影響を与えると考えて、BASH_ENV
そのファイルのパスを設定します。export
みんなbash インスタンスの 1 つが設定を解除するかエクスポートをキャンセルしない限り、bash インスタンスはその行に沿って起動されます。