ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
## **确定linux支持的shell及系统默认的** ``` cat /etc/shells ``` ![](https://img.kancloud.cn/0b/8b/0b8bc8ba2f554c55da656e2c95d6feeb_281x104.png) 系统支持的shell有那么多,bash,dash,sh,rbash等,如何知道当前系统的默认shell? ~~~bash echo $SHELL ~~~ ![](https://img.kancloud.cn/85/c0/85c0b4af39171ecc67a5d2838d442ce3_254x46.png) 可见默认shell为bash。几乎所有linux发行版本的默认shell都是bash。 ## **编写并执行脚本** vim test.sh文件并添加测试代码,shell文件后缀名不是必须的,但是通常都是sh后缀用来区分 ``` #! /bin/bash # 注释,#!(SheBang)指定`Ball Shell`的路径 echo "hello world" ``` 将运行权限添加到文件 ``` chmod +x test.sh ``` 执行脚本 ``` ./test.sh ``` ## **列出linux可用的命令** ``` compgen -c ``` 或者 ``` #Shell[bash+rel4调试通过]代码: var=`echo $PATH|sed "s/:/ /g"` for list in $var; do ls -lR $list|grep -v '^d' done -EOF- ``` 按两次TAB键,提示的时候按y键(我这不行,前面必须加个字母在按两次tab) ![](https://img.kancloud.cn/91/77/91775efb8547d5c951910ad5e2aefd66_819x152.png) ## **查看linux内部命令还是外部命令** linux命令有**内部命令**和**外部命令**之分,内部命令和外部命令功能基本相同,但是有细微差别  **内部命令**:shell程序的一部分 通常在Linux系统加载运行时shell就被加载并常驻内存中,内部命令是写在bashy源码里面,执行速度比外部命令快 因为解析内部命令shell不需要创建子进程 如:exit  cd  echo  history **外部命令**:Linux系统中实用程序部分 因为实用程序功能通常比较强大,包含的程序量也会很大,在系统加载时不随系统一起被加载在内存中,而是需要时才会将其调入内存 通常外部命令的实体并不包含在shell中,但是其命令执行过程是由shell程序控制的, shell程序管理外部命令执行的路径查找,加载存放,控制命令的执行,是在bash之外额外安装的 可以用type command来分辨是内部命令还是外部命令       ``` [root@localhost account]# type cd cd is a shell builtin ``` ## **shell简介及概念** Shell是一种脚本语言,那么,就必须有解释器来执行这些脚本 Linux上常见的Shell脚本解释器有bash、sh、ash、csh、ksh,习惯上把它们称作一种Shell。我们常说有多少种Shell,其实说的是Shell脚本解释器 **bash** bash是Linux系统默认使用的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的缩写,内部命令一共有40个。 Linux使用它作为默认的shell是因为它有诸如以下的特色: •可以使用类似DOS下面的doskey的功能,用方向键查阅和快速输入并修改命令。 •自动通过查找匹配的方式给出以某字符串开头的命令。 •包含了自身的帮助功能,你只要在提示符下面键入help就可以得到相关的帮助。 **sh** sh 由Steve Bourne开发,是Bourne Shell的缩写,各种UNIX系统都配有sh。 **ash** ash shell 是由Kenneth Almquist编写的,Linux中占用系统资源最少的一个小shell,它只包含24个内部命令,因而使用起来很不方便。 **csh** csh 是Linux比较大的内核,它由以William Joy为代表的共计47位作者编成,共有52个内部命令。该shell其实是指向/bin/tcsh这样的一个shell,也就是说,csh其实就是tcsh。 **ksh** ksh 是Korn shell的缩写,由Eric Gisin编写,共有42条内部命令。该shell最大的优点是几乎和商业发行版的ksh完全兼容,这样就可以在不用花钱购买商业版本的情况下尝试商业版本的性能了 因为Shell似乎是各UNIX系统之间通用的功能,并且经过了POSIX的标准化。因此,Shell脚本只要“用心写”一次,即可应用到很多系统上 ## **CentOS与Linux与unix三者区别** CentOS是Red Hat Enterprise Linux这个版本(以下称之为RHEL)的克隆版本,(前者收费,有技术支持,后者免费,但没有技术支持)是*Linux*操作*系统*的一个发行版本 Linux 是一个类似 Unix 的操作系统,Unix 要早于 Linux,Linux 的初衷就是要替代 UNIX,并在功能和用户体验上进行优化,所以 Linux 模仿了 UNIX(但并没有抄袭 UNIX 的源码),使得 Linux 在外观和交互上与 UNIX 非常类似 二者也有两个大的区别: 1. UNIX 系统大多是与硬件配套的,也就是说,大多数 UNIX 系统如 AIX、HP-UX 等是无法安装在 x86 服务器和个人计算机上的,而 Linux 则可以运行在多种硬件平台上; 2. UNIX 是商业软件,而 Linux 是开源软件,是免费、公开源代码的。 在数百个 Linux 版本中,**CentOS 和 Ubuntu 应该是最有名的两个** **CentOS vs Ubuntu 的差异:** ![](https://img.kancloud.cn/40/7c/407c71617391bed98dde6c50ec0c44ca_720x338.png) 总结:Centos 适用于服务器,Ubuntu适用于初学者或者个人桌面: