environmentVariable - juedaiyuer/researchNote GitHub Wiki

个人环境变量设置

简单的说,计算机在执行命令的时候是在环境变量找对应命令的位置的

环境变量可以看成是计算机的全局变量

调用轮子,轮子所在的位置;调用命令,命令的所在

系统级

/etc/profile 在登录时,操作系统定制用户环境时使用的第一个文件,为系统的每个用户设置环境信息
用户第一次登录时,该文件被执行,并从/etc/profile.d目录的配置文件中搜集shell设置
这个文件一般就是调用/etc/bash.bashrc文件

/etc/bash.bashr 系统级的bashrc文件,为每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.

/etc/environment 在登录时操作系统使用的第二个文件,系统在读取你自己的profile前,设置环境文件的环境变量

profile与environment

environment是设置整个系统的环境,profile是设置所有用户的环境。前者与登录用户无关,后者有关

对于用户的shell初始化而言先执行profile,再读取文件environment

整个系统

environment-profile-.profile-.env

登录系统shell

profile-environment-.profile-.env

如果同一个变量在用户环境profile和系统环境environment,不同的值应该以用户环境为准

临时作用

shell时export

shell执行程序时,会提供一组环境变量,export可新增,修改或删除环境变量,供后续执行的程序使用,仅作用于此登录操作

用户级

~/.profile 在登录时用到的第三个文件
每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!
默认情况下,他设置一些环境变量,执行用户的.bashrc文件

~/.bashrc 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该该文件被读取
不推荐放到这儿,因为每开一个shell,这个文件会读取一次,效率上讲不好。

~/.bash_profile 每个用户都可使用该文件输入专用于自己 使用的shell信息,当用户登录时,该文件仅仅执行一次!
默认情况下,他设置一些环境变量,执行用户的.bashrc文件
交互式login方式进入bash运行
bashrc是交互式non-login方式进入bash运行

~./bash_login 不推荐使用这个,这些不会影响图形界面。而且.bash_profile优先级比bash_login高。当它们存在时,登录shell启动时会读取它们

~/.bash_logout 当每次退出系统(退出bash shell)时,执行该文件

~/.pam_environment 用户级的环境变量设置文件

登录执行文件过程

登录Linux

/etc/profile

用户目录下

  1. ~/.bash_profile
  2. ~/.bash_login
  3. /.profile(如果存在的话,会执行/.bashrc---/etc/bashrc)

退出shell

~/.bash_logout

设置环境变量的方法

/etc/profile 全局,随系统启动设置
/root/.profile /home/username/.profile 只对当前窗口有效
/root/.bashrc /home/username/.bashrc 随系统启动,设置用户的环境变量;平时设置这个就可以

控制台

$PATH="$PATH:/you_set_path"

修改profile文件

sudo vim /etc/profile

修改.bashrc文件

sudo vim /root/.bashrc
#在文件中加入下面的代码
export PATH="$PATH:/you_set_path"

自己环境变量配置

修改配置文件后,必须注销重新登录才能生效,使用source不用重新登录.

/etc/profile下的环境变量的个人使用

#java set
export JAVA_HOME=/usr/jdk1.8.0_65
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:/usr/jdk1.8.0_65/jre/lib

#java set2
export JAVA_HOME=/home/juedaiyuer/opensource/jdk1.8.0_144
export JRE_HOME=${JAVA_HOME}/jre
export PATH=${JAVA_HOME}/bin:$PATH
export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

#hadoop set
export HADOOP_HOME=/usr/hadoop-2.7.1
export PATH=$HADOOP_HOME/bin:$PATH

#maven set
export M2_HOME=/home/juedaiyuer/apache-maven-3.3.9
export M2=$M2_HOME/bin
export PATH=$M2:$PATH

#set tomcat
export TOMCAT_HOME=/home/juedaiyuer/apache-tomcat-9.0.0.M4

#mysql5.6 set
export MYSQL_HOME=/opt/mysql/server-5.6/bin

##source##