Java系统属性和环境变量

1 什么是环境变量

       境变量分为系统环境变量和用户环境变量。
  所说的环境变量是指系统环境变量,对所有用户起作用,而用户环境变量只对当前用户起作用。

  例如要用java,那么把java的bin目录加入到path变量下面,那么它就是系统环境变量,所用用户登陆,在命令行输入java都会有java的帮助信息出来。而如果在某个用户的变量下面新建一个变量,那么它就只对这个用户有用,当以其他用户登陆时这个变量就和不存在一样。

  这个问题在linux下面就相对好理解一些,系统变量都在/etc/profile文件里面,而用户的变量则在~/.bash_profile(如果用的是bash的话),每个用户的用户目录对其他用户不可见。假设有a,b,c三个用户,在a的变量文件中写入语句在屏幕上述出a,在b的输出b,c的什么都不输出,系统文件输出sys,那么当用a用户登陆时,输出a;用户b登陆输出b,用户c则输出sys.

  在windows下面用到少设置环境变量的时候很少,例如想只用jdk而不想用jbuilder,那么就得自己设置jdk的path,classpath等环境变量。

     环境变量设置命令 

     win7/win10:

    1.set命令

     set用于设置临时环境变量。只在当前命令行窗口中有效。

    1.1 cmd终端

​
1.查看所有环境变量:set

2.设置环境变量:set MyEnvTest=D:\res

3.set查看某个或某类环境变量:set MyEnvTest
  
 输出结果:MyEnvTest=D:\res

4.echo查看某个环境变量:echo %MyEnvTest%
  
 输出结果:D:\res

5.修改环境变量值:set MyEnvTest=%MyEnvTest%;D:\apk

6.删除某个环境变量:set MyEnvTest=

​

1.2 gitbash终端

# 设置 CLASSPATH
$ export CLASSPATH="/d/program/JavaTrainning/src"
# 查看 CLASSPATH
$ echo $CLASSPATH
# 输出
$ /d/program/JavaTrainning/sr

 2 setx

用于设置用户环境变量和系统环境变量。默认设置是本地环境,通过选项 /m 设置系统环境变量。

# 永久设置 GIT_HOME 变量为 abc
$ setx /m GIT_HOME abc

# 将 C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin 追加到 PATH 变量
$ setx -m PATH "%PATH%;C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin"

可以通过高级系统设置——>环境变量,设置系统或用户级别的环境变量。

 

 linux下设置和查看环境变量

Linux的变量种类

按变量的生存周期来划分,Linux变量可分为两类: 
1 永久的:需要修改配置文件,变量永久生效。 
2 临时的:使用export命令声明即可,变量在关闭shell时失效。

设置变量的三种方法

1 在/etc/profile文件中添加变量【对所有用户生效(永久的)】 
用VI在文件/etc/profile文件中增加变量,该变量将会对Linux下所有用户有效,并且是“永久的”。 
例如:编辑/etc/profile文件,添加CLASSPATH变量 
# vi /etc/profile 
export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib

注:修改文件后要想马上生效还要运行# source /etc/profile不然只能在下次重进此用户时生效。

2 在用户目录下的.bash_profile文件中增加变量【对单一用户生效(永久的)】 
用VI在用户目录下的.bash_profile文件中增加变量,改变量仅会对当前用户有效,并且是“永久的”。 
例如:编辑guok用户目录(/home/guok)下的.bash_profile 
vi/home/guok/.bash.profile添加如下内容:exportCLASSPATH=./JAVAHOME/lib;vi/home/guok/.bash.profile添加如下内容:exportCLASSPATH=./JAVAHOME/lib;JAVA_HOME/jre/lib 
注:修改文件后要想马上生效还要运行$ source /home/guok/.bash_profile不然只能在下次重进此用户时生效。

3 直接运行export命令定义变量【只对当前shell(BASH)有效(临时的)】 
在shell的命令行下直接使用[export 变量名=变量值] 定义变量,

该变量只在当前的shell(BASH)或其子shell(BASH)下是有效的,

shell关闭了,变量也就失效了,再打开新shell时就没有这个变量,需要使用的话还需要重新定义。

环境变量的查看

1 使用echo命令查看单个环境变量。例如: 
echo $PATH 
2 使用env查看所有环境变量。例如: 
env 
3 使用set查看所有本地定义的环境变量。

使用unset删除指定的环境变量

set可以设置某个环境变量的值。清除环境变量的值用unset命令。如果未指定值,则该变量值将被设为NULL。示例如下: 
export TEST="Test..." #增加一个环境变量TESTexport TEST="Test..." #增加一个环境变量TEST env|grep TEST #此命令有输入,证明环境变量TEST已经存在了 
TEST=Test... 
unset  TEST #删除环境变量TEST 
$ env|grep TEST #此命令没有输出,证明环境变量TEST已经删除

常用的环境变量

PATH 决定了shell将到哪些目录中寻找命令或程序 
HOME 当前用户主目录 
HISTSIZE 历史记录数 
LOGNAME 当前用户的登录名 
HOSTNAME 指主机的名称 
SHELL 当前用户Shell类型 
LANGUGE  语言相关的环境变量,多语言可以修改此环境变量 
MAIL 当前用户的邮件存放目录 
PS1 基本提示符,对于root用户是#,对于普通用户是$

 

2 什么是java的系统属性

      在java应用程序运行时,特别是需要在跨平台工作环境中运行时,需要确定操作系统的类型、用户JDK版本、用户工作目录等随工作平台变化的信息,以确保程序正确运行。这些程序的运行环境信息为java平台的自身配置,被称为java的系统属性。系统属性与操作系统的环境变量类似,可以认为是JVM虚拟机的环境变量。(其实JVM本身就相当于一个计算机,自然它本身也需要一些自己的环境变量 ,JVM中称为系统属性)
     系统属性与环境变量都是名称与值之间的映射。两种机制都可以将用户定义的信息传递给java进程。全局变量产生的更多的是全局效应,他们不仅对java子进程可见,而且对于定义它们的所有子进程都是可见的。程序中尽可能使用系统属性,而环境变量应该在全局范围需要时才使用。

如何查看java的系统属性

方法一、jvisualvm工具

%JAVA_HOEM%/bin/jvisulavm,打开java visualVM软件,本地---Visual VM ---概述---系统属性

方法二、System.getProperty,System.getProperties方法获取

System.getProperties() : 获取所有系统属性
System.getProperty(String name) :获取指定的系统属性
System.getProperty(String name, String def) :获取指定的系统属性,如果不存在该属性,则返回默认值def。
此外,System模块提供了获取环境变量的方法:
System.getenv() : 获取所有的环境变量
System.getenv(String name) : 获取指定名称的环境变量值

System方法查看系统属性和环境变量示例

System.out.println(System.getProperty("sun.arch.data.model"));//获取java运行时的数据位数

执行结果:(依赖程序运行的环境)
 64

System.getProperties().list(System.out);// 获取所有的系统属性

执行结果这里不展示。

System.out.println(System.getenv("OS"));//获取操作系统类型

执行结果:(依赖程序运行的环境)
 Windows_NT

设置系统属性

System类中提供设置系统属性的方法setProperty,使用方法如下:

System.setProperty("NU_HOME","E:\\nucleon";
System.out.println(System.getProperty("NU_HOME"));

执行结果:
  E:\nucleon

常见的系统变量

含义
OS操作系统类型
COMPUTERNAME计算机名
Windir系统安装目录
SystemRoot系统启动目录
USERNAME用户名
USERPROFILE用户目录
USERDOMAIN用户域的名称
PATHEXT可执行文件后缀
TEMP用户临时文件目录
TEMP用户临时文件目录
TMP临时目录
PATHpath环境变量
............

常见的系统属性

含义
java.runtime.namejava运行时名称
sun.boot.library.pathjre的bin路径
java.vm.versionjava虚拟机版本
java.vm.vendorjava虚拟机供应商
java.vendor.urljava供应商网址
java.vm.namejava虚拟机名称
user.country国家编码
user.home当前程序根目录
user.timezone计算机当前所在时区
user.name当前计算机用户名称
file.separator文件路径分隔符
file.encoding文件编码
.............
  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值