温馨提示×

centos反引号历史来源是什么

小樊
37
2026-10-18 00:55:44
栏目: 智能运维

在 CentOS(以及所有类 Unix / Linux 系统)中,反引号(`)用于命令替换(command substitution),它的历史来源其实并不是 CentOS 特有的,而是来自 早期 Unix Shell 的传统。

下面按时间线说明:


1. 反引号最早来自 Bourne Shell

  • 1970 年代末,AT&T Unix 的 Bourne Shell(sh) 引入了一种语法:
    `command`
    
  • 作用:先执行反引号中的命令,再把输出结果替换到原位置
  • 示例:
    echo "Today is `date`"
    

这是 Unix 中最早的命令替换方式。


2. 为什么用反引号?

在当时:

  • 键盘上反引号(`)和单引号(')、双引号(")都属于“引号类字符”
  • Shell 设计者 Stephen Bourne 用它来表示“执行并替换”
  • 反引号在当时的终端和文档中都容易输入和区分

3. CentOS 继承自 Unix / Linux 传统

CentOS 的 shell 默认是:

  • bash(Bourne Again Shell)
  • bash 完全兼容 Bourne Shell

所以 CentOS 自然继承了:

`command`

这种写法。


4. 后来出现更现代的写法:$()

  • 在 Korn Shell(ksh) 和 POSIX 标准 中,引入了:
    $(command)
    
  • 优点:
    • 可嵌套
    • 可读性更好
    • 不容易和单引号混淆

示例对比:

echo "User: `whoami`"
echo "User: $(whoami)"

5. 现在的使用建议

  • 反引号:仍然可用,但偏“老式”
  • $():推荐写法(CentOS / Linux 通用)

总结一句话

CentOS 中的反引号命令替换,来源于 1970 年代 Unix 的 Bourne Shell,是 Unix 命令替换最早的标准写法,后来被 Linux 和 CentOS 继承,并逐渐由 $( ) 替代。

如果你愿意,我也可以讲 反引号在脚本中的坑 或 和 $() 的具体区别。

0 踩