无文件记录'-c';Bash'的选项;s';声明';?

无文件记录'-c';Bash'的选项;s';声明';?,bash,declare,undocumented-behavior,Bash,Declare,Undocumented Behavior,我在玩Bash变量,错误地使用-c选项(用于const)来声明,而不是正确的-r选项来创建只读变量。令我惊讶的是,变量保留了-c属性,并将我指定的任何值的第一个字母大写 此行为未在declare的用法中列出,无论是在declare--help输出中还是在Bash的信息页面中。虽然-u和-l选项是兼容的,但它似乎与ksh的排版不兼容 这是一个众所周知的未记录功能吗?它是否普遍可用?声明-c、-l和-u似乎是在bash 4.0(在4.0-rc1中引入)中一起添加的,只要--enable casemo

我在玩Bash变量,错误地使用
-c
选项(用于
const
)来
声明
,而不是正确的
-r
选项来创建
只读
变量。令我惊讶的是,变量保留了
-c
属性,并将我指定的任何值的第一个字母大写

此行为未在
declare
的用法中列出,无论是在
declare--help
输出中还是在Bash的信息页面中。虽然
-u
-l
选项是兼容的,但它似乎与ksh的
排版不兼容


这是一个众所周知的未记录功能吗?它是否普遍可用?

声明-c
-l
-u
似乎是在bash 4.0(在4.0-rc1中引入)中一起添加的,只要
--enable casemod attributes
配置标志未被禁用(默认情况下已启用)。有针对它们的测试(在
测试/casemod.tests
中)。为什么
-c
从未被记录下来是一个谜。

这让我想起了未记录的切换大小写扩展:
${foo~}
切换
$foo
的第一个字符,而
${foo~}
切换所有字符。参见相关内容,2010年2月12日星期五09:10:07+0100,Mikael Fridh写道:@LéaGris听起来像是有人应该在那里提交一个新的bug,“declare-c仍然没有文档记录”:@hobbs你在这里:在写这个问题时,我翻遍了Bash的源代码,发现了几乎相同的东西。然而,搜索谷歌没有结果。我希望下一个搜索的人会发现这个答案并发现它有用。看起来他好像忘了:@LéaGris啊哈!很好的侦查工作。@LéaGris,现在看来他可能会摆脱它(但是,不错的侦查。