
現在のシェルで有効になっているオプションを確認したいと思います。たとえば、-x
または、-e
あるいは他のいくつかのオプションを使用して呼び出されたかどうかを知りたいのです。
私はsource
シェバン行を含むシェル スクリプトを作成し、その後スクリプトの末尾#!/bin/bash -x
で 'x' をオフにしようとしました。ここで、この行が成功したかどうかを確認したいと思います。set +x
set +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
。