Linux环境变量

本文遵循BY-SA版权协议,转载请附上原文出处链接。


本文作者: 黑伴白

本文链接: http://heibanbai.com.cn/posts/63e3ea5/

Linux环境变量

什么是变量

在计算机编程和操作系统中,变量是一种用于存储和表示数据的容器。这个容器有一个名称(变量名),而且可以存储不同类型的数据,比如整数、浮点数、字符串等。变量的值可以在程序的执行过程中被修改,因此它们提供了一种动态存储和管理数据的方式。

变量的特点

  1. 变量名: 是变量的标识符,用于在程序中引用该变量。
  2. 值: 是存储在变量中的数据。
  3. 数据类型: 定义了变量可以存储的数据的种类,例如整数、浮点数、字符串等。
  4. 内存地址: 是变量在计算机内存中的位置。

变量的作用

  1. 存储数据: 变量允许程序存储和访问数据。
  2. 方便引用: 通过变量名,可以轻松地引用和操作存储在其中的数据。
  3. 动态性: 变量的值可以在程序执行过程中改变,提供了灵活性和动态性。

举例说明

  • 整数变量
1
age = 25

这个例子中,age 是变量名,而 25 是变量的值。这个变量存储的是一个整数。

  • 浮点数变量
1
pi = 3.14

这个例子中,pi 是变量名,而 3.14 是变量的值。这个变量存储的是一个浮点数。

  • 字符串变量
1
name = "YaoKnow"

这个例子中,name 是变量名,而 "YaoKnow" 是变量的值。这个变量存储的是一个字符串。

  • 布尔变量
1
is_student = True

这个例子中,is_student 是变量名,而 True 是变量的值。这个变量存储的是一个布尔值。

什么是环境变量

环境变量是一种在操作系统层面用于存储配置信息和控制系统行为的机制。它们是由键值对组成的,每个键值对都表示一个特定的配置项或参数。在Linux和其他类Unix系统中,环境变量在各种应用程序和系统级别的进程之间提供了共享信息的方法。

环境变量分类

按生命周期分:

  • 永久的:在环境变量脚本文件中配置,用户每次登录时会自动执行这些脚本,相当于永久生效。
  • 临时的:用户利用export命令,在当前终端下声明环境变量,关闭Shell终端失效。

按作用域分:

  • 系统环境变量:公共的,对全部的用户都生效。
  • 用户环境变量:用户私有的、自定义的个性化设置,只对该用户生效。

环境变量相关操作命令

echo:查看指定环境变量的值

env:查看当前用户全部的环境变量。

export:设置一个新的环境变量

set: 显示本地定义的shell变量和环境变量

unset: 取消本地变量和环境变量

printenv:查看指定环境变量的值。

常见的环境变量

1
2
3
4
5
6
7
HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)。
PWD:显示当前目录。
SHELL:当前用户用的是哪种Shell
HISTSIZE:保存历史命令记录的条数。
HOSTNAME:主机的名称,应用程序如果要用到主机名的话,通常是从这个环境变量中取得。
LOGNAME:当前用户的登录名。
LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。

PATH

表示可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序。

接下来我们思考一下为什么同为可执行程序的 lspwd 等等诸多指令在使用时不需要加 ./ 来说明其所处路径呢?

这是因为在系统中存在一个环境变量帮助我们在特定路径下搜索这些默认指令,这个环境变量叫做 PATH 。

如果可执行程序的目录不在PATH指定的目录中,执行时需要指定目录,这就是执行不在PATH中的可执行程序时为什么要加./或者绝对路径的原因。

PATH环境变量存放的是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录。

PATH缺省包含Linux系统命令所在目录(/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin),如果不包含这些目录,Linux的常用命令也无法执行(要输入绝对路径才能执行)。

LD_LIBRARY_PATH

C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要。

LD_LIBRARY_PATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同。

CLASSPATH

JAVA语言库文件搜索的目录,它也不是Linux缺省的环境变量,但对JAVA程序员来说非常重要。

CLASSPATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同。

环境变量文件

/etc/profile 文件

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

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

如果你有对 /etc/profile 有修改的话必须得手动执行 source /etc/profile,修改才会生效,此修改对每个用户都生效。

  • 生效时间:新开终端生效,或者手动source /etc/profile生效
  • 生效期限:永久有效
  • 生效范围:对所有用户有效

/etc/bashrc 文件

为每一个运行终端的用户执行此文件。当终端被打开时,该文件被读取。如果你想对所有的使用终端的用户修改某个配置并在以后打开的终端都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个终端即可生效。

Ubuntu没有此文件,与之对应的是 /etc/bash.bashrc

  • 生效时间:新开终端生效,或者手动source /etc/bashrc生效
  • 生效期限:永久有效
  • 生效范围:对所有用户有效

~/.bash_profile 或 ~/.bash_login 或 ~/.profile

每个用户都可使用该文件输入专用于自己使用的 shell 信息,当用户登录时,该文件仅仅执行一次!默认情况下,它设置一些环境变量,执行用户的 ~/ .bashrc 文件。此文件类似于 /etc/profile,也是需要手动执行 source ~/.profile,修改才会生效,/etc/profile 对所有用户生效,~/.profile 只对当前用户生效。

~/.bash_profile、 ~/.bash_login 和 ~/.profile 文件往往只存在一个,这与Linux的发行版本有关。centos中为 ~/.bash_profile,ubuntu则为 ~/.profile

执行的顺序为:~/.bash_profile > ~/.bash_login > ~/.profile

~/.bashrc 文件

当用户登录时以及每次打开新的Shell时该文件都将被读取。(每个用户都有一个 ~/.bashrc 文件,在用户目录下) 此文件类似于 /etc/bashrc,不需要重启就可以生效,重新打开一个 bash 即可生效,/etc/bashrc 对所有用户新打开的 bash 都生效,但 ~/.bashrc 只对当前用户新打开的 bash 生效。不推荐在里面配置用户专用的环境变量,因为每开一个Shell,该文件都会被读取一次,效率肯定受影响。

  • 生效时间:使用相同的用户打开新的终端时生效,或者手动source ~/.bashrc生效
  • 生效期限:永久有效
  • 生效范围:仅对当前用户有效
  • 如果有后续的环境变量加载文件覆盖了PATH定义,则可能不生效

~/.bash_logout 文件

当每次退出系统(退出 bash shell)时,执行该文件。可把一些清理工作的命令放到这文件中。

执行顺序

1
2
3
4
5
1. /etc/profile
2. /etc/bashrc
3. /etc/profile.d
4. ~/.bash_profile | ~/.bash_login | ~/.profile
5. ~/.bashrc

蚂蚁再小也是肉🥩!


Linux环境变量
http://heibanbai.com.cn/posts/63e3ea5/
作者
黑伴白
发布于
2024年5月10日
许可协议

“您的支持,我的动力!觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”

微信二维码

微信支付

支付宝二维码

支付宝支付