linux env

主要介绍了Linux中环境变量使用和配置时的一些基本概念和操作。

环境变量的分类

在shell中的环境变量主要有几种: 内部变量,系统环境变量(对所有用户有效),用户环境变量(对当前用户有效) 注意shell variable不属于env variable。

注意内部变量的特殊使用方式:

表示方法     描述
$n $1 表示第一个参数,$2 表示第二个参数 ...
$# 命令行参数的个数
$0 当前程序的名称
$? 前一个命令或函数的返回码
$* 以"参数1 参数2 ... " 形式保存所有参数
$@ 以"参数1" "参数2" ... 形式保存所有参数
$$ 本程序的(进程ID号)PID

每个应用都有自己的环境变量,比如在一个terminal中 export name=golang ,之后在新开一个终端,再echo $name就是没有信息的,新开的终端相当于是一个新的进程了。

set、env、export

env命令显示当前用户的变量;

set命令可以查看所有的环境变量,包括环境变量与用户自定义的变量;

export命令可以将自定义的变量转化成环境变量。

相关的文件

各种软件在运行的时候都会设置一些自定义的环境变量,比如说像JVM JAVA_HOME 或者像GOPATH等等,这些环境变量一般确定好,就不再发生变化,因此希望每次打开一个新的terminal的时候,或者是系统启动的时候,就自动把这些变量存储进来。

以ubuntu为例,列举一下相关的配置文件

方法1:修改/etc/profile 文件 ,在这个文件的最后面添加所需的环境变量,重启系统之后,文件中的内容会生效。
方法2:修改 .bashrc文件,如果你需要给某个用户权限使用这些环境变量,你只需要修改其个人用户主目录下的.bashrc就可以了,而不像第一种方法给所有用户权限,这样每次该用户在重新登录的时候,对应的用户目录下的.bashrc文件就会被执行
方法3:直接在shell中修改,仅仅针对于当前shell有效,在shell发生变化之后,当前所声明的这些环境变量就无效了。这样的变量一般称为shell variable。

区别shell variable 与 env variable

不使用export的话就是shell variable,这样的variable是不能通过cpp 中的getenv操作读取到的。一些parallel的library需要读取env variable,比如omp_num_threads,这个时候记得要使用env variable。

参考资料

主要参考的是这个文章
http://www.cnblogs.com/dongzhiquan/archive/2012/01/10/2317641.html

ubuntu java 环境变量配置

http://www.cnblogs.com/BigIdiot/archive/2012/03/26/2417547.html

linux 中的环境变量

http://www.cnblogs.com/BigIdiot/archive/2012/03/26/2417547.html

推荐文章