shell的变量
什么是变量,某一个特定的字符串来代表不固定的内容。
shell变成就像C, java一样也是一种语言。
使用变量主要是为了方便。
在Linux中
~
是一个变量,在不同的用户下~所代表的不一样。
影响bash环境的变量
成功登录,使⽤shell;
获得bash运⾏程序;
系统通过⼀些变量来提供数据的存取,或⼀些环境的配置参数值;
将环境变量读⼊系统;
PATH、HOME、HOSTNAME、SHELL;
环境变量通常⼤写(非强制)
linux是一个多用户的操作系统,每个用户登录系统之后,都会有一个专用的运行环境。通常每个用户默认的环境都是相同的,这个默认的环境实际上就是一组环境变量的定义。用户可以对自己的运行环境进行定制,其方法就是修改相应的系统环境变量。
在linux中,环境变量一般用大写加下划线命名。环境变量就相当于一个指针,当我们要查看指针所指向的值的时候需要解引用,同样的,当我们要想查看环境变量里面的值的时候,需要在前面加$引用。
是一种全局变量,存在所有的shell中,在登录的时候就有系统定义的环境变量了。linux的环境变量具有继承性,即shell会继承父shell的环境变量。
变量的显示与配置
显示
显⽰:echo
echo $HOME 或 echo ${HOME}
配置
配置变量内容:=
myname=teacher
1.变量与变量内容以⼀个等号”=”进⾏连接:
myname=teacher
- 等号两边不能有空格符,错误示例:
myname = teacher
- 变量名称只能是英⽂字⺟与数字,但是开始的字
符不能是数字,错误示例:
2myname=teacher
-
变量内容中如果有空格符,可以使⽤双引号”或者单引号’,将变量内容结合起来,但两者存在区别:
双引号内的特殊字符,如$等,可以保持原有的特性:
var="lang is $LANG”; echo $var
lang is zh_CN.UTF-8
单引号内的特殊字符
var=‘lang is $LANG’; echo $var
lang is $LANG
双引号可以将引号内的内容进行转意。
双引号可以经引号内的内容直接赋值。 -
可⽤斜杠”\”,将特殊符号(如$、空格符、’等)变成⼀般字符:
-
其他命令的返回值作为变量值的情况,可以使⽤
cmd
或$(cmd),如:
version=$(uname -r)
echo $version
5.8.0-50-generic
-
如果需要增加变量的内容,则可以使⽤ v a r 或 var或 var或{var}累加内
容,如:
PATH=“$PATH”:/home/bin
-
如果该变量需要运⾏与其他⼦程序,则需要以
export来使变量成为环境变量: -
通常⼤写字符为系统默认变量,⾃⾏配置的变
量尽量使⽤⼩写字符,⽅便判断,⾮强制; -
取消变量使⽤unset,unset var,如:
unset myname
别名
别名的意义:
- 简化⽐较⻓的惯⽤命令;
- 限制导致严重后果命令的执⾏;
- ⽀持⽤户使⽤习惯。
alias [别名]=“命令”
alias lm="ls -al"
alias可以查看alias文件中的内容
unalias [别名]删除别名。
unalias lm
历史
⽤法:
history [n]
history [-c]
history [-raw] hisfiles
参数/选项:
n: 数字,列出最近n条历史命令;
-c: 将⽬前shell的所有历史命令清除;
-a: 将⽬前新增的history命令追加到histfiles中;如果没有指定histfiles,默认写⼊~/.bash_history;
-r: 将.bash_history中的内容读到⽬前shell的histroy中;
-w: 将⽬前history所记录的内容写⼊.bash_history。
历史命令读取和记录的过程
登陆,从~/.bash_history读取;
数量: HISTSIZE; (是一个环境变量)
登出: 更新~/.bash_history;
history -w。
!
两个! 运行上一条命令
![number] 运行行数为number的命令(!和数字之间不可以有空格)