认识Shell之前我们一直在说shell,也一直在使用shell。那么shell到底是什么?
实际上,shell自身也是一个应用程序,它负责用户与操作系统之间的通信。当用户登录到shell时,系统会将一个shell程序调入内存——每个用户都有一个默认的shell,记录在/etc/passwd文件(口令文件)中。
如我(root用户)现在默认的shell为zsh,那么/etc/passwd中的记录就为:
有些特殊用户的记录可以不是shell程序,如上图中的第二个。
zsh是mac os自带的一个shell,以高度定制化和有众多的主题闻名,Linux需要安装。
用户登录、shell执行和用户退出的过程如下:
用户登录:init进程fork/exec一个login程序,输入用户名和密码。如果验证成功,则按照口令文件为用户fork/exec默认的shell程序。
shell执行:shell内置了解释器如sh,它可以解释用户输入的正确的命令。如果命令为shell内置命令,那么直接由shell完成即可;如果命令为可执行程序,那么fork/exec一个新的进程来执行该程序;如果命令为脚本文本 ...
