Linux环境变量及其配置实战

Linux环境变量及其设置

简介

环境变量是在操作系统中一个具有特定名字的对象,它包含了一个或多个应用程序将使用到的信息。Linux是一个多用户的操作系统,每个用户登录系统时都会有一个专用的运行环境,通常情况下每个用户的默认的环境都是相同的。这个默认环境就是一组环境变量的定义。每个用户都可以通过修改环境变量的方式对自己的运行环境进行配置。

分类

根据环境变量的生命周期我们可以将其分为永久性变量和临时性变量,根据用户等级的不同又可以将其分为系统级变量和用户级变量。怎么分都无所谓,主要是对它的理解。

对所有用户生效的永久性变量(系统级)

这类变量对系统内的所有用户都生效,所有用户都可以使用这类变量。作用范围是整个系统。 
设置方式: 用vim在/etc/profile文件中添加我们想要的环境变量。 
当然,这个文件只有在root(超级用户)下才能修改。我们可以在etc目录下使用ls -l查看这个文件的用户及权限。

利用vim打开/etc/profile文件,用export指令添加环境变量。 

#set java environment
export JAVA_HOME=/usr/java/jdk
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

【注意】:添加完成后新的环境变量不会立即生效,除非你调用source /etc/profile 该文件才会生效。否则只能在下次重进此用户时才能生效。

对单一用户生效的永久性变量(用户级)

该类环境变量只对当前的用户永久生效。也就是说假如用户A设置了此类环境变量,这个环境变量只有A可以使用。而对于其他的B,C,D,E….用户等等,这个变量是不存在的。

设置方法:在用户主目录”~”下的隐藏文件 “.bash_profile”中添加自己想要的环境变量。 
查看隐藏文件: ls -a或ls -al 

利用vim打开文件,利用export添加环境变量。与上相同。同样注意,添加完成后新的环境变量不会立即生效,除非你调用source ./.bash_profile 该文件才会生效。否则只能在下次重进此用户时才能生效。

可以看到我在上图中用红框框住了两个文件,.bashrc和.bash_profile。原则上来说设置此类环境变量时在这两个文件任意一个里面添加都是可以的。

~/.bash_profile是交互式login方式进入bash shell运行。 
~/.bashrc是交互式non-login方式进入bash shell运行。

二者设置大致相同。通俗点说,就是.bash_profile文件只会在用户登录的时候读取一次,而.bashrc在每次打开终端进行一次新的会话时都会读取。

临时有效的环境变量(只对当前shell有效)

此类环境变量只对当前的shell有效。当我们退出登录或者关闭终端再重新打开时,这个环境变量就会消失。是临时的。

设置方法:直接使用export指令添加。 

设置环境变量常用的几个指令

echo

查看显示环境变量,使用时要加上符号“echo”例:echoPATH

export

设置新的环境变量 
export 新环境变量名=内容 
例:export MYNAME=”LLZZ”

修改环境变量

修改环境变量没有指令,可以直接使用环境变量名进行修改。 
例:MYNAME=”ZZLL”

env

查看所有环境变量

set

查看本地定义的所有shell变量

unset

删除一个环境变量 
例 unset MYNAME

readonly


设置只读环境变量。 
例:readonly MYNAME

常用的几个环境变量(一般都为大写)

PATH

指定命令的搜索路径。通过设置环境变量PATH可以让我们运行程序或指令更加方便。 
echo $PATH 查看环境变量PATH。 


参考:

https://blog.csdn.net/llzk_/article/details/53813266


经典实战说明配置环境变量方法:

安装完成java jdk后,配置

(1)对所有用户生效的永久性变量(系统级)配置

[root@szxjdw02-web-51~]# vim /etc/profile     #增加如下4行内容
#set java environment
export JAVA_HOME=/usr/java/jdk
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

使用全局环境变量配置生效

[root@szxjdw02-web-51 ~]# source /etc/profile

查看java环境变量是否生效

[root@szxjdw02-web-51 ~]# which java
/usr/java/jdk/bin/java

在远程这台机器执行which java提示找不到java,本地可以找到,这是为什么?

[root@office target]# ssh [email protected] which java
which: no java in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)

(2)对单一用户生效的永久性变量(用户级)

~/.bash_profile是交互式login方式进入bash shell运行。 
~/.bashrc是交互式non-login方式进入bash shell运行。

2.1 配置~/.bash_profile是交互式login方式进入bash shell运行环境变量

[root@szxjdw02-web-51 ~]# vim ~/.bash_profile    #增加如下4行内容
#set java environment
export JAVA_HOME=/usr/java/jdk
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

远程这台机器执行which java还是提示找不到java,但是本地可以找到

[root@office target]# ssh [email protected] which java
which: no java in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)

让配置文件生效一下

[root@szxjdw02-web-51 ~]# source ~/.bash_profile

远程这台机器执行which java还是提示找不到java

[root@office target]# ssh [email protected] which java
which: no java in (/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin)

2.2 配置~/.bashrc是交互式non-login方式进入bash shell运行环境变量

[root@szxjdw02-web-51 ~]# vim ~/.bashrc    #增加如下4行内容
#set java environment
export JAVA_HOME=/usr/java/jdk
export CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib
export PATH=$JAVA_HOME/bin:$PATH

先不要source ~/.bashrc,直接远程执行which java查看是否可以找到java环境变量,如下发现找到了。

[root@office target]# ssh [email protected] which java
/usr/java/jdk/bin/java

总结:永久修改环境变量三部曲

第一部曲:交互式login方式进入bash shell运行环境变量

vim /etc/profile

source /etc/profile

第二部曲:交互式login方式进入bash shell运行环境变量

vim ~/.bash_profile

source ~/.bash_profile

第三部曲:交互式non-login方式进入bash shell运行环境变量

vim ~/.bashrc

source ~/.bashrc  #此步骤不操作也可以,因为上面实战已验证



另外补充:

bashrc与profile的区别

要搞清bashrc与profile的区别,首先要弄明白什么是交互式shell和非交互式shell,什么是login shell 和non-login shell。

交互式模式就是shell等待你的输入,并且执行你提交的命令。这种模式被称作交互式是因为shell与用户进行交互。这种模式也是大多数用户非常熟悉的:登录、执行一些命令、签退。当你签退后,shell也终止了。 shell也可以运行在另外一种模式:非交互式模式。在这种模式下,shell不与你进行交互,而是读取存放在文件中的命令,并且执行它们。当它读到文件的结尾,shell也就终止了。

bashrc与profile都用于保存用户的环境信息,bashrc用于交互式non-loginshell,而profile用于交互式login shell。系统中存在许多bashrc和profile文件,下面逐一介绍:

/etc/pro此文件为系统的每个用户设置环境信息,当第一个用户登录时,该文件被执行.

并从/etc/profile.d目录的配置文件中搜集shell的设置.

/etc/bashrc:为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取。有些linux版本中的/etc目录下已经没有了bashrc文件。

~/. pro每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该

文件仅仅执行一次!默认情况下,它设置一些环境变量,然后执行用户的.bashrc文件.

~/.bashrc:该文件包含专用于某个用户的bash shell的bash信息,当该用户登录时以及每次打开新的shell时,该文件被读取.

另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承/etc/profile中的变量,他们是"父子"关系.


参考文档:

https://www.cnblogs.com/aaronLinux/p/5837702.html

https://www.cnblogs.com/hongzg1982/articles/2101792.html

https://blog.csdn.net/llzk_/article/details/53813266












猜你喜欢

转载自blog.51cto.com/sandshell/2149629