Ubuntu 环境变量设置方法

环境变量修改

  1. 对所有用户生效,永久的

    • /etc/profile文件中添加变量

      # 打开文件 (以设置java环境为例)
      vi /etc/profile
      # 在文末加入 
        # 注意:1)linux用冒号“:”来分隔路径, windows用分号;来分割
      	   # 2)CLASSPATH中当前目录“.”不能丢,把当前目录丢掉也是常见的错误。
      	   # 3) export是把这变量导出为全局变量。
      	   # 4) 严格区分大小写。
      export JAVA_HOME=/usr/share/jdk1.8.0_05
      export PATH=$JAVA_HOME/bin:$PATH
      export CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib
      # 生效
      source /etc/profile
      
    • /etc/environment 中添加变量

      # enviroment文件比较不同, 原文件应为PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games" 的形式
      # 直接在后面加上冒号和路径即可
      PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/etc/apache/bin"
      PRESTO="/home/zhen/software/PRESTO/presto"
      
  2. 对单一用户生效,永久的

    • 修改/etc/bash.bashrc

    • 修改~/.bashrc

    • 修改~/.profile (有时候是 ~/.bash_profile,或者 ~/.bash_login)

      # 与 /etc/profile 文件的添加方法相同
      
  3. 只对当前shell有效,临时的

  1. 使得设置立即生效
# for sys
source /etc/environment
# for all users
source /etc/profile
# for single user
source ~/.bashrc
# or logout the system.

更多补充之文件解释

  1. /etc/profile 是所有用户的环境变量,与登录用户有关; /etc/enviroment 是系统的环境变量,与登录用户无关。

  2. /etc/profile: 此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行. 并从/etc/profile.d目录的配置文件中搜集shell的设置。通常在这里我们设定是为所有用户可使用的全局变量。

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

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

    注: ~ 在linux系统代表`HOME`变量。此外,在不同的LINUX操作系统下,这个文件可能是不同的,可能是 ~/.bash_profile~/.bash_login~/.profile其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile~/.bash_login~/.profile。比如Ubuntu,用户文件夹下默认的就只有~/.profile文件。

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

  6. ~/.bash_logout: 当每次退出系统(退出bash shell)时,执行该文件. 另外,/etc/profile中设定的变量(全局)的可以作用于任何用户,而~/.bashrc等中设定的变量(局部)只能继承 /etc/profile中的变量,他们是”父子”关系。

  7. ~/.bash_profile 是交互式、login 方式进入 bash 运行的, ~/.bashrc 是交互式 non-login 方式进入 bash 运行的通常二者设置大致相同,所以通常前者会调用后者。在profile文件中有调用bashrc文件的语句

  8. 执行顺序: 当你登录并且登录shell是bash时,bash首先执行/etc/profile文件中的命令(如果该文件存在),然后它顺序寻找~ /.bash_profile,~/.bash_login~/.profile文件,并执行找到的第一个可读文件中的命令.当登录bash退出时,它 将执行~/.bash_logout文件中的命令.

    /etc/profile -> (~/.bash_profile | ~/.bash_login | ~/.profile) -> ~/.bashrc -> /etc/bashrc -> ~/.bash_logout

    当启动一个交互的bash时,它将执行~/.bashrc文件中的命令(如果该文件存在并且可读).当非交互地启动以运行一个shell脚本时,bash将查找bash_env环境变量,确定执行文件的名称.

更多补充之登陆环境

工作环境设置文件有两种:系统环境设置文件个人环境设置文件

  1. 系统中的用户工作环境设置文件:
    • 登录环境设置文件:/etc/profile
    • 非登录环境设置文件:/etc/bashrc
  2. 用户个人设置的环境设置文件:
    • 登录环境设置文件: $HOME/.bash_profile //这个是环境变量设置的地方
    • 非登录环境设置文件:$HOME/.bashrc //这个是定义别名的地方 登录环境:指用户登录系统后的工作环境 非登录环境:指用户再调用子shell时所使用的用户环境

使用建议

查看环境变量

  1. 使用echo命令查看单个环境变量。 echo + space + $ + EvnVar, e.g., echo $SHELL
  2. 使用env查看所有环境变量
  3. 使用set查看所有本地定义的环境变量,unset可以删除指定的环境变量。

常用的环境变量

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

References

[1]. http://www.cnblogs.com/wiessharling/p/4272329.html

[2]. http://blog.csdn.net/z714303584/article/details/60761365

[3]. http://blog.sina.com.cn/s/blog_77c6324101017xoe.html

[4]. http://www.cnblogs.com/hzhida/archive/2012/08/06/2624998.html

[5]. http://andy136566.iteye.com/blog/1025338

[6]. http://blog.csdn.net/xueyushenzhou/article/details/50546558

[7]. http://blog.csdn.net/ermuzhi/article/details/7815733

[8]. http://blog.csdn.net/teamlet/article/details/8257853

Table of Contents