一、初识shell
shell也是一种应用程序,工作于用户模式,因此它在命名空间里必然表现为一个进程。我们可以使用pstree来查看进程树:
# pstree
shell 进程用于提供命令行界面,它提供了一系列的工作特性,有些特性可以自行设定,这就是为什么创建用户时要为其指定默认的shell。通过查看 /etc/shells,可以知道有哪些可用的shell。
比较常用的shell主要有:tcsh,dash,sh,csh,bash。
其中 /sbin/nologin 这个shell通常不让用户登陆,只用来运行某些后台程序。比如:
# useradd -s /sbin/nologin nologin
会发现这样创建的用户不能登陆。
二、解释器和编译器
Shell实际上是一个解释器。解释器是指能够理解其他命令,并且能够让命令执行起来(即能够理解语句,并且能根据流程控制机制让语句按需执行)。
相对于解释器的是编译器。编译器能够理解源程序,并且能够将源程序转换为二进制格式,从而让其执行。 举个例子:
某程序文件中含有多行源代码,若交给解释器执行,则解释器负责读取一句执行一句,以后若要再次执行该程序,仍然需要解释器的参与;若交给编译器执行,则编译器首先将整个文件转换为二进制码,然后执行,这个二进制码文件今后可以反复执行而不需要编译器再参与其中了。
比较而言,编译器优于解释器,因为编译器执行速度更快。但解释器维护起来更方便,因为不需要对源代码进行编译,此外解释器会在执行语句前进行语法检查,如果语法错误,将不会执行。解释器的执行速度和执行前扫描检查文件的特性决定了解释型语言很少用来开发大型程序。
有代表性的编译器有:gcc 等
解释器有:bash,python,perl等
由于编译器和解释器的存在,决定了程序开发语言主要有两种:
解释型语言:perl,python,ruby,bash等等。它通常被称为动态语言。
动态语言的特点是变量不需要声明,可以直接使用。
编译型语言:c,c++,c#,java等等,通常称为静态语言。
静态语言的特点是变量必须先声明再使用。
二者有时候可以互换,如python可以先编译再执行,c#也可以当做解释语言执行。
三、变量简介
变量:变量事实上是一块内存空间,可用于存储数据,且空间可以按需改变。
变量类型:限定了数据的存储格式和数据的表示范围,主要有×××、浮点型、字符型、布尔型等等
使用变量的通常步骤为:
1.声明,指定变量的类型。声明的同时,通常会给其一个初始值,这个过程叫做变量的初始化;
2.赋值。变量的赋值用 = 表示,例如: int a = 3; 此语句不是表示int 变量a等于3,而是表示将3赋值给int变量a。