命令执行顺序
1 以相对/绝对路径执行命令
2 由alias找到该命令执行
3 由bash内建的命令执行
4 通过$PATH变量顺序搜索到第一个指令来执行
login shell与non-login shell
login shell | 完整的登录流程。 在tty1-tty6输入用户名和密码 |
/etc/profile 系统整体配置文件 ~/.bash_profile或~/.bash_login或~/.profile 用户个人配置文件。 |
non-login shell | 不需要重复登录的流程。 一种是进入X window后再启动终端 一种是在bash环境再启动子进程bash |
~/.bashrc 用户个人配置文件 |
环境变量相关的内建命令
source (或直接使用小数点".") |
读取并执行环境配置文件,修改配置文件而不需要注销再登录。 |
echo | 输出环境变量 |
export | 传递环境变量到其子进程 |
set | 显示环境变量或设置环境变量 |
unset | 取消变量 |
环境变量相关命令
env | 查看现有的环境变量 |
locale | 查看当前的语系信息 |
stty | 显示或设定文字终端设置,主要是按键的代表意义 |
环境变量设定规则
1 变量与变量内容以等号连接。等号两边不能直接有空格。变量开头只能是字母。
$ mypath=/home/mydata //设置环境变量
2 变量内容中的双引号与单引号的区别。
$ mypath="lang is $LANG" //保留特殊字符的意义 $ mypath='lang is $LANG' //所有字符都认为是一般字符
3 可以使用转移字符“\”,将特殊字符变为一般字符。
4 想到引用一个命令的结果,可以用反单引号`命令`或$(命令)
$ echo `uname -r` $ echo $(uname -r)
5 若给一个变量一个增量时,可以
$ mypath="$mypath":/home/bin
6 若将该变量传递到其子进程中,可以
$ export mypath
变量内容的删除和替换
${变量#关键词} | 从头开始检查关键词,将符合的最短数据删除 |
${变量##关键词} | 从头开始检查关键词,将符合的最长数据删除 |
${变量%关键词} | 从尾开始检查关键词,将符合的最短数据删除 |
${变量%关键词} | 从尾开始检查关键词,将符合的最长数据删除 |
${变量/旧字符串/新字符串} | 若符合旧字符串,则第一个旧字符串被替换 |
${变量//旧字符串/新字符串} | 若符合旧字符串,则全部旧字符串被替换 |
变量内容的设定和替换
var和str为变量,expr为一般字符串
变量设定方式 | str没有设定 | str为空字符串 | str已设定为非空 |
var=${str-expr} | var=expr | var= | var=$str |
var=${str:-expr} | var=expr | var=expr | var=$str |
var=${str+expr} | var= | var=expr | var=expr |
var=${str:+expr} | var= | var= | var=expr |
var=${str=expr} | str=expr var=expr |
str不变 var= |
str不变 var=$str |
var=${str:=expr} | str=expr var=expr |
str=expr var=expr |
str不变 var=$str |
var=${str?expr} | expr输出到stderr | var= | var=$str |
var=${str:?expr} | expr输出到stderr | expr输出到stderr | var=$str |