本课程是《Tony老师聊shell——变量》课程的延续,主要介绍Linux shell编程基础中的运算符。包括declare命令、数值运算方法和变量测试。首先在declare命令中介绍了数值型和数组类型的声明,然后介绍了运算符的详细使用,最后对不同场景下的变量进行了测试。
接下来分析下系统常见的环境变量
点后面加上空格+配置文件等价于source 配置文件
常见的系统环境变量的配置
/bin/ : 存放系统命令的目录,普通用户和超级用户都可以执行. 不过放在/bin下的命令在单用户模式下也可以执行 .
/sbin/: 保存和系统环境设置相关的命令,只有超级用户可以使用这些命令进行系统环境设置,但是有些命令可以允许普通用户查看.
/usr/bin/: 存放系统命令的目录,普通用户和超级用户都可以执行.这些命令和系统无关,在单用户模式下不能执行.
/usr/sbin/: 存放根文件系统不必要的系统管理命令,例如多数服务程序.只有超级用户可以使用.
/boot/: 系统启动目录,保存系统启动相关文件.如内核文件和启动引导程序.
/dev/: 设备文件保存位置.
/etc/: 配置文件保存位置.系统内所有采用默认安装(rpm安装)的服务的配置文件全部都保存在这个目录当中.如用户的账号和密码,服务的启动脚本.常用服务的配置文件等.
/home/: 普通用户的家目录.建立每个用户时,每个用户要有一个默认的登录位置,这个位置就是这个用户的家目录.所有普通用户的家目录就是在/home下建立一个和用户名相同的目录.如user1的家目录就是/home/user1
/lib/ 系统调用的函数库保存位置
/lost+found/ 当系统意外崩溃或意外关机,而产生一些文件碎片放在这里.当系统启动的过程中fsck工具会检查这里,并修复已损坏的文件系统.这个目录只在每个分区中出现,例如/lost+found 就是根分区的备份恢复目录,/boot/lost+found 就是/boot分区的备份恢复目录.
/media/ 挂载目录,系统建议是用来挂载媒体设备的,例如软盘和光盘.
/mnt/ 挂载目录,早期linux中只有这一个挂载目录,并没有细分,现在这个目录系统建议挂载额外设备,例如U盘,移动硬盘和其他操作系统的分区
/misc/ 挂载目录. 系统建议用来挂载NFS服务的共享目录.
/opt/ 第三方安装的软件保存位置. 这个目录就是放置和安装其他软件的位置
/proc/ 虚拟文件系统,该目录中的数据并不保存到硬盘当中,而是保存到内存当中. 主要保存系统的内核,进程.外部设备状态和网络状态灯.如/proc/cpuinfo 是保存cpu信息的,/proc/devices是保存设备驱动的列表的,/proc/filesystems是保存文件系统列表的, /proc/net是保存网络协议信息的
/sys/ 虚拟文件系统,和/proc目录相似,都是保存在内存当中的,主要是保存于内核相关信息的.
/root/ 超级用户的家目录.普通用户家目录在"/home"下,超级用户家目录直接在 / 下.
/srv/ 服务数据目录.一些系统服务启动之后,可以在这个目录中保存所需要的数据
/tmp/ 临时目录.系统存在临时文件的目录. 该目录下所有用户都可以访问和写入,建议此目录中不能存放重要数据,最好每次开机都可以把该目录清空
/usr/ 系统软件资源目录."unix softwre resource"的缩写,存在系统软件资源的目录.系统中安装的软件大多数保存在这里.
/var/ 动态数据保存位置.主要保存缓存,日志已经软件运行所产生的文件
Bash_profile和.bashrc存在在家目录下,~表示家目录
[root@localhost home]# cd ~
[root@localhost ~]# pwd
/root
[root@localhost ~]#
修改家目录下的配置文件,只对当前用户有效,修改/etc目录下的文件对所有的目录都有效
Profile 、profile和bashrc是存在/etc目录下。
正常的登录流程:输入用户名和密码
加载顺序:第一条线:/etc/profile ->/etc/profile.d/*sh/->
第二条线:/etc/profile->~/.bash_profile->~/.bashrc
如果是非正常登录,不输入用户名和密码,例如在root用户下使用su切换到普通用户,不需要输入用户名和密码,加载的顺序如下
/etc/bashrc->/etc/profile.d/*.sh->/etc/profile.d/lang.sh
Jdk的环境变量配置文件就在这里执行的:
#java environment
export JAVAHOME=/usr/local/jdk/jdk1..0_80
export CLASSPATH=.:${JAVAHOME}/jre/lib/rt.jar:${JAVAHOME}/lib/dt.jar:${JAVAHOME}/lib/tools.jar
export PATH=$PATH:${JAVAHOME}/bin
第一把JAVAHOME声明为系统环境变量
第二把CLASSPATH声明为环境变量
第三:把${JAVAHOME}/bin添加到系统环境变量中,$PATH:${JAVAHOME}/bin表示把把${JAVAHOME}/bin叠加到系统环境变量中,环境变量以:分隔符进行分割
变量的叠加
[root@localhost ~]# x=123
[root@localhost ~]# x="$x"456
[root@localhost ~]# echo $x
123456
[root@localhost ~]#
PATH变量是在/etc/profile文件中定义和声明的
case ":${PATH}:" in
*:"$1":*)
;;
*)
if [ "$2" = "after" ] ; then
PATH=$PATH:$
else
PATH=$:$PATH
fi
esac
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL