bash 中 BASH_ARGV0 的目的是什么?

Ras*_*sWL 3 bash variable

Bash-5.0的版本中提到他们添加了

BASH_ARGV0:一个新变量,它扩展为 $0 并在赋值时设置 $0。

这样做的目的是什么?什么时候这比仅使用有改进$0

Ste*_*itt 5

变更日志说

    - BASH_ARGV0: new dynamic variable, returns $0 on reference and sets
      $0 on assignment.  From a suggestion from  Rocky Bernstein <rocky@gnu.org>
      a few years ago
Run Code Online (Sandbox Code Playgroud)

Rocky Bernstein 是BASH Debugger的最初作者之一。调试时,能够设置$0为不同的值会很有用;十年前,这导致了这个建议,即set0内置可以实现这一点。我认为BASH_ARGV0是等价的特殊变量形式而不是内置变量。

$0只允许您读取值;在 Bash 5 之前,它只能在启动 shell 时设置。BASH_ARGV0允许您写入和读取值。0不是用于赋值的有效变量名,启用0=...会更加复杂。

  • 有人可能会问为什么需要一个新变量,而不是直接赋值给 `$0`。但是由于 `0` 不是有效的变量名,`0=value` 不被识别为赋值,并且更改它会更复杂(并且向后不兼容) (4认同)