printf %s\\n "$-"
単一文字列の単一文字オプションをリストします。
このパラメーターは次のようにも使用できます。
set -f -- ${-:+"-$-"}
echo *don\'t* *glob* *this*
set +f "$@"
最初の無効シェルに-f同時に値保存中ilename拡張$-があれば- -でを$1。次に、グロブは発生せず、最後の+fファイル名展開が再び有効になり、場合によっては無効にもなります。
たとえば-f、の値$-が最初に保存されたときにファイル名の展開がすでに無効になっている場合、その保存された値は(少なくとも)になります。
f
そして、set再度実行すると、次のようになります。
set +f -f
これにより、開始した場所にすぐに戻ることができます。
set +o
すべての一覧が表示されますsetテーブルシェルのオプションを(参照ジェイソンの答えのためのshoptオプション- -言葉ということでしょうか?できるの)シェル再突入のために安全な形で。そのようにして、次のこともできます。
state=$(set +o)
set -some -crazy -options
eval "$state"
シェルオプションの状態をそれぞれ保存、変更、および復元するには。
shoptイオンとsetテーブルオプションを一度に処理するには:
state=$(set +o;shopt)
#do what you want with options here
eval "$state"
引数set なしで呼び出して、シェルに現在設定されているすべての変数のリストを追加することもできます-シェルへの再入力のためにも引用されます また、bashでコマンドtypeset -fpを追加して、現在宣言されているすべてのシェル関数を含めることもできます。eval準備ができたら、まとめてまとめてください。alias同じものをさらに引数なしで呼び出すこともできます。それは...しかし、それをカバーするかもしれません。私はそれが"$@"あると思う-あなたがするbash前に、最初に配列に入れなければならないだろう、と思うset。
いや、もありtrapます。これは少しおかしいです。通常:
trap 'echo this is my trap' 0
(echo this is my subshell; trap)
...だけ印刷されます、これは私のサブシェルでサブシェルが新しいプロセスであるとの独自のセットを取得するのでtrapので、任意の継承されません-秒trap秒が、その親が明示的に無視していたもの- (ようtrap '' INT)。
しかしながら:
trap 'echo this is my trap' 0
save_traps=$(trap)
trapコマンド置換サブシェルで実行される最初で唯一のコマンドである場合traps、シェルへの安全な再入力のために引用符で囲まれた形式で現在設定されている親シェルのリストを再現するという特別な動作をします。そして、あなたは行うことができsave_traps、その後、 set引数なし-すでに述べた残りのすべて-ほとんどすべてのシェル状態のロックを取得します。ただし、元のシェルvar属性を明示的に追加export -pおよびreadonly -p復元したい場合があります。
とにかく、それで十分です。
set +oとの 両方を使用する必要がありshoptますか?(shopt言葉になることができるようsettableに、manページで使用されているのでshoptable、私のために働く)