CSH Vs. BASH:了解主流NIX外壳之间的区别

930 阅读4分钟

如果你正在寻找主流Nix shells之间的区别,也就是CSH与BASH之间的区别,这篇文章就是专门为你准备的。C shell,表示为CSH,Bourne Again Shell,表示为BASH,都是Unix shell。Unix shell作为一个命令行解释器工作,为用户提供命令行界面。shell是一种脚本语言,用于使用shell脚本或计算机程序来控制系统的执行。

程序员通过终端模拟器与Unix shell互动。然而,如今,通过串行硬件直接操作已经相当普遍。shell不显示操作系统的细节,并把系统内核 的细节管理好。Unix外壳包括一些功能,如文件名通配符、命令替换、管道、这里的文件、控制结构以及用于迭代和条件测试的变量。

随着时间的推移,各种Unix shell已经被创造出来,但BASH和CSH是最有影响力的,也是分布最广的。这两个都被用作许多衍生产品和类似作品的模型和编码基础。尽管BASH和CSH都是Unix shells,但它们并不完全相同。

根本的区别

Bourne Shell,sh,由Stephen Bourne编写。Bourne Shell引入了Unix shell的基本功能,如命令替换、这里的文件、更多的通用变量和内置控制结构。在Unix中 "sh "的路径被写成/bin/sh。由于受到sh的启发,BASH是由Brian Fox为流行的GNU项目创建的。

在写了一年多的代码后,Fox于1989年将BASH作为一个测试版发布。Brian Fox一直是这个Unix shell的维护者,直到1994年左右,Chet Ramey成为BASH的主要维护者。从这时起,BASH获得了最高的人气,并成为各种发行版的默认外壳。它的全路径是/bin/bash。

后来,BASH被移植到Windows,并与MinGWCygwin一起发布,还被移植到DOSOpenVMSNovell NetWareArcaOS,最后通过不同的终端模拟器移植到Android

说到CSH,它是由Bill Joy用C语言编写的。它于1978年首次发布。它包括表达式语法和控制结构。CSH是与BSD Unix一起发布的。BSD或Berkeley Software Distribution是一个建立在Research Unix之上的操作系统。BSD这个词通常代表它的继承者,包括OpenBSDFreeBSDDragonFly BSDNetBSD

CSH为交互式工作引入了一整套功能,如别名、目录栈、历史和编辑机制、cdpath、作业控制、tilde符号和路径散列。尽管这些功能被复制到其他各种shells中,但主要的语言结构从未被复制过。唯一类似的作品是Hamilton C shell。命令全路径是/bin/csh。

在一些系统上,CSH可能是TENEX C Shell的一个硬链接(目录条目),也被称为TCSH。TCSH是原Joy的CSH的加强版。

不同的特点

本文的这一部分将带您了解CSH与BASH在不同参数方面的区别。

Bourne兼容性。BASH与Bourne shell是兼容的。CSH与Bourne shell不兼容。

速度:BASH的速度更快,而C shell的速度更快。

特点。BASH和C shell在Linux和Unix上都能工作。CSH有其独特的特点,而BASH在其独特的特点的基础上,还吸收了其他的外壳特点,如CSH和KSH(Korn Shell)。这使得BASH成为广泛使用的外壳,比CSH有更多的功能。

配置文件。在CSH上工作但在BASH上不工作的配置文件包括/etc/.login, /etc/csh.cshrc, /etc/csh.login, /.cshrc, /.login, /.logout。在BASH上有效但在CSH上无效的文件是$ENV(通常是/.kshrc)、/etc/profile、/.profile、/.bash_profile、/.bash_login、/.bash_logout、~/.bashrc。

流行程度。BASH比C shell更受欢迎。

它们是如何工作的

下面是BASH和CSH的一些例子和工作实例。这使我们更容易区分这两个Nix shells。

CSH中的几个例子

  • ^H表示退格,使用^?来执行删除,^U表示杀死字符。
  • 一个命令后面有一个参数,比如说标志参数。它是由'-'符号启动的。如果命令是给定的,它也定义了文件大小。
  • 特殊字符被使用。它们在语法上和语义上都有壳的说明。
  • 文件名由'/'分隔。每个部分都指定了它在目录中的位置。
  • CSH中可以使用'*'。
  • 可以进行命令终止。
  • 每个shell都有自己的变量集。
  • 输入可以通过Aliases进行转换。
  • 要形成一个目录,在终端输入 "mkdir"。
  • 可以创建独立的目录,使你的搜索更快、更容易。你只需要在写命令的时候记住这个文件夹。

BASH中的几个实例

  • 你在echo后面输入的任何东西都会被显示为输出。例如,如果你在echo之后输入 "sky",天空就会被输出。
  • 在BASH中有一些默认的命令。例如,cal用于日历;date给出当前日期,等等。
  • 在BASH中,"pwd "命令表示打印工作目录。在终端中使用这个命令,当前目录就会显示为输出。
  • ls "命令显示你正在处理的最新的电子邮件、文件、文件夹的信息。这个命令拉出了存储在主目录中的数据。
  • '$'表示你已经作为标准用户登录了
  • 使用 "cd "来导航到一个文件夹。

总结

在这篇文章中,你已经了解了CSH与BASH。总结一下,这两个主流Unix shells的主要区别如下。

  • CSH命令以哈希(#)开头,但BASH命令以分号(;)开头
  • CSH是交互式的。BASH被认为是一个非交互式终端。
  • Bill Joy开发了CSH。BASH是由Brian Fox重新创建的
  • CSH最初出现在1970年代。BASH在1989年进行了重组
  • 与CSH相比,BASH更多地被工作的专业人士使用。

希望这篇文章能达到你了解BASH和C shell之间的区别的目的,你可以找到你想要的所有信息。