一 什么叫shell,shell 是什么
如果考虑到操作系统其实是一组软件,我们可以发现应用程序其实是在最外层,就如同鸡蛋的外壳一样,因此这个也就被称为shell。
其实shell的功能只是提供用户操作系统的一个接口,一次这个shell需要可以调用其他软件才好,比如 man,chmod,chown,vi等命令,这些命令都是独立的应用程序,但是我们可以通过shell(命令行模式)来操作这些应用程序,让这些应用程度调用内核来运行所需的工作。
也就是说,只要能够操作应用程序的接口都能够称为shell。狭义的shell指的是命令行方面的软件,包括bash等。广义的shell则包括图形界面的软件,因为图形界面其实也能够操作各种应用程序来调用内核工作。
二 shell 新增
/etc/shells
[root@iz2ze5xd9ppdog0cch5vs0z etc]# cat /etc/shells /bin/sh /bin/bash /sbin/nologin /usr/bin/sh /usr/bin/bash /usr/sbin/nologin /bin/tcsh /bin/csh
如果有一些新的shell,就需要把那些新的写在/etc/shells里。
三 我这个用户什么时候取得shell工作呢?我这个用户默认会取得哪一个shell?
[root@iz2ze5xd9ppdog0cch5vs0z etc]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown ... ...
如上所示,在每一行的最后一个数据,就是你登录后可以取得的默认的shell。你会看到,root是/bin/bash,不过系统账户bin与daemon等就是用sbin/nologin/
四 判断命令是来自于外部命令(其他非bash提供的命令)或是内置在bash当中的呢?
利用 type 这个命令来查看。
[root@iz2ze5xd9ppdog0cch5vs0z etc]# type cd cd is a shell builtin [root@iz2ze5xd9ppdog0cch5vs0z etc]# type pwd pwd is a shell builtin [root@iz2ze5xd9ppdog0cch5vs0z etc]# type mkdir mkdir is /usr/bin/mkdir [root@iz2ze5xd9ppdog0cch5vs0z etc]# type ls ls is aliased to `ls --color=auto'