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显示没有颜色区分。