-
什么是shell?
简单的说,shell就是一个命令解析器,是正跑在操作系统上的一个程序 。在linux系统shell一般体现为两种:文字接口shell和图形界面shell,文字接口shell就是解析字符所构成的命令,而图形界面shell则是依据鼠标的点击的命令去进行解析。
-
shell的位置,shell有什么用?
shell处于操作系统的最外层,shell直接与系统核心沟通,然后系统核心控制硬件工作。
当存储到磁盘中的可执行程序想要在运行在机器上时,那么最初要怎么做?例如:pwd命令,我们知道pwd命令存在在/bin目录下,这是存在在磁盘上的一段数据,当我们想执行pwd命令时也就是说想让这段数据在机器上跑一遍时我们需要做什么?
- 敲入pwd到bash中
- 敲下回车
就是这样两个步骤。我们来分析一下这两个步骤:
为什么我们要把pwd敲入到shell中而不是别处的,这就是上面所说的shell是正在操作系统上跑的程序,当1,2步骤执行完后,bash这个程序接受到这个参数,然后进行分析,把程序数据读入内存,把系统当前的执行权限交给pwd(到此shell当前的工作已经基本结束了)。然后就是pwd跑在机器上,跑完之后,输出结果,又将执行权交还给bash(shell又开始工作了)。在此过程应该注意的是pwd为什么会执行(例如:为什么在记事本中写入pwd,在敲回车,程序并不会执行),而不是pwd执行时。
-
bash
bash是linux下的shell之一(很重要),bash的全称是Bourne Again SHell,这是一个文字接口的shell,bash的功能很强大(具体怎么强大后面有介绍)。
-
bash的加载,加载时配置的修改
当我们一以纯文本方式启动linux时,启动之后输入用户名和密码之后系统会给一个默认的shell提供我们使用,这个默认的shell一般都是bash,这个默认的shell是可以修改的,在/etc/passwd这个文件中可以修改。
这里的重点在于登录用户名和密码之后系统怎么取得bash的?取得shell时都做了些什么配置?
由于登录方式不同取得shell的方式也不同
- login shell:取得bash时需要完整的登入流程。例如:由tty1-tty6登入时,需要用户名和密码
- non-login shell :取得bash的方法不需要重复登入的举动。例如:在bash中再次下达bash命令;图形化界面的shell中打开一个终端接口。
login shell 时:在输入密码结束后,操作系统到/etc/passwd 文件中匹配用户信息,在用户信息的最后面会取得一个shell(默认会执行/bin/bash这个shell),然后会读取两个配置文件:/etc/profile(系统整体设定,最好不要改动) ~/.bash_profile(使用者个人设定,可以自由修改),对bash的很多参数就行配置(环境变量就在其中)。
non-login shell 时只会读取~/.bashrc (使用者的个人设定,例如:别名命令alias)
上面的配置文件修改后可以重新登入刷新配置,也可以用"source 文件名"来就行配置刷新。
-
bash的功能
- 命令编修能力
- 命令与文件名补全能力
- 命令别名设置能力
- 通配符
- 程序脚本化
- 数据流重定向等