Linux学习-Shell-系统启动过程与执行方式

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生效
原文地址:https://www.cnblogs.com/chenri/p/12649967.html