一、Shell 的定义与类型
Shell 是什么
用 C 语言编写的程序,是用户与 Linux 内核交互的桥梁,兼具命令语言和编程语言特性。
Shell 脚本:以.sh为后缀的可执行文件,首行需指定解释器(如#!/bin/bash)。
常见 Shell 类型
Bash(/bin/bash):Linux 默认 Shell,兼容 Bourne Shell,功能丰富。
其他类型:C Shell(csh)、K Shell(ksh)、Bourne Shell(sh)等,默认 Shell 记录在/etc/passwd文件中。
二、Shell 的父子进程关系
父 Shell 与子 Shell
父 Shell:登录终端时启动的默认 Shell(如-bash)。
子 Shell:通过bash命令创建,可嵌套多层,用ps --forest查看进程树(PID 为子进程 ID,PPID 为父进程 ID)。
退出子 Shell:使用exit命令,逐层返回父 Shell。
三、Shell 的运行模式
命令列表与进程列表
命令列表:用;分隔命令(如pwd; ls),顺序执行。
进程列表:用()包裹命令,在子 Shell 中执行,可通过echo $BASH_SUBSHELL判断子 Shell 层级(返回1表示存在子 Shell)。
后台模式与协程
后台运行:命令末尾加&(如sleep 60&),用jobs查看任务,ps -f查看进程。
协程(coproc):在后台创建子 Shell 执行命令,如coproc { sleep 10; },默认名称为COPROC。
四、内建命令与外部命令
核心区别
内建命令:集成在 Shell 中,无需创建子进程(如cd、exit、history),执行效率高。
外部命令:存储在磁盘(如/bin/ls),执行时创建子进程(如ps、grep)。
命令类型查询
type -a 命令:查看命令是否为内建(如type -a cd显示is a shell builtin)。
五、关键内建命令:history 与 alias
history 命令
功能:记录历史命令,存储在~/.bash_history文件中。
常用操作:
history:查看历史列表;
!!:重复上一条命令;
!编号:执行指定历史命令;
history -a:强制将内存历史写入文件。
alias 命令
功能:为命令创建别名(如alias ll='ls -alF'),简化输入。
操作:
alias -p:查看所有别名;
unalias 别名:删除别名;
持久化:将别名写入~/.bashrc文件。






2422

被折叠的 条评论
为什么被折叠?



