一、Shell的类型
1. 概念理解
Shell是用户与Linux内核交互的接口(命令解释器)。虽然Linux支持多种Shell,但最常用的是Bash (Bourne Again Shell)。 常见的Shell类型包括:
sh (Bourne Shell): 早期Unix系统的标准Shell。
bash: 目前大多数Linux发行版默认的Shell,兼容sh并增强了功能。
csh/tcsh: 语法类似C语言。
ksh: 结合了sh和csh的特点。
二、理解Shell进程及其关系
1. 概念理解
在Linux中,每打开一个终端窗口或执行一个脚本,通常都会产生一个新的Shell进程。
PID (Process ID): 进程的唯一标识符。
PPID (Parent Process ID): 父进程的标识符。
关系: 当前Shell通常是登录Shell的子进程;而在当前Shell中再输入
bash命令,又会开启一个“子Shell”。
三、Shell的父子关系
1. 概念理解
这是Shell学习中非常关键的一点:环境变量只能从父进程传给子进程,不能反向传递。
普通变量: 仅在当前Shell有效,子Shell无法继承。
环境变量: 使用
export声明后,子Shell可以继承。
四、Shell的运行模式
1. 概念理解
Shell主要有两种运行模式:
交互式模式 (Interactive): 用户在终端输入命令,Shell等待并执行,给出反馈。我们平时操作Xshell就是这种模式。
非交互式模式 (Non-interactive): 通常指执行Shell脚本时,系统自动运行,不需要人工干预。
此外,还有Login Shell(登录Shell) 和Non-login Shell(非登录Shell) 之分,它们加载的配置文件(如.bash_profilevs.bashrc)不同。
五、内建命令和外部命令
1. 概念理解
内建命令 (Built-in): 包含在Shell程序内部,由Shell直接执行,速度极快。例如
cd,echo,history。外部命令 (External): 是独立的二进制文件,通常位于
/bin,/usr/bin等目录下。执行时需要创建子进程。例如ls,cp,pwd。
六、内建命令 history 和 alias 的用法
1. history (历史命令)
用于查看和管理之前执行过的命令。
常用参数与用法:
history: 列出所有历史命令。!n: 执行历史列表中第 n 条命令。!!: 执行上一条命令。history -c: 清空当前内存中的历史记录。
2. alias (别名)
用于给复杂的命令起一个简单的别名,提高效率。
常用参数与用法:
alias: 单独输入查看所有别名。alias 别名='原命令': 设置别名。unalias 别名: 取消别名。