在shell脚本中使用$ -

mrg*_*mrg 5 unix linux bash shell

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

$ echo $-
himBH
$
Run Code Online (Sandbox Code Playgroud)

什么是他的意思?它代表什么.

提前致谢...

Giu*_*Pes 8

它返回当前shell的标志.该$-变量包含终端中当前活动的shell标志.这些标志确定shell将如何为您运行.在您的情况下,这些标志具有以下含义(请注意,所有这些都是默认值):

  • h:"hashall"的缩写(读为"hash all"),这告诉bash通过查询PATH记住它找到的命令的位置.

  • i:"交互式"的缩写,这很好,因为这是一个与我交互的shell(输入输入和返回输出)!1

  • m:"监视器"的缩写,这可以在bash中启用作业控制(例如,您可以通过bg将作业发送到后台).

  • B:"braceexpand"的缩写(读作"大括号扩展"),这允许你在bash2中使用非常有效的大括号扩展.

  • H:"histexpand"的缩写(读作"hist [history] ​​expand"),这使您可以通过使用感叹号为其编号来重新运行历史记录中的命令3.

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

set +H 
echo $- 
himB
Run Code Online (Sandbox Code Playgroud)

删除H标志.而-

set -H
echo $- 
himBH
Run Code Online (Sandbox Code Playgroud)

恢复它.就是这样,有点混乱,但+删除了一个标志,而-添加了一个标志.


更多信息: