.sh 和 .ksh —— 三种主要的 Shell简介(Korn shell)

和现在的开发语言一样,语法上有些差异!

  三种主要的 Shell 与其分身 

  在大部份的UNIX系统,三种著名且广被支持的shell 是Bourne shell(AT&T shell,在 Linux 下是BASH)、C shell(Berkeley shell,在 Linux 下是TCSH)和 Korn shell(Bourne shell的超集)。这三种 shell 在交谈(interactive)模式下的表现相当类似,但作为命令文件语言时,在语法和执行效率上就有些不同了。 
  •   Bourne shell 是标准的 UNIX shell,以前常被用来做为管理系统之用。大部份的系统管理命令文件,例如 rc start、stop 与shutdown 都是Bourne shell 的命令档,且在单一使用者模式(single user mode)下以 root 签入时它常被系统管理者使用。Bourne shell 是由 AT&T 发展的,以简洁、快速著名。 Bourne shell 提示符号的默认值是 $。
  •   C shell柏克莱大学(Berkeley)所开发的,且加入了一些新特性,如命令列历程(history)、别名(alias)、内建算术、档名完成(filename completion)、和工作控制(job control)。对于常在交谈模式下执行 shell 的使用者而言,他们较喜爱使用 C shell;但对于系统管理者而言,则较偏好以 Bourne shell 来做命令档,因为 Bourne shell 命令档比 C shell 命令档来的简单及快速。C shell 提示符号的默认值是 %。
  •   Korn shell 是Bourne shell 的超集(superset),由 AT&T 的 David Korn 所开发。它增加了一些特色,比 C shell 更为先进。Korn shell 的特色包括了可编辑的历程、别名、函式、正规表达式万用字符(regular expression wildcard)、内建算术、工作控制(job control)、共作处理(coprocessing)、和特殊的除错功能。Bourne shell 几乎和 Korn shell 完全向上兼容(upward compatible),所以在 Bourne shell 下开发的程序仍能在 Korn shell 上执行。Korn shell 提示符号的默认值也是 $。在 Linux 系统使用的 Korn shell 叫做 pdksh,它是指 Public Domain Korn Shell。
  除了执行效率稍差外,Korn shell 在许多方面都比 Bourne shell 为佳;但是,若将 Korn shell 与 C shell 相比就很困难,因为二者在许多方面都各有所长,就效率和容易使用上看,Korn shell 是优于 C shell,相信许多使用者对于 C Shell 的执行效率都有负面的印象。 

  在shell 的语法方面,Korn shell 是比较接近一般程序语言,而且它具有子程序的功能及提供较多的资料型态。至于 Bourne shell,它所拥有的资料型态是三种 shell 中最少的,仅提供字符串变量和布尔型态。在整体考量下 Korn shell 是三者中表现最佳者,其次为 C shell,最后才是 Bourne shell,但是在实际使用中仍有其它应列入考虑的因素,如速度是最重要的选择时,很可能应该采用 Bourne shell,因它是最基本的 shell,执行的速度最快。 

原文地址:https://www.cnblogs.com/dlsunf/p/9203887.html

时间: 2024-10-08 23:25:02

.sh 和 .ksh —— 三种主要的 Shell简介(Korn shell)的相关文章

Linux-常用shell简介及shell基本操作

1.查询shell环境变量,切换shell种类 ? 表明目前使用的shell种类是bash. 要想改变shell种类,在终端输入想要运行的shell名称即可.在切换shell种类的过程中,可能会操作失败,这是因为ubuntu没有自带安装想要切换的shell种类. ? 2.shell命令的基本格式 shell的命令格式如下: command -options [argument] command:shell命令的名称. -options:选项,同一个命令可能有很多不同的选项,用来完成不同的具体功能

Kubernetes的三种探针

k8s支持存活livenessProbe和就绪readinessProbe两种探针 两种探针都支持以下三种方式 1.exec 通过执行shell命令的方式,判断退出状态码是否是0 示例 exec: command: - cat - /tmp/healthy 2.tcp 通过TCP请求的方式,是否能建立tcp连接 示例 tcpSocket: port: 8080 initialDelaySeconds: 15 periodSeconds: 20 3.httpGet 通过发起http请求,判断返回结

[shell]Shell简介

Shell简介 它虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序.建立文件并以并行的方式协调各个程序的运行.因此,对于用户来说,shell是最重要的实用程序,深入了解和熟练掌握shell的特性极其使用方法,是用好Unix/Linux系统的关键.可以说,shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度. Shell有两种执行命令的方式: 交互式(Interactive):解释执行用户的命令,用户输入一条命令,Shell就解释执行一条.

shell之路【第一篇】shell简介与入门

shell简介 1.Shell 诞生于 Unix,Unix的第一个脚本语言,是与 Unix/Linux 交互的工具,单独地学习 Shell 是没有意义的,shell使用的熟练程度反映了用户对Unix/Linux使用的熟练程度.2.Shell需要依赖其他程序才能完成大部分的工作,这或许是它的缺陷,但它不容置疑的长处是:简洁的脚本语言标记方式,而且比C语言编写的程序执行更快.更有效率. 3.Shell脚本和编程语言很相似,也有变量和流程控制语句,但Shell脚本是解释执行的,不需要编译,Shell程

shell执行三种方法

查看当前shell echo $SHELL grep root /etc/passwd 开头: #!/bin/bash #!/bin/sh ls -l /bin/sh shell种类 cat /etc/shells /etc/init.d/nfs /etc/init.d/crond /etc/init.d/rc.d/rc.sysinit bash --version shell执行三种方法: 1,sh t.s 或者 shell t.s 2,/server/scripts/t.sh 或者 ./t.

在shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)——转载

原文链接:http://blog.chinaunix.net/uid-22548820-id-3181798.html fork ( /directory/script.sh) :如果shell中包含执行命令,那么子命令并不影响父级的命令.在子命令执行完后再执行父级命令,子级的环境变量不会影响到父级. fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本.运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候,

Shell三种执行方式(简单参数说明)

Shell三种执行方式   (非原创,忘记了是谁的博客叻) 1: . 文件名 1.source命令用法:   source FileName    作用:在当前bash环境下读取并执行FileName中的命令.该filename文件可以无"执行权限"     注:该命令通常用命令"."来替代.     如:source bash_profile   . bash_profile两者等效.     source(或点)命令通常用于重新执行刚修改的初始化文档.    

在shell脚本中调用另一个脚本的三种不同方法(fork, exec, source)

一.fork  ( /directory/script.sh) :如果shell中包含执行命令,那么子命令并不影响父级的命令,在子命令执行完后再执行父级命令.子级的环境变量不会影响到父级. fork是最普通的, 就是直接在脚本里面用/directory/script.sh来调用script.sh这个脚本. 运行的时候开一个sub-shell执行调用的脚本,sub-shell执行的时候, parent-shell还在. sub-shell执行完毕后返回parent-shell. sub-shell

Shell脚本的三种执行方式

Shell脚本的执行方式可以有以下几种: 方式一:  ./script.sh # 利用小数点来执行 方式二:  sh script.sh 或 bash script.sh # 利用bash(sh)来执行脚本 前面两种方式其实都是一样的:都是在当前父进程下的子进程中执行,子进程完成后,子进程中的各项变量或操作将会结束而不会传回到父进程中.举例来说: 可以看到,执行后再看脚本中两个变量,在父进程中不起作用! 备注: 如果在script2.sh文件里面执行script1.sh的脚本,那么就是执行.