## 本地变量
生效范围 **当前shell进程**
## 环境变量
生效范围 **当前进程及其子进程**
### 定义方式
~~~bash
declare -x name=value
export name=value
~~~
### 显示环境变量
export env printenv
## 局部变量
生效范围 当前进程的**函数片段**中
## 位置变量
显示命令行中传入的 **位置参数**
## 特殊变量
~~~
$$ Shell本身的PID
$0 脚本文件名
$? 命令返回状态码
$# 位置参数的个数
$* 所有参数列表,调用时将所有参数当成一个字符串
$@ 所有参数列表,调用时将所有参数当成多个独立的字符串
$- 使用Set命令设定的Flag一览
$HOME 表示当前用户根目录
$IFS 表示内部的字段分隔符
$LANG 当前locale默认名称
$PATH 环境变量
$PPID 父进程编号
$PWD 当前工作目录
~~~
## 只读变量 常量
~~~
readonly name
declare -r name
~~~
## bash的配置文件
### 按作用范围
全局配置
/etc/profile,/etc/profile.d/*,/etc/bashrc
个人配置
~/.bash_profile,~/.bashrc
## 按功能
### profile类 为交互式登录式shell提供配置
设定环境变量,个人变量和环境变量同时存在,个人变量生效。作用范围越小,越生效。
运行命令或脚本,登录欢迎信息。
### bashrc类 为非登录式shell提供配置
设定本地变量
定义命令别名
>[warning] **登录式shell**
通过终端输入账号密码登录
通过 “su - UserName" 或者 "su -l UserName"登录
**非登录式shell**
通过 “su - UserName" 切换
执行脚本
图形界面下打开的伪终端
/etc/profile 系统相关的环境变量,对所有用户生效
/etc/profile.d/下新建path.sh和alias.sh
/etc/bashrc 定义针对这个用户的别名,如果对所有用户生效最好是/etc/profile.d/下新建alias.sh
/etc/profile 和/etc/bashrc都有umask,要想修改,只要在/etc/profile.d/下新建umask.sh
.bash_logout 定义用户退出时要执行的程序
## 如何读取配置文件?
### 登录式shell
~~~
/etc/profile→/etc/profile.d/*→~/.bash_profile→~/.bashrc→/etc/bashrc
~~~
### 非登陆录式shell
~~~
~/.bashrc→/etc/bashrc→/etc/profile.d/*.sh
~~~
## bash测试
bash -n 脚本:测试是否有语法错误
bash -nv 脚本:调试
bash -x 脚本:单步调试
## 程序状态返回码$?的参考值
在shell中使用exit进行定义
~~~
0 成功退出
>0 退出失败
1-125 命令退出失败,失败返回的相关值由程序定义(譬如,程序内退出只执行 exit 2,则返回为2)
126 命令找到了,但无法执行
127 命令找不到
>128 命令因受到信号而死亡
~~~
>[info] 系统自动执行脚本(非命令行启动脚本)需要自我定义环境变量;
- 目录
- 离散的内容
- IO模型
- 网卡绑定
- ssh
- 硬件测试
- 硬件
- limits
- 网络流量
- 硬盘IO
- 硬盘
- tmux
- 主机名和域名
- http_proxy
- iptables
- 内核参数
- 块设备和字符设备
- 内存
- 虚拟内存并非交换分区
- 网络延时
- 概念
- 多核压缩
- linux基础
- SSH协议
- 软件管理
- yum
- 制作本地源 yum系列
- 制作本地源 apt系列
- apt
- 在 Linux 中移除从源代码安装的程序的一种简单的方法
- 其他
- 源码编译和二进制安装后更改配置
- DNS
- bind
- 守护进程
- 特殊权限
- limit.conf配置
- 网络
- shell-ok
- 变量ok
- 数组ok
- 系统变量和环境变量
- 运算符和计算-ok
- 条件测试-ok
- 选择-ok
- shell循环-ok
- 输出echo和printf-ok
- 技巧-ok
- pre-web
- http协议
- web服务器
- Apache
- apache安装
- yum安装
- 二进制安装
- 编译安装
- httpd命令
- 运行 监控apache
- apache配置文件
- 常用配置
- MPM多处理模块
- 编译模块
- apache模块
- apache核心模块
- apache标准模块
- apache第三方模块
- 虚拟主机
- 1
- CGI-FastCGI-SSI
- 别名和重定向
- apache应用
- 301重定向
- apache防盗链
- http转化为https
- 访问时间段控制
- 控制访问目录
- 限制指定USER_AGENT
- 不同客户端访问不同网页
- apache黑名单
- httpd之禁止解析php
- 不记录css/js/img的访问日志
- 浏览器端静态缓存
- apache访问日志自动切割
- order-require
- 压缩传输
- httpd-ssl
- apache代理
- 正向代理
- 反向代理
- apache调优
- httpd压力测试工具ab
- CGI测试
- php
- php原理
- httpd和php的结合方式
- php yum安装之DSO模式
- php 编译安装之DSO模式
- php-fpm详解
- php yum安装之php-fpm模式
- php 编译安装之FastCGI模式
- php扩展之mysql
- php扩展之gd
- php扩展之pcntl
- php扩展之xcache
- php扩展之ZendGuardLoader
- phpMyAdmin
- wordpress
- 数据库-mysql
- 数据库原理
- mysql数据库原理
- mysql源码编译安装
- mysql二进制包安装
- mysql命令行工具
- 更改密码
- 数据库授权grant
- mysql日志
- 命令
- 常用
- 小命令大作为
- awk 报告生成器
- 网络命令
- 命令查找
- 压缩归档命令
- 文件管理
- 文件管理命令
- 文件查看命令
- 目录管理命令
- 用户管理命令
- 用户权限管理
- curl
- cheat
- chrony
- command
- crontab任务计划
- cut
- date
- dd
- df
- echo
- find
- grep
- hash
- iftop
- kill pkill killall
- ls
- lsmod和modprobe
- lsof
- man
- mkpasswd
- mount
- mtr
- netstat
- nmap
- nc
- NTP
- passwd
- rm
- rdate
- pv
- sar系统活动情况报告
- sed文本处理命令
- setup
- screen
- shutdown
- sort 命令
- sudo
- tcpdump
- top
- uniq
- wget
- who
- xargs
- 监控
- zabbix邮件报警
- Redis
- redis安装
- redis数据类型和操作方法
- redis持久化和配置
- redis主从配置
- php连接redis
- redis实现session共享
- 安装测试
- redis设置密码
- ELK日志分析系统
- elasticsearch
- logstash
- logstash插件
- filebeat日志收集
- kibana
- jenkins
- jenkins安装与配置
- 案例1
- 案例2
- 案例3
- 代码仓库之svn
- svn服务端配置
- 常用操作
- svn备份
- LB集群
- LVS负载均衡集群
- ipvsadm使用方法
- LVS调度方法
- NAT原理
- NAT实践
- DR原理
- DR实践
- TUN原理
- LVS持久连接
- HA集群
- HPC集群
- 共享存储
- ftp协议
- vsftpd
- NFS
- 网站架构发展
- 文件同步
- rsync基本用法
- rsync安装和使用_拉取模式
- lsyncd安装和用法
- zabbix
- zabbix服务端安装
- zabbix客户端安装
- zabbix编译安装
- zabbix监控tomcat
- zabbix监控mysql
- gitlab
- supervisor
- nsq
- ruby
- nodejs
- consul
- mesos
- zookeeper
- rwho
- 对象存储
- 工具
- rclone
- minio
- linux 性能调优
- CPU
- 第一部分 CPU
- 安全