Linux中bash环境变量详解

1、什么是环境变量? 

举个例子来理解一下这个环境变量,比如通常在Linux系统中执行ls命令,ls 基本命令用于列出目录的内容。在 linux 中执行命令时,需要键入该命令的完整路径。才能够找到对应的执行文件,由于 ls 命令位于/bin目录中,因此用户应执行/bin/ls命令以列出当前目录中的文件。那么Linux环境变量的魔力来了。Linux 有一个 PATH 变量。在 PATH 变量的帮助下,不需要完整路径。bash shell 会自动在用户的 PATH 变量中列出的目录中搜索用户刚刚在命令行中键入的命令。当匹配的命令找到 shell 时,将运行它。通过这种方式,环境变量提供了一种在 Linux 中的多个应用程序和进程之间共享配置设置的简单方法。

2、如何查看环境变量?

printenv或env命令可用于列出 linux 环境变量。coreutils包中包含printenv和env。使用 printenv 命令显示 linux 环境变量。

可参考:

如何在Linux中查看系统环境变量_喜气youngyoung的博客-CSDN博客

3、如何设置环境变量

1)通过修改配置文件设置永久环境变量

(1)设置全局环境变量,对所有用户都会生效:

  • etc/profile: 此文件为系统的每个用户设置环境信息。当用户登录时,该文件被执行一次,并从 /etc/profile.d 目录的配置文件中搜集shell 的设置。一般用于设置所有用户使用的全局变量。/etc/profile.d目录用于定义全局脚本。在/etc/profile.d目录下创建一个全局脚本,启动时就会运行该脚本。
  • /etc/bashrc: 当 bash shell 被打开时,该文件被读取。也就是说,每次新打开一个终端 shell,该文件就会被读取。

(2)设置局部环境变量,只对当前用户生效:

  • ~/.bash_profile 或 ~/.profile: 只对单个用户生效,当用户登录时该文件仅执行一次。用户可使用该文件添加自己使用的 shell 变量信息。另外在不同的LINUX操作系统下,这个文件可能是不同的,可能是 ~/.bash_profile, ~/.bash_login 或 ~/.profile 其中的一种或几种,如果存在几种的话,那么执行的顺序便是:~/.bash_profile、 ~/.bash_login、 ~/.profile。比如 Ubuntu 系统一般是 ~/.profile 文件。
  • ~/.bashrc: 只对单个用户生效,当登录以及每次打开新的 shell 时,该文件被读取

(3)此外,修改 /etc/environment 这个文件也能实现全局环境变量的设置。/etc/environment 设置的也是全局变量,从文件本身的作用上来说, /etc/environment 设置的是整个系统的环境,而/etc/profile是设置所有用户的环境。有几点需注意:

  • 系统先读取 etc/profile 再读取 /etc/environment(还是反过来?)
  • /etc/environment 中不能包含命令,即直接通过 VAR="..." 的方式设置,不使用 export 。
  • 使用 source /etc/environment 可以使变量设置在当前窗口立即生效,需注销/重启之后,才能对每个新终端窗口都生效。
  • 修改这些文件时,需要root权限,甚至需要chmod、chattr命令修改权限。

2)通过export命令设置临时环境变量

使用export命令来设置临时环境变量这个变量是只存在于设定环境变量的会话中,其它会话窗口是不会有该变量的,一旦会话结束或者会话退出,重新连接会话,该环境变量就不存在了,如果还需要使用的话还得继续设定该环境变量。适合设置一些临时变量。

通过 Shell 命令 export,注意变量名不要有美元号 $,赋值语句中才需要有:

~]$
~]$ export PATH=$PATH:/usr/local/hadoop/bin

4、修改 Linux 环境变量实例

以 CentOS 为例,修改 ~/.bash_profile 文件:

~]$ 
~]$ vim ~/.bash_profile

在最后加上代码 PATH="$PATH:/usr/local/hadoop/bin",注意等号(=)两边不要有空格,即:

PATH="$PATH:/usr/local/hadoop/bin"

因为这个文件只在用户登陆时才读取一次,所以需要重启才会生效(修改/etc/profile、/etc/environment也是如此)。但可以使用命令 source ~/.bash_profile 使其立即生效。通过 echo $PATH 可以看到修改后的变量值:

~]$
~]$ source ~/.bash_profile
~]$ echo $PATH

5、参考

设置Linux环境变量的方法和区别_Ubuntu/CentOS_厦大数据库实验室博客

Linux如何设置环境变量

6、注意 

前面讲的环境变量的查看和设置都是基于bash环境的,若进行csh环境变量设置需要在~/.cshrc文件设置,可以使用bash和csh这两个命令来回切换以使配置的环境变量在当前终端窗口生效。

# ~/.cshrc
setenv JAVA_HOME /home/youngyoung/java8

你可能感兴趣的:(Linux,linux)