linux - 在 shell 脚本中使用 $-

标签 linux bash shell unix

$- 在 Unix 中有什么用。在我的系统中,输出是,

$ echo $-
himBH
$

他BH是什么意思?它代表什么。

提前致谢...

最佳答案

它返回当前 shell 的标志。 $- 变量包含终端中当前处于事件状态的 shell 标志。这些标志决定了你的 shell 如何为你工作。在您的情况下,这些标志具有以下含义(请注意,所有这些都是默认值):

  • h:“hashall”的缩写(读作“hash all”),它告诉 bash 记住它通过查询你找到的命令的位置 路径。

  • i:“interactive”的缩写,很好,因为这是一个shell 我正在与之交互(输入输入并取回输出)!1

  • m:“monitor”的缩写,这可以在 bash 中启用作业控制(因此您可以 例如,通过 bg 将作业发送到后台)。

  • B:“braceexpand”的缩写(读作“brace expand”),这允许您 在 bash2 中使用非常有效的大括号扩展。

  • H:“histexpand”的缩写(读作“hist [history] ​​expand”),这是 是什么使您能够通过开头重新运行历史记录中的命令 它的编号带有感叹号3。

可以使用 set 命令更改这些标志。例如:

set +H 
echo $- 
himB

删除 H 标志。而 -

set -H
echo $- 
himBH

恢复它。就是这样,有点令人困惑,但是 + 删除了一个标志,而 - 添加了一个标志。


更多信息:

关于linux - 在 shell 脚本中使用 $-,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31534079/

相关文章:

linux - MkdirAll权限与linux权限不匹配

c++ - async_receive_from 在 Linux 下接收几个数据包后停止

linux - Unix 和 Linux 究竟有多相似?

linux - 将 HDD 位置(例如 sda)放入变量中的脚本

linux - 警告 : Could not start program with arguments. 警告:执行格式错误

linux - 有没有办法在 posix shell 或 bash 中扇出流?

json - 为什么不是来自 ambari 集群的所有参数都不由蓝图 json 文件表示

bash,如何选择是否通过变量附加重定向(根据 $append 使用 > 或 >>)

bash - 外壳 : In-file converting first field of a text file from decimal to hexadecimal

json - 在已使用引号的 sudo 封装的 sed 命令上使用引号