shell脚本【〇、概念/脚本/shebang/特性/变量/父子shell/环境变量设置】

shell概念

敲命令->shell【通过bash解释器,解析和翻译用户输入】->系统调用【操作系统内核kernel】->计算机硬件->shell【terminal终端、接受输入,绘制输出】

shell脚本

当命令或者程序语句写在文件中,执行文件,读取其中的代码,这个程序文件就称为shell脚本。
windows中:.bat 批处理脚本
linux中:.sh 脚本

shebang

shebang指的是出现在文本文件第一行前两个字符 #!
在Unix系统中,程序会分析shebang后面的内容,作为解释器的指令。
#! /bin/bash 解释器为bash解释器;
#! /usr/bin/python 解释器为python解释器;
#! /usr/bin/env 解释器名称,是一种在不同平台上都能找到正确解释器的办法。

如果未指定,默认用当前shell解释器。

执行 .sh

  • ./hello.sh 【文件需要有x权限】
  • source hello.sh
  • . hello.sh
  • sh < hello.sh

shell和运维

shell监本语言很适合处理纯文本类型数据,且linux的哲学思想就是一切皆文件,如日志、配置文件、文本。网页文件,大多数都是纯文本类型的,因此shell可以方便的进行文本处理,好比强大的Linux三剑客【grep、sed、awk】。

脚本语言

shell脚本是弱类型语言无需声明变量类型,直接定义使用。【默认都是字符串】

shell特性

  • 文件路径tab补全
  • 命令补全
  • 快捷键 ctrl+ a,e,u,k,l 【l 快速清屏】
  • 通配符
  • 命令历史
# 历史命令条数
echo $HISTSIZE
# 存放用户执行的历史命令,写入文件
echo $HISTFILE
# history命令
-c 清除历史
-r 恢复历史
# 用历史命令
# !历史id,快速执行
!256
# !!执行上次的命令,以及上下左右寻找
  • 命令别名
  • 命令行展开

变量

变量定义和赋值,注意变量与值之间不得有空格

name="laomao"

# 单引号不识别特殊符号
# 双引号能识别特殊符号

变量引用

echo ${name} 
# 可以省略花括号

变量名规则

  • 名称定义见名知意,且按照规则来,不得引用关键字(help检查关键字)
  • 只能包含数字、字母、下划线
  • 不能以数字开头
  • 不能使用标点符号
  • 变量名严格区分大小写

变量的作用域

  • 本地变量,只针对当前的shell进程。
  • 环境变量,也称为全局变量,针对当前的shell以及其任意子进程,都可以找到【分为 自定义、内置 两种】
  • 局部变量,针对在shell函数 或是 shell脚本中定义
  • 位置参数变量:用于在shell脚本中传递的参数 -l
  • 特殊变量:shell内置的特殊功效变量
    • $? 【 0 :成功 1-255 :错误码】
  • 自定义变量
    • 变量赋值: varName=Value
    • 变量引用: ${varName}

父子shell

  1. 每次调用bash、sh解释器执行脚本,都会开启一个子shell,因此不保留当前的shell变量,通过pstree命令检查进程树
  2. 调用 source 或者 . 是在当前shell环境加载脚本,因此保留变量。
# 在linux中反引号中的命令执行结果会被保留下来
name=`ls`
echo $name

环境变量设置

环境变量:一般指的是用export内置命令导出的变量,用于定义shell的运行环境、保证shell命令的正确执行。
shell通过环境变量确定登录的用户名、path路径、文件系统等各种应用。
环境变了可以在命令行中临时创建,但是用户退出shell终端,变量即丢失,如果永久生效,需要修改环境变量配置文件

  • 用户个人配置文件 ~/.bash_profile ~/.bashrc 远程登录用户特有文件
  • 全局配置文件/etc/profile、 /etc/bashrc,且系统建议最好创建在 /etc/profile.d/ ,而非直接修改主文件,修改全局配置文件,影响所有登录系统的用户
    检查

每个用户都有自己的环境变量配置文件,~/.bash_profile ~/.bashrc,且以个人配置文件,优先加载变量,读取,以个人的优先生效
当你需要给所有用户都是用某个变量,写入全局即可 /etc/profile

检查系统环境变量的命令

  • set 输出所有变量:包括全局变量和局部变量
  • env,只显示全局变量
  • declare 输出所有的变量,如同set
  • export 显示和设置环境变量值

撤销环境变量

  • unset 变量名 删除变量或函数

设置只读变量

  • readonly,只有shell结束,只读变量失效

系统保留环境变量关键字

bash内嵌了诸多环境变量,用于定义bash的工作环境
export | awk -F ‘[ :=]’ ‘{print $3}’

bash多命令执行

ls /data/;cd /tmp/;cd /home;cd /data
用分号;

环境变量初始化与加载顺序

  1. ssh登录Linux后,系统启动一个bash shell
    bash会读取若干个系统环境文件,检查环境变量设置;
  2. /etc/profile 全局环境变量文件
    为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行,
    并从/etc/profile.d目录的配置文件中搜集shell的设置;
  3. 然后读取/etc/profile.d目录下的脚本
    有系统诸多脚本,也放入自定义需要登录加载的脚本,
    便于用于登录后立即运行脚本
  4. 运行$HOME/.bash_profile (用户环境配置文件)
  5. 运行$HOME/.bashrc
  6. 运行/etc/bashrc
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值