Linux环境变量,知识点汇总
一、什么是环境变量?
环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数。
环境变量本质就是一张表,保存在内存当中。
该表在用户登录系统的时候,给用户生成的特定的环境变量表。
环境变量的主要用途:
- 身份认证
- 动态库查找
- 保存工作路径(pwd)
- 特定路径查找
- 保存特定变量值
二、环境变量分类
按生命周期分:
- 永久的:
在环境变量脚本文件中配置,用户每次登录时会自动执行这些脚本,相当于永久生效。 - 临时的:
用户利用export命令,在当前终端下声明环境变量,关闭Shell终端失效。
按作用域分:
- 系统环境变量:
公共的,对全部的用户都生效。 - 用户环境变量:
用户私有的、自定义的个性化设置,只对该用户生效。
三、环境变量相关操作命令
1)echo
查看指定环境变量的值

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

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

也可以显示当前系统定义的所有环境变量。

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

5) unset命令
unset: 取消本地变量和环境变量

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

四、常见的环境变量
HOME:指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)。
PWD:显示当前目录。
SHELL:当前用户用的是哪种Shell。
HISTSIZE:保存历史命令记录的条数。
HOSTNAME:主机的名称,应用程序如果要用到主机名的话,通常是从这个环境变量中取得。
LOGNAME:当前用户的登录名。
LANG/LANGUGE:和语言相关的环境变量,使用多种语言的用户可以修改此环境变量。
1)PATH
- 功能和作用
PATH表示可执行程序的搜索目录,可执行程序包括Linux系统命令和用户的应用程序。
我们都知道之所以要加上 ./ ,是因为在程序运行时,需要说明该可执行程序所处的路径,执行一个命令的前提是先找到它。
如果我们愿意,也可以使用绝对路径来说明。
接下来我们思考一下为什么同为可执行程序的 ls 、 pwd 等等诸多指令在使用时不需要加 ./ 来说明其所处路径呢?
这是因为在系统中存在一个环境变量帮助我们在特定路径下搜索这些默认指令,这个环境变量叫做 PATH 。
如果可执行程序的目录不在PATH指定的目录中,执行时需要指定目录,这就是执行不在PATH中的可执行程序时为什么要加./或者绝对路径的原因。
- 书写格式
PATH环境变量存放的是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录。
export PATH=目录1:目录2:目录3:......目录n:.
PATH缺省包含Linux系统命令所在目录(/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin),如果不包含这些目录,Linux的常用命令也无法执行(要输入绝对路径才能执行)。
- 添加格式
export PATH=$PATH:$HOME/bin 或 export PATH=$HOME/bin:$PATH
2)LD_LIBRARY_PATH
功能和作用
C/C++语言动态链接库文件搜索的目录,它不是Linux缺省的环境变量,但对C/C++程序员来说非常重要。
LD_LIBRARY_PATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同。
书写格式
export LD_LIBRARY_PATH=目录1:目录2:目录3:......目录n:.
3)C_INCLUDE_PATH、CPLUS_INCLUDE_PATH
功能和作用
C_INCLUDE_PATH 指明C头文件的搜索路径,CPLUS_INCLUDE_PATH指明C++头文件的搜索路径。
添加格式
推荐
一般情况下Linux是不会设置这些环境变量的。
所以在对某一个环境变量第一次设置时,应该直接将其赋值为所需的目录,在之后的设置中再使用递归式的赋值;或者直接一次性将所有目录用:分隔开,一起赋值;或者索性不使用这些环境变量,而是在编译时使用-I参数来添加包含目录。
4)CLASSPATH
JAVA语言库文件搜索的目录,它也不是Linux缺省的环境变量,但对JAVA程序员来说非常重要。
CLASSPATH环境变量存放的也是目录列表,目录之间用冒号:分隔,最后的圆点.表示当前目录,与PATH的格式相同。
五、环境变量文件
本小姐介绍Linux下几个与环境变量配置相关的配置文件。
1. /etc/profile 文件
此文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行。
并从 /etc/profile.d 目录的配置文件中收集 shell 的设置。
如果你有对 /etc/profile 有修改的话必须得手动执行 source /etc/profile,修改才会生效,此修改对每个用户都生效。

2. /etc/profile.d 目录(推荐)
/etc/profile 在每次启动时会执行 /etc/profile.d 下全部的脚本文件。

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

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

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

7. 执行顺序
1. /etc/profile
2. /etc/bashrc
3. /etc/profile.d
4. ~/.bash_profile | ~/.bash_login | ~/.profile
5. ~/.bashrc
六、获取环境变量
1. 全局变量environ
environ 变量是一个char** 类型,存储着系统的环境变量

实例:

执行结果:
2. 命令行参数
也可以通过命令行参数传递环境变量
实例:

执行结果:
3. getenv
要想直接获取某个环境变量,也可以调用函数去获取,可以使用库函数getenv()获取环境变量。

举例:通过getenv获取环境变量PWD, 实现自己的PWD指令:
#include<stdio.h>
#include<stdlib.h>
int main()
{
char*pwd=getenv("PWD");
if(pwd==NULL)
perror("getenv");
else
printf("%s\n", pwd);
return 0;
}

Linux环境变量,知识点汇总的更多相关文章
- 三种配置linux环境变量的方法(以java为例)
1.先确认是否为openjdk:参考 2. 修改/etc/profile文件 如果你的计算机仅仅作为开发使用时推荐使用这种方法,因为所有用户的shell都有权使用这些环境变量,可能会给系统带来安全性 ...
- linux环境变量LD_LIBRARY_PATH
LIBRARY_PATH和LD_LIBRARY_PATH是Linux下的两个环境变量,二者的含义和作用分别如下: LIBRARY_PATH环境变量用于在程序编译期间查找动态链接库时指定查找共享库的路径 ...
- Linux 环境变量和source命令 (转)
可能是班门弄斧了,仅share给尚不知道的童鞋. 1. 问题的来源: 为什么我们编译Android代码时,需要输入: source ./build/envsetup.sh 或者 . . ...
- Ubuntu Linux 环境变量
2011年09月17日 Ubuntu 下设置adb环境变量 分类: 同Windows一样,Ubuntu Linux系统包含两类环境变量:系统环境变量和用户环境变量.系统环境变量对所有系统用户都有效,用 ...
- 设置Linux环境变量的方法与区别(Ubuntu)
设置 Linux 环境变量可以通过 export 实现,也可以通过修改几个文件来实现,有必要弄清楚这两种方法以及这几个文件的区别. 通过文件设置 Linux 环境变量 首先是设置全局环境变量, ...
- Linux环境变量配置全攻略
Linux环境变量配置 在自定义安装软件的时候,经常需要配置环境变量,下面列举出各种对环境变量的配置方法. 下面所有例子的环境说明如下: 系统:Ubuntu 14.0 用户名:uusama 需要配置M ...
- 设置Linux环境变量的方法和区别_Ubuntu
设置 Linux 环境变量可以通过 export 实现,也可以通过修改几个文件来实现,有必要弄清楚这两种方法以及这几个文件的区别. 通过文件设置 Linux 环境变量 首先是设置全局环境变量,对所有用 ...
- Linux 环境变量_006
***Linux 环境变量指系统运行程序或命令的能快速找到其位置等其它功能,不用输入复杂命令.以$PATH环境变量为例子, $PATH决定了shell指定寻找命令或程序的路径,比较执行ls命令,如果没 ...
- Linux学习笔记之Linux环境变量总结
0x00 概述 Linux是一个多用户多任务的操作系统,可以在Linux中为不同的用户设置不同的运行环境,具体做法是设置不同用户的环境变量. 0x01 Linux环境变量分类 按照生命周期来分,Lin ...
- 转:Linux环境变量设置方法总结 PATH、LD_LIBRARY_PATH
转: https://www.linuxidc.com/Linux/2017-03/142338.htm 文章写比较全 转载记录 Linux环境变量设置方法总结 PATH.LD_LIBRARY_P ...
随机推荐
- HCIA基本命令
ACLDHCPNATSTP-RSTP-MSTPVLANVLAN间路由VRRP链路聚合路由
- PyTorch程序练习(二):循环神经网络的PyTorch实现
一.RNN实现 结构原理 代码实现 import torch import torch.nn as nn class RNN(nn.Module): def __init__(self, input_ ...
- Unity中正面视图的相机最大距离定位
问题背景: Unity中在场景中有这样的需求,就是俯视整个场景或者平视整个场景.这种情况下场景中物体长宽比不一定和相机视口长宽比一致,要保证所有的物体都在视口内,并且距离不能太远,,所以处理起来需要点 ...
- 从Java开发者到.NET Core初级工程师学习路线:C#语言基础
1. C#语言基础 1.1 C#语法概览 欢迎来到C#的世界!对于刚从Java转过来的开发者来说,你会发现C#和Java有很多相似之处,但C#也有其独特的魅力和强大之处.让我们一起来探索C#的基本语法 ...
- BootStrap Table 添加序列号
js $('#table').bootstrapTable({ striped: true,//隔行换色 columns: [ { field: '', title: '序号', sortable: ...
- 面向对象VS面向过程
什么是面向对象呢? 对于接触或者熟悉一些编程知识的同学来讲,"面向对象"这个词儿一点儿也不陌生.经常听说XX语言是完全面向对象的编程语言,比如C#.Java这些便是完全面向对象的编 ...
- 图扑低代码数字孪生 Web SCADA 智慧钢厂
2024 年 4 月,中国钢铁工业协会发布了<钢铁行业数字化转型评估报告(2023年)>(以下简称<报告>).<报告>指出,绝大部分钢铁企业建立了数字化转型相关管理 ...
- oeasy教您玩转vim - 42 - # 剪切进入
剪切进入 回忆上节课内容 上次我们了解到了各种寄存器 :reg 无名寄存器"" 数字寄存器"0-"9 行内删除专用寄存器"- 指定寄存器" ...
- 玄机-第二章日志分析-apache日志分析
前言 出息了,这回0元玩玄机了,因为只是日志分析,赶紧导出来就关掉(五分钟内不扣金币) 日志分析只要会点正则然后配合Linux的命令很快就完成这题目了,非应急响应. 简介 账号密码 root apac ...
- 玄机-第二章日志分析-mysql应急响应
目录 前言 简介 应急开始 准备工作 日志分析 步骤 1 步骤 2 步骤 3 步骤 4 总结 补充mysql中的/var/log/mysql/erro.log 记录上传文件信息的原因 前言 这里应急需 ...