如果你正在寻找主流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,并与MinGW 和Cygwin一起发布,还被移植到DOS、OpenVMS、Novell NetWare、ArcaOS,最后通过不同的终端模拟器移植到Android 。
说到CSH,它是由Bill Joy用C语言编写的。它于1978年首次发布。它包括表达式语法和控制结构。CSH是与BSD Unix一起发布的。BSD或Berkeley Software Distribution是一个建立在Research Unix之上的操作系统。BSD这个词通常代表它的继承者,包括OpenBSD、FreeBSD、DragonFly BSD和NetBSD。
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, /.bash_profile、/.login, /.profile、/.logout。在BASH上有效但在CSH上无效的文件是$ENV(通常是/.kshrc)、/etc/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之间的区别的目的,你可以找到你想要的所有信息。