几种常见的shell:sh、bash、csh、tcsh、ash

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。

我们知道,Windows、Mac OS、Android 等操作系统由一家公司开发,所有的核心软件和基础库都由一家公司做决定,容易形成统一的标准,一般不会开发多款功能类似的软件。

而 Linux 是一个开源的操作系统,由多个组织机构开发,不同的组织机构为了发展自己的 Linux 分支可能会开发出功能类似的软件,它们各有优缺点,用户可以自由选择。Shell 就是这样的一款软件(上篇文章讲到,Shell既是脚本编程语言,也是一个命令行程序,或者说一款软件),不同的组织机构开发了不同的 Shell,它们各有所长,有的占用资源少,有的支持高级编程功能,有的兼容性好,有的重视用户体验。常见的 Shell 有 sh、bash、csh、tcsh、ash 等。

 sh

sh 的全称是 Bourne shell,由 AT&T 公司的 Steve Bourne开发,为了纪念他,就用他的名字命名了。

sh 是 UNIX 上的标准 shell,很多 UNIX 版本都配有 sh。sh 是第一个流行的 Shell。

 csh

sh 之后广为流传的 shell 是由柏克莱大学的 Bill Joy 设计的,它的语法有点类似C语言,所以才得名为 C shell ,简称为 csh。

Bill Joy 是一个风云人物,他创立了 BSD 操作系统,开发了 vi 编辑器,还是 Sun 公司的创始人之一。BSD 是 UNIX 的一个重要分支,后人在此基础上发展出了很多现代的操作系统,最著名的有 FreeBSD、OpenBSD 和 NetBSD,就连 Mac OS X 在很大程度上也基于BSD。

tcsh

tcsh 是 csh 的增强版,加入了命令补全功能,提供了更加强大的语法支持。

ash

一个简单的轻量级的 Shell,占用资源少,适合运行于低内存环境,但是与下面讲到的 bash shell 完全兼容。

bash

bash shell 是 Linux 的默认 shell

bash 由 GNU 组织开发,保持了对 sh shell 的兼容性,是各种 Linux 发行版默认配置的 shell。bash 兼容 sh 意味着,针对 sh 编写的 Shell 代码可以不加修改地在 bash 中运行。

尽管如此,bash 和 sh 还是有一些不同之处。一方面,bash 扩展了一些命令和参数。另一方面,bash 并不完全和 sh 兼容,它们有些行为并不一致,但在大多数企业运维的情况下区别不大,特殊场景可以使用 bash 代替 sh。

查看Shell

SHELL是 Linux 系统中的环境变量,它指明了当前使用的 Shell 程序的位置,也就是使用的哪个 Shell。我们可以使用“echo $SHELL”查看当前Linux 的默认 Shell。

Shell 是一个程序,一般都是放在/bin或者/user/bin目录下,当前 Linux 系统可用的 Shell 都记录在/etc/shells文件中。/etc/shells是一个纯文本文件,可以使用 cat 命令查看它。

另外,在现代的 Linux 上,sh 已经被 bash 代替,/bin/sh往往是指向/bin/bash的符号链接。

root@ubuntu:/etc# cat /etc/shells 
# /etc/shells: valid login shells
/bin/sh
/bin/dash
/bin/bash
/bin/rbash
root@ubuntu:/etc# ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Sep 22  2018 /bin/sh -> bash
root@ubuntu:/etc# echo $SHELL
/bin/bash
root@ubuntu:/etc# 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/460764.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第九周项目6-穷举法之年龄几何

张三、李四、王五、刘六的年龄成一等差数列,他们四人的年龄相加是26,相乘是880,求以他们的年龄为前4项的等差数列的前20项。 构建代码: /**Copyright (c) 2014,烟台大学计算机学院*All gight reserved.*文件名称:temp.…

JavaScript操作大全整理(思维导图七--字符串函数)

7. JavaScript 字符串函数 转载于:https://www.cnblogs.com/yuxia/p/3360824.html

进入shell的两种方法

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 方法一:在图形界面中打开终端 在图形界面下,进入 Shell 的方法是使用 Linux 桌面环境中的终端模拟包,也就是我们常说的终端,这样在图形桌…

外籍主管眼中的阿里巴巴

尝试接受一份新领域的职位有时是值得的,而对雇主来说,任命“非正统人选”从而给团队带来清新气息,也是有好处的。 这是詹姆斯•哈迪(James Hardy)的经验。一位知道他想转行的朋友和他联系,后来他就得到了现在的职位——在线零售商…

Shell脚本运行方法

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 在文本编辑器中编写如下代码并保存为test.sh。 #!/bin/bash echo "Hello World !" 这个文件的扩展名为sh(sh代表shell),但其实扩展名并不…

Perl 中级教程 第5章课后习题

5. 9. 1. 练习1 [5 分钟] 先不要运行程序, 看看你能否判断出这程序的哪部份出了问题?如果你看不出 来, 就可以运行一相程序, 得到些暗示, 来看是否能修改好: my %passenger_1 { name > Ginger, age > 22, occupation > Movie Star, real_age &…

SQL Server 固定角色

1、 查看固定服务器角色 execute sp_helpsrvrole; 管理: execute master..sp_addsrvrolemember logingNameneeky rolenamesysadmin; go execute master..sp_dropsrvrolemember logingNameneeky rolenamesysadmin; go 2、 查看固定数据库角色成员 execute sp_helprol…

Shell变量与Shell特殊变量

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 一、Shell变量 脚本语言在定义变量时通常不需要指明类型,直接赋值就可以,Shell 变量也遵循这个规则。在 Bash shell 中,每一个变量的值都是字符串&…

如何在我们项目中利用开源的图表(js chart)

最近觉得应该把自己在技术上的一些心得记录在博客里面跟大家分享,一起讨论,一起成长! 这篇随笔主要为介绍chart在项目中的运用,因为在我们看到一些开源的chart时候,是使用纯js 或者建立在一些插件(例如:jqu…

vb.net中东软医保接口的调用

前段时间接了个医院管理系统的小项目,要求接入本市医保接口,本市的医保接口采用的是东软的接口平台,为动态库版,只提供了几个配置文件和几个DLL动态库,文档中写的不够详细,并没有各种语言平台的例子&#x…

Shell替换:转义字符、变量替换,命令替换

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 一、转义字符 如果表达式中包含特殊字符,Shell 将会进行替换。除了在双引号中使用变量会进行替换,转义字符也是一种替换。 举个例子: #!/bin/basha1…

关于过去的这一个月——面试经历

终于到了周末,感觉很久很久没有去闲下来了!9月过半,我还在Symantec做实习生,做点单位的工作,研究点自己喜欢的事情,小日子过得还是蛮舒服的。中秋节提前买好了去女朋友家的动车票,规划着去这里那…

python读取postgresql数据库并发送相关提醒邮件

代码如下:#!/usr/bin/env pythonimport smtplibfrom email.mime.text import MIMETextimport psycopg2import datetimefrom time import *mail_host "smtp.XXX.com" mail_user "XXX" mail_pass "XXX" mail_postfix&…

Shell运算符:算术运算符、关系运算符、布尔运算符等

以下内容源于C语言中文网的学习与整理,非原创,如有侵权请告知删除。 expr表达式计算工具 原生bash不支持简单的数学运算,但是可以通过其他命令来实现,例如 awk 和 expr,其中 expr 最常用。 expr 是一款表达式计算工具&…

AjaxControlToolkit的使用

摘自&#xff1a;http://www.cnblogs.com/zm235/archive/2008/05/09/1189558.html 暂时的做法&#xff1a; 把AjaxControlToolkit.dll复制到项目的bin目录里面,然后配置Web.config文件&#xff0c;例如&#xff1a; <configuration><system.web><pages><c…

Shell的注释

关于注释&#xff0c;了解三点内容。 &#xff08;1&#xff09;Shell脚本中&#xff0c;以“#”开头的行就是注释&#xff0c;会被解释器忽略。 &#xff08;2&#xff09;sh里没有多行注释&#xff0c;只能每一行加一个#号。 &#xff08;3&#xff09;遇到大段的代码需要…

linq中let关键字学习

linq中let关键字就是对子查询的一个别名&#xff0c;let子句用于在查询中添加一个新的局部变量&#xff0c;使其在后面的查询中可见。 linq中let关键字实例 1、传统下的子查询与LET关键字的区别 C# 代码 复制static void Main(string[] args) { int[] numbers new[] { 1, 2,…

分析与设计

分析与测试&#xff1a;代码质量&#xff0c;面向对象&#xff0c;测试&#xff0c;业务分析转载于:https://www.cnblogs.com/sofia/p/3381931.html

Shell中的字符串

字符串是shell编程中最常用最有用的数据类型&#xff08;除了数字和字符串&#xff0c;也没啥其它类型好用了&#xff09;&#xff0c;字符串可以用单引号&#xff0c;也可以用双引号&#xff0c;也可以不用引号。 单引号 strthis is a string 单引号字符串的限制&#xff1…

苹果

苹果 描述 ctest有n个苹果&#xff0c;要将它放入容量为v的背包。给出第i个苹果的大小和价钱&#xff0c;求出能放入背包的苹果的总价钱最大值。 输入有多组测试数据&#xff0c;每组测试数据第一行为2个正整数&#xff0c;分别代表苹果的个数n和背包的容量v&#xff0c;n、v同…