26

当您查看您选择的 Linux 附带的 bash 函数时,您经常会看到private(推荐意义上的私有)函数是这样编写的:

__private_func() {
    :
}

因此,您首先想知道为什么私有函数不只_使用一个下划线 ( )... 然后您会看到 bash 完成函数通常以单个下划线开头,通常使用双下划线调用私有函数,就像之前的示例一样:

_complete_func() {
    __private_func
}

我想知道的是:这是什么原因?关于如何为私有函数添加前缀是否有一些约定?

4

1 回答 1

19

我查看了 bash 手册页和POSIX shell 标准,但无法找到有关此命名约定的任何内容。也就是说,在 C 中使用下划线表示保留名称或内部名称。引用libc 保留名称手册

除了本手册中记录的名称之外,保留名称还包括以下划线 ('_') 开头的所有外部标识符(全局函数和变量)以及以两个下划线或下划线后跟大写字母是保留名称

这个命名约定的主要逻辑是:

这样库和头文件可以为内部目的定义函数、变量和宏,而不会与用户程序中的名称发生冲突

它还有一个好处是能够轻松地在“私有”和“公共”函数之间进行 grep(我把它放在引号中,因为用户可以调用任何一种形式,而不管命名如何)。

于 2013-03-03T03:05:13.523 回答