Shell 的功能只是提供用户操作系统的一个接口 , 因此这个shell需要调用其它软件才好,包括 man , chmod , chown , vi,fdisk , mkfs 等命令,这些命令都是独立的应用程序,但可以通过shell(命令行模式)来操作这些应用程序,让这些应用程序调用内核来运行所需的工作;
也就是说,只要能够操作应用程序的接口都能称为shell;
狭义的shell | 命令行方面的软件; |
广义的shell | 包括图形界面 ,因为图形界面也能操作各种应用程序来调用内核工作; |
Linux使用的shell版本 : Bourne AgainSHell (bash) 是 Bourne Shell的增强版本;
Shell的历史:
第一个流行的shell是由Steven Bourne发展出来的,为了纪念他就称为 Bourne shell ,简称sh
后来另一个广为流传的shell是柏克莱大学Bill Joy设计依附于BSD版的UNIX版中的shell,这个shell的语法类似于c语言,得名 cShell , 简称csh
/etc/shells文件下可查看可以使用的shell;系统某些服务在运行过程中会去检查用户能够使用的shells , 而这些shell的查询就借助于/etc/shells这个文件;
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Bash shall 的功能:
Bash 是 GNU计划中重要的工具软件之一,也是Linux distributions的标准shell;bash主要用于兼容sh,并且依据一些用户需求而加强的shell版本;
bash的主要优点:
1 . 命令记忆能力(histroy) | 命令行中按上下键就可以找到前/后一个输入的命令;这些命令放在当前用户主文件夹内的 .bash_history 中;需要注意,~/.bash_history记录的是上一次登录所执行过的命令,这一次登录所执行的命令暂存在内存中,当成功注销后,命令记忆才会记录到 .bash_history 中; |
2 . 命令与文件补全功能(【tab】按键的好处) |
|
3 . 命令别名设置功能(alias) | 如 alias lm = 'ls -al' 设置命令别名 |
4 . 作业控制、前台、后台控制(job control , foreground , background) | 使用 前后台控制 可以让作业进行的更为顺利; 作业控制用途更广,可以随时将工作丢到后台中执行,而不怕不小心使用了 Ctrl+c 来中断进程; 此外也可以在单一登录的环境中达到多任务的目的; |
5 . 程序脚本 (shell script) | Shell script 可以将平时管理系统常需要执行的连续命令写成一个文件,该文件并且可以通过交互方式来进行主机的检测工作; |
6 . 通配符(Wildcard) | 除了完整的字符串外,bash还支持许多的通配符来帮助用户查询与命令执行,加快用户操作 eg : 查看/usr/bin 下有多少以X开头的文件 ls -l /usr/bin/X* Dos下需要程序语言才可以写东西,而在Linux下使用简单的shell scripts就可以完成; |
Bashshell内置命令:type
利用该命令可以查看某个命令是来自 外部命令(其它非bash所提供的命令) 或 是内置在bash中 ,详细用man命令查看;
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
Shell的变量功能:
变量在bash环境占据非常重要的地位!
变量的显示与设置:echo(变量名前要加字符$)、unset(取消设置)
环境变量的功能:
env (environment)查看环境变量
Home:用户主文件夹,cd ~ 和 cd 命令就是使用这个变量;
Shell:环境使用的shell是哪个程序;默认/bin/bash;
Histsize:历史记录条数;
Path:执行文件查找路径;
Lang:语系数据,中文通常为 zh_CN.gb2312或 zh_CN.UTF-8
Random
set 查看所有变量(环境变量和自定义变量)
PS1:提示符设置
$:本shel的PID(Process ID)
?:上个执行命令的回传码(如果命令成功地执行,则会回传一个0值;如果执行过程发生错误,会回传“错误代码”)
export 自定义变量 转换成 环境变量
用法:“export 变量名”(如果后面没有接变量,功能与env差不多,会把所有 环境变量 显示出来)
环境变量和自定义变量的区别在于,能否被子进程继续引用;子进程仅会继承父进程的环境变量 ,而不会继承其自定义变量;
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
bash的登录与欢迎信息:
/etc/issue :登录界面显示信息;
/etc/motd:登录后用户取得的信息;
\d:\l:\m:\n:\o:\r:\t:\s:\v
日期:终端机:硬件等级:主机名:域名:OS版本(uname -r):时间:OS名:OS版本
bash的环境配置文件:
login 与 no-login shell
loginshell:取得bash时需要完整的登录流程,就称为login shell;
non-loginshell:取得bash接口的方法不需要重复登录的举动;
两者取得bash的情况中,读取的配置文件数据并不一样;
login shell 登录系统会读取两个配置文件:
1、整体环境配置文件:/etc/profile,系统整体的设置,最好不要修改(每个用户登录取得bash时一定会读取的配置文件,且会调用其他的配置文件);
2、个人偏好配置文件:
~/.bash_profile 或
~/.bash_login 或
~/.profile
属于用户个人设置(按顺序读取,如果有第一个文件存在则不会继续向下读取);