シェルオプションを確認するにはどうすればいいですか?

シェルオプションを確認するにはどうすればいいですか?

現在のシェルで有効になっているオプションを確認したいと思います。たとえば、-xまたは、-eあるいは他のいくつかのオプションを使用して呼び出されたかどうかを知りたいのです。

私はsourceシェバン行を含むシェル スクリプトを作成し、その後スクリプトの末尾#!/bin/bash -xで 'x' をオフにしようとしました。ここで、この行が成功したかどうかを確認したいと思います。set +xset +x

試みられた解決策

printenv現在のシェルに関する情報を調べる方法としてとを発見しましたsetが、どちらにもx eなどを格納する変数は含まれていないようです。

答え1

それは$-変数にあります。

を参照してくださいsetコマンドのドキュメント-- 最後までスクロールすると、「現在のオプション セットは にあります$-。」と表示されます。

簡単なデモ

$ bash
$ echo $-
himBH
$ set -f; set +H
$ echo $-
fhimB
$ [[ $- == *i* ]] && echo This is an interactive shell
This is an interactive shell

答え2

$BASHOPTSおよびもあります$SHELLOPTS

ソース

関連情報