使用Linux的环境变量
许多程序和脚本都使用环境变量来获取系统信息,并存储临时数据和配置信息;
1、什么是环境变量
用来存储关于shell会话和工作环境的信息,就叫做环境变量;
bash shell下两种类型:
1、全局变量;
2、局部变量;
1.1、全局环境变量
全局环境变量再shell会话,和在该shell中产生的子进程中都可见。
Linux系统,默认情况下会支持一些全局环境变量,通过printenv来查看全局环境变量;
使用echo命令来查看某个环境变量:
例如:echo $HOME #变量前面必须加上$符号;在子进程中,这个变量依然生效;
1.2、局部环境变量
本地环境变量,只在定义他们的本地进程中生效可见;没有命令可以只显示本地环境变量;
set命令显示特定进程的所有环境变量集。set中看到的除了printenv中的变量外的所有变量,都是本地环境变量
2、设置环境变量
可以在bash shell中直接设置自己的环境变量。
2.1、设置本地环境变量
test=testing
echo $test
如果是字符串,就需要使用引号
test='testing a long string'
echo $test
【注意:我们使用小写字母来定义本地环境变量】
*环境变量名称、等号和值之间没有空格,这一点尤为重要*
同时:如果在子进程中设置了本地环境变量,则一旦离开子进程,本地环境变量将不再可用;
2.2、设置全局变量
我们需要创建一个本地环境变量,然后将其导出到全局环境中。这个过程通过export命令来完成;
test='testing a long string'
echo $test
export test
bash
echo $test #此时,test变量再子进程bash中也会生效了;
3、移除环境变量
unset可以为我们完成删除环境比那辆的操作;
test=testing
export test
unset test
4、默认的shell环境变量
默认的Bourne的环境变量:
1、CDPATH cd命令的搜索路径
2、HOME 当前用户的主目录
3、IFS 用于分隔字段的字符列表,shell使用它们分隔本文字符串
4、MAIL 当前用户邮箱文件名,对于新邮件,bash shell将检查该文件
5、MAILPATH 当前用户邮箱的多个文件名,由冒号分隔。对于新邮件,bash shell将检查该列表中的各个文件
6、OPTARG getopts命令处理的最后一个选项参数的值
7、OPTIND getopts命令处理的最后一个选项参数的索引值
8、PATH 冒号分隔的目录列表,shell将在这些目录中查找命令
9、PS1 主shell命令行界面提示字符串
10、PS2 次shell命令行界面提示字符串
bash shell自己的环境变量:
5、设置PATH环境变量
echo $PATH
PATH=$PATH:/home/rich/test
程序员常用技巧
PATH=$PATH:. #后面直接加点(.),将当前目录添加到PATH中去;
6、定位系统环境变量
通过Linux启动bash shell的时候,系统会读取一些文件,这些文件被称为启动文件。文件里面包含了启动bash shell的一些方法,可以采用三种方式来启动bash shell:
1、在登录时作为默认登录shell
2、作为非登录shell的交互式shell
3、作为非交互式shell运行脚本
6.1、登录shell
登录bash shell后,系统会查找四个常见文件:/etc/profile、$HOME/.bash_profile、$HOME/.bash_login、$HOME/.profile;
1、/etc/profile文件
/etc/profile文件是bash shell在系统上的主默认启动文件。系统上的每一个用户在登录shell的时候都会执行这个启动文件。另外3个属于特定用户,可以根据用户需求来自己定义;
我们可以在/etc/profile底部添加export行;
例如:export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE INPUTRC
如果使用的比那辆比较大,或者是一个执行文件,可以使用/etc/profile.d目录;它是Linux系统提供了一个放置特定应用程序的启动文件的地方。
2、$HOME启动文件
另外的三个启动文件用于特定用户的环境变量,用户可以编辑这些文件来添加自己启动的bash shell会话都为活动状态的环境变量;
6.2、交互式shell
bash 回车,这样的话启动了一个bash shell而没有登录系统,就是交互式的shell。交互式的shell与登录shell的行为不同,但它仍然提供了CLI的提示符界面;
交互式的shell不会处理/etc/profile文件,相反他会检查$HOME/。bashrc文件;
.bashrc文件执行两个任务:1、检查/etc目录中的公共bashrc;2、方便用户输入个人别名;
6.3、非交互式shell
这是系统开始执行shell脚本的shell,它不用担心CLI提示符。但是,您仍然希望在每次启动系统中的脚本时运行特定的脚本启动命令。
为了适应这种情况,bash shell提供连带BASH_ENV环境变量。当shell开始一个非交互是shell程序时,它将检查该环境变量表示的待执行启动文件的名称。如果该变量有值,则shell将执行该文件中的命令。在我们的Linux发型版本中,此环境变量并非默认设置;
7、变量数组
环境变量可以作为数组使用;数组可以保存多个值,这些值可以一起引用,也可以单独引用;
mytest=(one two three four five)
echo $mytest
echo ${mytest[2]}
echo ${mytest[*]}
mytest[2]=seven #给数组汇总的某个值赋值
unset mytest #移除整个数组变量
8、使用别名
alias -p #查看当前支持的别名
alias li='ls -il' #这样就可以自己定义命令的显示格式;
除了直接使用alias命令意外,还可以随时在shell中使用它。
命令别名与本地环境变量的行为相似。它们只对与定义范围内的shell进程生效;
bash
li #这样的话,新定义的alias li就无效了;
当然,您也可以在$HOME/.bashrc启动文件中去定义,这样的话,新的交换式的shell界面就会读取这个alias的配置;
使用Linux的环境变量的更多相关文章
- Linux中环境变量文件及配置
Linux中环境变量文件及配置 一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统 ...
- Linux SHELL,环境变量
SHELL: 在计算机科学中,Shell俗称壳(用来区别于核),是指"提供使用者使用界面"的软件(命令解析器).它类似于DOS下的command和后来的cmd.exe.它接收用户命 ...
- Linux设置环境变量小结:设置永久变量&临时变量 全局变量&局部变量
1.总结背景 在linux系统下,如果你下载并安装了应用程序,很有可能在键入它的名称时出现“command not found”的提示内容.如果每次都到安装目标文件夹内,找到可执行文件来进行操作就太繁 ...
- Linux中环境变量文件及配置(转载)
一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...
- Linux用户环境变量
Linux用户环境变量 环境变量就是系统或软件设置的一些参数,用户环境变量就是用户登录系统后,都有自已专用的运行环境.在Windows系统中用户环境变量保存在用户家目录,Linux也是同样的.本文主要 ...
- Linux 管理环境变量的文件分为系统级和用户级别
Linux 管理环境变量的文件分为系统级和用户级别 管理环境变量的文件也分为系统级和用户级别: 1.系统级:/etc/profile:该文件是用户登录时,操作系统定制用户环境时使用的第一个文件,应用于 ...
- Windows、Linux的环境变量
Windows操作系统 什么是环境变量?环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,比如临时文件夹位置和系统文件夹位置等. 这点有点类似于DOS时期的默认路径,当你运行某些程序时除 ...
- Linux中环境变量中文件执行顺序
Linux 的变量可分为两类:环境变量和本地变量 环境变量:或者称为全局变量,存在于所有的shell 中,在你登陆系统的时候就已经有了相应的系统定义的环境变量了.Linux 的环境变量具有 ...
- Linux下环境变量设置技巧
Linux下环境变量设置技巧,不用/etc/profile而是在/etc/profile.d目录下新建特定的shell文件来设置 区别: 1.两个文件都是设置环境变量文件的,/etc/profile是 ...
- Linux中环境变量文件
一.环境变量文件介绍 转自:http://blog.csdn.net/cscmaker/article/details/7261921 Linux中环境变量包括系统级和用户级,系统级的环境变量是每个登 ...
随机推荐
- 一种hyperscan API使用(1)
hyperscan: 编译和安装:http://www.cnblogs.com/zzqcn/p/4900643.html 简单介绍:http://www.cnblogs.com/zzqcn/p/489 ...
- s21day19 python笔记
s21day19 python笔记 一.面向对象的基本知识 1.1 基本格式 # 定义类 class 类名: def 方法名(self,name): print(name) return 123 de ...
- 贴图平移&凹凸贴图偏移
1. 平移(UV坐标动画) UV 坐标动画或 UV 平移的含义是,水平 (U) 和/或垂直 (V) 移动纹理的 UV 坐标,以产生复杂动画的错觉. 在以下示例中,火焰纹理沿着 U(水平)方向平移, ...
- P2820 局域网
GOOD NIGHT 诸位,这是最小生成树的模板(掌声) 最小生成树 以下是题目链接:FOR——MIKU 代码如下 /* 并查集可以解决最小生成树的问题 因为并查集可以完成高效的合并 但是,以下代码依 ...
- Javascript 2.9
对象:属性和方法属性:隶属于某个特定对象的变量方法:只有某个特定对象才能调用的函数 对象和方法都用"."来访问: Object.property Object.method() 由 ...
- Spark源码系列:DataFrame repartition、coalesce 对比
在Spark开发中,有时为了更好的效率,特别是涉及到关联操作的时候,对数据进行重新分区操作可以提高程序运行效率(很多时候效率的提升远远高于重新分区的消耗,所以进行重新分区还是很有价值的).在Spark ...
- Python-100道练习题答案
题目链接:http://www.runoob.com/python/python-100-examples.html #5. # def find_max(): # a=int(input(" ...
- 做web开发的时候老是把颜色码忘记了,特地来写个博客,以后方便找。
对照表 英文代码 形像颜色 HEX格式 RGB格式 LightPink 浅粉色 #FFB6C1 255,182,193 Pink 粉红 #FFC0CB 255,192,203 Crimson 猩红 # ...
- 剑指offer 8.递归和循环 跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级.求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果). 解题思路一: a.如果两种跳法,1阶或者2阶,那么假定第一次跳的是 ...
- 一些关于three.js的摘抄笔记
加载多个geometry的方式: (可以利用three.js自带convert_obj_three.py文件将obj文件转换成json文件) function loadModel() { loader ...