linux(七)壳程序


我们都是通过程序和操作系统沟通,比如我们linux启动之后默认的bash界面,就是一个供用户和内核交互的程序,这就是大名鼎鼎的bash。这是一种壳程序。

刚开始登录时的bash进程

 再启动两个bash,然后查看进程

 我们可以看到进程ID 7035创建了7308,然后7308又创建了7317.

Exit用于退出bash程序

 1 有多少shells

/etc/shells文件中列出来了操作系统支持的常规shell程序

[root@localhost ~]# cat /etc/shells
/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
[root@localhost ~]#

从这里我们可知,系统中支持两种shell,默认的bash和sh

2 /sbin/nologin特殊的shell

当我们查看/etc/passwd时,我们会发现有很多特殊的shell

 这种配置的用户,表示这个用户不能使用/bin/bash和/bin/sh来登录系统。但是该用户可以使用特定的系统资源。比如打印作业由lp这个账号管理,www服务由apache这个账户管理,他们都可以进行系统程序的工作,但是他们无法使用bash和sh登录

3 bash内建命令

Bash内建命令是指bash自身提供的命令,而不是bash外其他程序提供的命令。

因为我们登陆系统之后,会默认给我们一个bash程序和内核交互,bash内建命令相当于直接调用bash的一个内置函数,当然速度会快。而非内建命令执行时会触发磁盘I/O,还需fork出一个单独的进程来执行,执行完后再退出。

我们使用type查看命令属性。

 比如上图,cd是内建命令,java不是。

我们查看ls,会发现,默认执行的ls是ls --color=auto的别名。显示会有颜色区分

而/usr/bin/ls显示没有颜色区分。