百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

Linux 环境变量(linux环境变量怎么配置)

lipiwang 2025-06-18 22:17 1 浏览 0 评论

Linux 环境变量是 Shell 和程序运行时的重要配置信息。它们存储了关于系统环境、用户配置、路径、语言等各种数据,影响着命令的执行、程序的行为以及用户界面的显示。理解和掌握环境变量是 Linux 使用和系统管理的关键。

1. 什么是环境变量?

环境变量是键值对的形式,存储在 Shell 或进程的环境中。当一个程序启动时,它会继承其父进程的环境变量。这些变量可以指导程序的行为,例如在哪里查找可执行文件、使用哪种语言显示消息、当前用户的主目录在哪里等等。

形式: NAME=VALUE (例如:PATH=
/usr/local/bin:/usr/bin:/bin)

2. 环境变量的类型

在 Linux 中,环境变量通常可以分为以下几类:

* 全局环境变量 (Global Environment Variables): 对所有用户、所有 Shell 进程都有效。它们通常在系统级别的配置文件中设置,如 /etc/profile、/etc/bashrc 或 /etc/environment。

* 用户环境变量 (User Environment Variables): 只对当前用户有效。它们通常在用户主目录下的配置文件中设置,如 ~/.bashrc、~/.profile、~/.bash_profile。

* 局部变量 (Local Variables): 只在当前 Shell 进程中有效,并且不会传递给子进程。通过简单的赋值创建,不使用 export 命令。

* Shell 变量 (Shell Variables): 由 Shell 自身维护的变量,用于控制 Shell 的行为。有些是只读的,有些可以修改。

3. 常用环境变量

以下是一些 Linux 系统中常用的环境变量及其作用:

* PATH: 最重要的环境变量之一。 它定义了 Shell 查找可执行命令的目录列表。当你输入一个命令(如 ls、grep)时,Shell 会按照 PATH 中定义的顺序在这些目录中查找对应的可执行文件。目录之间用冒号 : 分隔。

* 示例: echo $PATH

* 作用: 避免每次执行命令都输入完整路径。

* HOME: 当前用户的主目录路径。

* 示例: echo $HOME (通常是 /home/username 或 /root 对于 root 用户)。

* USER / LOGNAME: 当前登录用户的用户名。

* 示例: echo $USER

* SHELL: 当前用户使用的 Shell 类型(如 /bin/bash、/bin/zsh)。

* 示例: echo $SHELL

* LANG / LC_ALL: 定义了系统使用的语言环境和字符集。LANG 是默认语言,LC_ALL 如果设置会覆盖所有 LC_ 开头的变量。

* 示例: echo $LANG (如 en_US.UTF-8, zh_CN.UTF-8)

* PWD: 当前工作目录。

* 示例: echo $PWD (与 pwd 命令输出相同)。

* OLDPWD: 上一个工作目录。

* 示例: echo $OLDPWD

* HOSTNAME: 主机名。

* 示例: echo $HOSTNAME

* HISTSIZE: 历史命令列表中保存的命令数量。

* HISTFILESIZE: 历史文件 (~/.bash_history) 中保存的命令数量。

* PS1: Shell 提示符的格式。可以自定义。

* 示例: PS1='\u@\h:\w\$ ' (显示 用户名@主机名:当前目录$ )

* MAIL / MAILCHECK: 邮件相关变量。

* TERM: 终端类型,决定了终端支持的特性。

* UID / EUID: 当前用户的真实用户 ID 和有效用户 ID。

* GID / EGID: 当前用户的真实组 ID 和有效组 ID。

4. 环境变量的操作

4.1. 查看环境变量

* printenv: 显示所有环境变量。

* env: 与 printenv 类似,显示当前 Shell 的环境变量。

* export: 不带参数时,显示所有已导出的环境变量。

* echo $VARIABLE_NAME: 查看特定环境变量的值。

echo $PATH

echo $HOME


4.2. 设置/创建环境变量

* 临时设置(当前 Shell 有效):

MY_VARIABLE="Hello World" # 创建一个局部变量

export MY_VARIABLE # 将局部变量导出为环境变量,使其对子进程可见


或者直接:

export MY_VARIABLE="Hello World" # 直接创建并导出环境变量


这种方式设置的变量只在当前 Shell 会话中有效,当会话关闭时变量就会消失。

* 持久化设置(用户级别):

为了让环境变量在每次登录时自动设置,你需要将 export 命令添加到用户主目录下的某个 Shell 配置文件中。

* ~/.bashrc: 每次打开新的 Bash Shell 时执行。适合设置 Shell 函数、别名和交互式 Shell 环境变量。

* ~/.profile: 在登录时执行一次(对于非交互式 Shell,或图形界面登录)。适合设置 PATH 或其他系统环境变量。如果 ~/.bash_profile 存在,它可能不会被执行。

* ~/.bash_profile: 仅在登录 Shell 时执行一次。通常会调用 ~/.bashrc。对于只希望在登录时加载的变量,放在这里。

* 注: 许多系统中的 ~/.bash_profile 或 ~/.profile 会源 (source) ~/.bashrc,所以你通常把大部分自定义放在 ~/.bashrc。

* 修改后生效: 修改配置文件后,需要重新加载它或重新登录。

source ~/.bashrc

# 或者

. ~/.bashrc


* 持久化设置(系统级别):

这些设置对所有用户都有效。需要管理员权限修改。

* /etc/profile: 全局登录 Shell 配置文件。适用于所有用户。

* /etc/bashrc: 全局交互式 Bash Shell 配置文件。适用于所有用户。

* /etc/environment: 专门用于设置环境变量,每行一个 NAME=VALUE。不会执行命令。

* /etc/profile.d/: 一个目录,包含许多脚本文件(以 .sh 结尾),这些脚本会在用户登录时被 /etc/profile 源执行。推荐将自定义的系统级环境变量放在这里,每个服务一个文件,便于管理。

* 修改后生效: 通常需要重启系统或重启相关服务才能完全生效。对于新登录的用户,重新登录即可。

4.3. 取消设置环境变量

* unset VARIABLE_NAME: 删除一个环境变量。

export MY_VAR="test"

echo $MY_VAR

unset MY_VAR

echo $MY_VAR # 输出为空


5. 环境变量的继承性

* 当一个进程启动另一个进程时,子进程会继承父进程的环境变量的副本。

* 这意味着子进程可以读取和使用父进程的环境变量。

* 子进程可以修改其自身的环境变量副本,但这些修改不会影响父进程的环境变量。

* 通过 export 命令导出的变量才会传递给子进程。局部变量(未导出的)不会被子进程继承。

6. 环境变量在脚本中的应用

环境变量在 Shell 脚本中扮演着非常重要的角色,它们可以:

* 配置脚本行为: 脚本可以读取 PATH 来找到外部命令,或者读取自定义的环境变量来获取配置信息。

* 传递参数: 虽然通常使用命令行参数 $1, $2 等传递,但环境变量在某些场景下也能起到类似作用。

* 影响子进程: 脚本中 export 的变量会传递给脚本中启动的任何子进程。

示例脚本:

#!/bin/bash


# 读取 PATH 环境变量,并查找 grep 命令的路径

echo "grep 命令的路径是: $(which grep)"


# 读取用户主目录

echo "你的主目录是: $HOME"


# 设置一个局部变量

local_var="这是局部变量"

echo "局部变量: $local_var"


# 尝试在子进程中访问局部变量 (会失败)

bash -c 'echo "在子进程中访问局部变量: $local_var"' # 输出为空


# 导出并设置一个环境变量

export MY_CUSTOM_VAR="这是一个自定义环境变量"

echo "自定义环境变量: $MY_CUSTOM_VAR"


# 在子进程中访问导出的环境变量 (会成功)

bash -c 'echo "在子进程中访问自定义环境变量: $MY_CUSTOM_VAR"'


# 在脚本内部修改 PATH (只对当前脚本及子进程有效)

PATH="/usr/local/custom_bin:$PATH"

echo "新的 PATH: $PATH"


总结

环境变量是 Linux 系统中实现程序配置和进程间通信的重要机制。理解它们的类型、常用变量、操作方法以及继承性,对于有效地管理 Linux 系统、编写 Shell 脚本以及排查问题都至关重要。正确地设置环境变量,可以使你的系统更高效、更安全、更易用。

相关推荐

linux实例之设置时区的方式有哪些

linux系统下的时间管理是一个复杂但精细的功能,而时区又是时间管理非常重要的一个辅助功能。时区解决了本地时间和UTC时间的差异,从而确保了linux系统下时间戳和时间的准确性和一致性。比如文件的时间...

Linux set命令用法(linux cp命令的用法)

Linux中的set命令用于设置或显示系统环境变量。1.设置环境变量:-setVAR=value:设置环境变量VAR的值为value。-exportVAR:将已设置的环境变量VAR导出,使其...

python环境怎么搭建?小白看完就会!简简单单

很多小伙伴安装了python不会搭建环境,看完这个你就会了Python可应用于多平台包括Linux和MacOSX。你可以通过终端窗口输入"python"命令来查看本地是否...

Linux环境下如何设置多个交叉编译工具链?

常见的Linux操作系统都可以通过包管理器安装交叉编译工具链,比如Ubuntu环境下使用如下命令安装gcc交叉编译器:sudoapt-getinstallgcc-arm-linux-gnueab...

JMeter环境变量配置技巧与注意事项

通过给JMeter配置环境变量,可以快捷的打开JMeter:打开终端。执行jmeter。配置环境变量的方法如下。Mac和Linux系统在~/.bashrc中加如下内容:export...

C/C++|头文件、源文件分开写的源起及作用

1C/C++编译模式通常,在一个C++程序中,只包含两类文件——.cpp文件和.h文件。其中,.cpp文件被称作C++源文件,里面放的都是C++的源代码;而.h文件则被称...

linux中内部变量,环境变量,用户变量的区别

unixshell的变量分类在Shell中有三种变量:内部变量,环境变量,用户变量。内部变量:系统提供,不用定义,不能修改环境变量:系统提供,不用定义,可以修改,可以利用export将用户变量转为环...

在Linux中输入一行命令后究竟发生了什么?

Linux,这个开源的操作系统巨人,以其强大的命令行界面而闻名。无论你是初学者还是经验丰富的系统管理员,理解在Linux终端输入一条命令并按下回车后发生的事情,都是掌握Linux核心的关键。从表面上看...

Nodejs安装、配置与快速入门(node. js安装)

Nodejs是现代JavaScript语言产生革命性变化的一个主要框架,它使得JavaScript从一门浏览器语言成为可以在服务器端运行、开发各种各样应用的通用语言。在不同的平台下,Nodejs的安装...

Ollama使用指南【超全版】(olaplex使用方法图解)

一、Ollama快速入门Ollama是一个用于在本地运行大型语言模型的工具,下面将介绍如何在不同操作系统上安装和使用Ollama。官网:https://ollama.comGithub:http...

linux移植(linux移植lvgl)

1uboot移植l移植linux之前需要先移植一个bootlader代码,主要用于启动linux内核,lLinux系统包括u-boot、内核、根文件系统(rootfs)l引导程序的主要作用将...

Linux日常小技巧参数优化(linux参数调优)

Linux系统参数优化可以让系统更加稳定、高效、安全,提高系统的性能和使用体验。下面列出一些常见的Linux系统参数优化示例,包括修改默认配置、网络等多方面。1.修改默认配置1.1修改默认编辑器默...

Linux系统编程—条件变量(linux 条件变量开销)

条件变量是用来等待线程而不是上锁的,条件变量通常和互斥锁一起使用。条件变量之所以要和互斥锁一起使用,主要是因为互斥锁的一个明显的特点就是它只有两种状态:锁定和非锁定,而条件变量可以通过允许线程阻塞和等...

面试题-Linux系统优化进阶学习(linux系统的优化)

一.基础必备优化:1.关闭SElinux2.FirewalldCenetOS7Iptables(C6)安全组(阿里云)3.网络管理服务||NetworkManager|network...

嵌入式Linux开发教程:Linux Shell

本章重点介绍Linux的常用操作和命令。在介绍命令之前,先对Linux的Shell进行了简单介绍,然后按照大多数用户的使用习惯,对各种操作和相关命令进行了分类介绍。对相关命令的介绍都力求通俗易懂,都给...

取消回复欢迎 发表评论: