从 Bash 4.3.48(1) 开始,有几次我错误地表示了它们的意思bash -v
或bash --v
表示了它们不表示的情况。bash --version
从man bash
,bash -v
相当于bash --verbose
;尽管它返回大量输出(据称是一些bashrc
文件,也许更多);我认为它只是开始一个儿童会话。
bash --v
输出少得多,主要是bash: --v: invalid option
.
我打算询问这两者中的任何一个在全默认 bash 中是否会出现问题,但我没有看到任何证据表明这一点,并假设 Bash 新手不应该受到这些压力。
我的问题
我确实误解了man bash
,什么意思bash -v varname
。
使用看似未定义的变量启动新的 bash 会话是什么意思,或者意味着启动它并打印导出变量的值[1
]?
新人注意事项:
- 导出变量是从一个 shell 会话继承到另一个 shell 会话(例如从会话 0 到会话 1)的任何变量。
答案1
你混淆了两件事。
启动
bash
asbash -v
将启动一个设置了( ) shell 选项bash
的 shell 。它相当于and to (少数几个具有长选项等效项的 shell 选项之一)。人们可以通过使用单个字母或在启动时直接使用其长名称来设置任何选项,例如和。set -v
set -o verbose
bash -o verbose
bash --verbose
abefhkmnptuvxBCHP
-o
bash
bash -x
bash -o xtrace
我认为它
-v varname
来自内置test
命令的描述,该命令能够测试变量是否使用test -v varname
或设置[ -v varname ]
。
请参阅bash
手册或中的help set
和。help test
bash
的长选项bash
不能缩写。