本课程是《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

shell编程之系统环境变量2的更多相关文章

  1. shell编程之系统环境变量

    点后面加上空格+配置文件等价于source 配置文件 常见的系统环境变量的配置 Bash_profile和.bashrc存在在家目录下,~表示家目录 [root@localhost home]# cd ...

  2. 01 shell编程规范与变量

    前言: 大家对shell脚本应该都不算陌生了,如果突然问你什么是shell脚本?是干什么用的?由什么组成以及怎么使用?变量的概念是什么?作用范围是什么?变量间的算术运算怎么表示?你能很容易答出来吗 本 ...

  3. Linux学习——shell编程之环境变量配置文件

    小白学习,在学习中总结! shell编程之环境变量配置文件 一:环境变量配置文件 1 shell编程之环境变量配置 变量类型: 用户自定义变量(本地变量) 环境变量 :定义每个用户的操作环境,如pat ...

  4. shell编程下 特殊变量、test / [ ]判断、循环、脚本排错

    第1章 shell中的特殊变量 1.1 $# $# 表示参数的个数 1.1.1 [示例]脚本内容 [root@znix ~]# cat /server/scripts/show2.sh #!/bin/ ...

  5. 【转】shell编程下 特殊变量、test / [ ]判断、循环、脚本排错

    [转]shell编程下 特殊变量.test / [ ]判断.循环.脚本排错 第1章 shell中的特殊变量 1.1 $# $# 表示参数的个数 1.1.1 [示例]脚本内容 [root@znix ~] ...

  6. Shell 编程基础之变量和环境变量

    一.变量赋值和引用 Shell 编程中,使用变量无需事先声明,同时变量的命名不惜遵循如下规则: 首个字符必须为字母(a-z,A-Z)或者_ 变量名中间不能有空格,可以使用_连接 不能使用其他表达符号 ...

  7. shell编程之环境变量

    在shell编程里我们首先接触到的是环境变量,常用命令说明 1. 使用echo命令查看单个环境变量.例如: echo $PATH 2. 使用env查看所有环境变量.例如: env 3. 使用set查看 ...

  8. Linux编程 13 (系统环境变量位置, 环境变量持久化)

    一.系统环境变量位置 在上章中,知道了如何修改系统环境变量,如PATH变量,以及创建自己的全局环境变量和局部环境变量.这篇学习怎么让环境变量的作用持久化.在此之前,先了解下系统环境变量文件会在哪些位置 ...

  9. SHELL编程规范与变量

    shell相比标准开发语言比如JAVA,C,C++来说还是比较简单的,其实就是一堆命令的集合而已,初学者从简单的shell脚本学起,至于shell编程还是要有编程思想在里面,因此,循序渐进很重要,先研 ...

随机推荐

  1. MVC案例

    MVC案例分析: - 没有业务层,直接Servlet调用Dao,所以也没有业务操作.所有在DAO直接获取Connection对象 -采用MVCDs设计模式 -使用到的技术: mvc设计模式:JSP  ...

  2. lunix如何查看防火墙是否关闭和关闭开启防火墙命令

    查看防火墙是否关闭的命令如下: 1.通过 /etc/init.d/iptables status 或者 service iptables status命令 2.通过 iptables -L命令 查看 ...

  3. STM32读取匿名光流数据——与Guidance的光流和超声波做对比测试

    使用两个串口同时读取匿名光流和Guidance数据:用以比较两个光流的效果 Github链接:https://github.com/W-yt/YuTian_Pro/tree/master/Guidan ...

  4. Java实现 LeetCode 409 最长回文串

    409. 最长回文串 给定一个包含大写字母和小写字母的字符串,找到通过这些字母构造成的最长的回文串. 在构造过程中,请注意区分大小写.比如 "Aa" 不能当做一个回文字符串. 注意 ...

  5. Java实现 蓝桥杯VIP 算法提高 字符串跳步

    问题描述 给定一个字符串,你需要从第start位开始每隔step位输出字符串对应位置上的字符. 输入格式 第一行一个只包含小写字母的字符串. 第二行两个非负整数start和step,意义见上. 输出格 ...

  6. Java实现 蓝桥杯VIP 算法提高 复数求和

    算法提高 复数求和 时间限制:1.0s 内存限制:512.0MB 从键盘读入n个复数(实部和虚部都为整数)用链表存储,遍历链表求出n个复数的和并输出. 样例输入: 3 3 4 5 2 1 3 样例输出 ...

  7. Java实现 LeetCode 95 不同的二叉搜索树 II(二)

    95. 不同的二叉搜索树 II 给定一个整数 n,生成所有由 1 - n 为节点所组成的二叉搜索树. 示例: 输入: 3 输出: [ [1,null,3,2], [3,2,null,1], [3,1, ...

  8. Java实现 LeetCode 43 字符串相乘

    43. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2,返回 num1 和 num2 的乘积,它们的乘积也表示为字符串形式. 示例 1: 输入: num1 = "2& ...

  9. OAuth + Security - 6 - 自定义授权模式

    我们知道OAuth2的官方提供了四种令牌的获取,简化模式,授权码模式,密码模式,客户端模式.其中密码模式中仅仅支持我们通过用户名和密码的方式获取令牌,那么我们如何去实现一个我们自己的令牌获取的模式呢? ...

  10. 2个线程A-B-A-B或者B-A-B-A循环输出

    代码: /** * 两个线程循环打印输出a-b-a-b */ public class AandBforTOthread { private static Object o = new Object( ...