我想检查当前 shell 启用了哪些选项。例如,我想知道是否使用-x
或-e
或任何其他选项调用了我。
我source
编写了一个带有 shebang 行的 shell 脚本,然后尝试在脚本末尾#!/bin/bash -x
使用 a 关闭“x” 。现在我想检查我的行是否成功。set +x
set +x
尝试的解决方案
我已经发现了printenv
一些set
方法来检查有关当前 shell 的一些信息,但它们似乎都不包含存储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
。