什么" $ - "在bash或zsh中意味着什么?

时间:2016-05-25 05:33:59

标签: bash zsh

今天我发现变量' $ - '是一个随机字符串,但我不知道它代表什么。

➜  ~ echo $-
569JNRTXZghikms

我无法改变价值:

➜  ~ -='sss'
zsh: command not found: -=sss
➜  ~ 

而且,在一个码头工具中它是:

➜  ~ docker  run --rm -ti ubuntu          
root@7084255fd54e:/# echo $-
himBH

或者:

➜  ~ docker  run --rm -ti alpine ash
/ # echo $-
smi

它的价值与系统有关吗?

3 个答案:

答案 0 :(得分:0)

$-为shell设置的当前选项。

来自the Bash Reference Manual

  

使用“+”而不是“ - ”会导致关闭这些选项。该   在调用shell时也可以使用options。目前的设定   选项可以在$ - 。

中找到      

剩下的N个参数是位置参数并被分配,   按顺序,$ 1,$ 2,... $ N.特殊参数#设置为N。

     

除非提供无效选项,否则返回状态始终为零。

答案 1 :(得分:0)

$-为您提供了为shell设置的当前选项。

请参阅此问题的已接受答案,了解其他各种可用的特殊美元变量:

What are the special dollar sign shell variables?

答案 2 :(得分:0)

在使用zsh时,请运行以下命令:

LESS=+/'PARAMETERS SET BY THE SHELL' man zshparam

找到:

  

- < S>在调用时或通过set或setopt命令提供给shell的标志。

对于bash(来自Docker),运行以下命令:

LESS=+/'^ *Special Parameters' man bash

阅读:

  

- 扩展为调用时指定的当前选项标志,set builtin命令或shell本身设置的那些(例如-i选项)。