bash - 有何作用?bash 与 bash - 的区别是什么
bash 与 bash - 的区别解析 核心差异
虽然在管道场景(比如curl ... | bash或curl ... | bash -)下运行效果看似一致,但两者存在两个关键细节区别:
$0变量的取值不同:- 运行
bash时,$0会被设置为bash; - 运行
bash -时,$0会被设置为-bash,这和登录shell启动时的$0格式一致。部分脚本会通过检查$0是否以-开头,来判断是否处于登录环境,但绝大多数通用脚本(比如你用到的NodeSource安装脚本)不会依赖这个判断,所以实际执行效果无差异。
- 运行
- 明确指定输入来源:
bash在未指定脚本文件参数时,默认从标准输入(stdin)读取命令;bash -则是显式强制bash从标准输入读取命令。如果bash启动时带有其他参数,-可以确保输入来源是stdin,但在管道这种单一输入场景下,这个区别不会体现。
为什么你没在手册里找到?
bash手册中关于-参数的说明藏在"Invocation"章节的参数列表里:-作为参数时,会让bash将$0设为-bash,并模拟登录shell的启动行为(但不会完全等同于bash -l的登录环境),这个细节比较隐蔽,容易被忽略。
内容的提问来源于stack exchange,提问作者Foobar
相关产品推荐
相关产品推荐

