Shell

Linux 的启动过程

  • BIOS-MBR-BootLoader(grub)-kernel-systemd-系统初始化-shell
  • BIOS BIOS引导,基本输入输出系统,在主板上,引导硬盘或光盘
  • MBR 硬盘主引导
  • BootLoader 启动和引导内核的工具,选择哪一个内核以及版本
  • kernel 内核,驱动硬件,然后初始化环境
  • systemd 1号进程,加载内核模块
  • 查看硬主引导记录
  • dd if=/dev/sda of=mbr/bin bs=446 count=1
  • hexdump -C mbr.bin 以十六进制方式查看,记录中有 55 aa 这个标记,说明硬盘是可引导的

shell 脚本的执行方式

  • 组合命令 用分号隔开:cd /var ; ls
  • 为了组合命令和多次执行,使用脚本文件来保存需要执行的命令,然后赋予该文件执行权限(chmod u+rx filename)
  • 用文件编写脚本,一般在第一行编写:#!/bin/bash 声明脚本使用什么解释器进行解释
  • 标准Shell脚本包含哪些元素
  • Sha-Bang 在第一行用 #! 开头
  • 命令
  • “#”号开头的注释
  • chmod u+x filename 可执行权限
  • 执行命令的几种方式
  • bash ./filename.sh 或 sh ./filename.sh ,会在当前bash进程下边创建一个子进程执行脚本。不用给脚本赋予执行权限也可以执行,执行完回到进程,该方法是将脚本文件作为参数传给sh(bash)命令来执行的,是被调用执行,执行完后回到父shell。
  • ./filename.sh “./”的意思是说在当前的工作目录下执行脚本,也会产生一个子进程,在子shell环境中执行,使用Sha-Bang说明的解释器。需要对脚本赋予权限才可以执行,执行完后返回父进程,所以父进程无法获取子进程中的变量。当前路径若不在环境变量PASH的内容之中,所以必须加上“./”才可以执行,否侧报错。
  • source filename.sh 在当前的进程中执行,不需要对脚本赋予权限就可以执行。
  • . filename.sh 在当前的进程中执行,不需要对脚本赋予权限就可以执行。
  • 以绝对路径方式执行:/data/finename/afile.sh 需要对文件赋予权限才可以执行,会在当前bash进程下边创建一个子进程执行脚本。
  • 内建命令和外部命令的区别
  • 内建命令不需要创建子进程,内建命令对当前Shell生效

您对以上内容有何建议或意见,请写下来告诉我,谢谢!!!