Linux - 环境变量
创始人
2025-05-28 22:24:58
0

1.基本概念

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数

如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但 是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。

环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性

2.常见环境变量

PATH : 指定命令的搜索路径 HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录) SHELL : 当前Shell,它的值通常是/bin/bash。

3.查看环境变量方法

输入env可以查看系统环境变量

输入以下指令可以查看相关环境变量的路径:

echo $PATH  //PATH为环境变量名称

4.测试PATH

1. 创建test.c文件
#include 
int main()
{printf("hello Linux!\n");return 0;
}
2. 对比./hello执行和之间hello执行

我们自己写的程序需要带上./才可以运行,而系统自带的ls不需要

3. 为什么有些指令可以直接执行,不需要带路径,而我们的二进制程序需要带路径才能执行?

因为我们写的程序没有添加到环境变量里,所以必须带路径执行,有些指令在系统环境变量里,就可以直接运行,比如ls

4. 将我们的程序所在路径加入环境变量PATH当中, export PATH=$PATH:test程序所在路径

发现可以直接a.out运行程序了,但是出现了其他问题,我们再次运行ls观察

ls出问题了,发现系统路径没用了,说明上面的添加环境变量是错误的,这时候我们重启下xshell可以恢复系统环境变量路径。

正确的方式:

在Linux中,把可执行程序,拷贝到系统默认路径下,让我们可以直接访问的方式 --相当于Linxu的安装

如何取消呢?

5.测试HOME

用root和普通用户,分别执行 echo $HOME ,对比差异

不同的用户,环境变量不同

6.和环境变量相关的命令

1. echo: 显示某个环境变量值 2. export: 设置一个新的环境变量 3. env: 显示所有环境变量 4. unset: 清除环境变量 5. set: 显示本地定义的shell变量和环境变量

7.获取环境变量

envp环境变量表

envp是一个表结构

打印出环境变量表的内容

environ(C语言方式)、

libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时 要用extern声明

结果和envp环境变量表一样

getenv(函数获取-主流)

下面是获取user的环境变量

下面模拟写一个pwd

将我们写的mypwd添加到系统环境变量里

添加用户访问权限

putenv()

以后补充

系统家目录下的环境变量配置文件

.bash_profile和.bashrc

其中profile调用bashrc

8.shell环境变量

将shell添加到环境变量表

环境变量是可以被相关的子进程继承下去的 -- 环境变量具有全局属性

未有export定义,其能echo打印,其被bash记录了下来,但是没有被添加到环境变量表内而已,这种变量称做本地变量,本地变量只在shell内部有效,不能被子进程继承;用export导入一下即可

9.命令行参数

我们打印一下argc,我们通过运行结果可以得出argc即命令行参数个数

相关内容

热门资讯

linux入门---制作进度条 了解缓冲区 我们首先来看看下面的操作: 我们首先创建了一个文件并在这个文件里面添加了...
C++ 机房预约系统(六):学... 8、 学生模块 8.1 学生子菜单、登录和注销 实现步骤: 在Student.cpp的...
JAVA多线程知识整理 Java多线程基础 线程的创建和启动 继承Thread类来创建并启动 自定义Thread类的子类&#...
【洛谷 P1090】[NOIP... [NOIP2004 提高组] 合并果子 / [USACO06NOV] Fence Repair G ...
国民技术LPUART介绍 低功耗通用异步接收器(LPUART) 简介 低功耗通用异步收发器...
城乡供水一体化平台-助力乡村振... 城乡供水一体化管理系统建设方案 城乡供水一体化管理系统是运用云计算、大数据等信息化手段࿰...
程序的循环结构和random库...   第三个参数就是步长     引入文件时记得指明字符格式,否则读入不了 ...
中国版ChatGPT在哪些方面... 目录 一、中国巨大的市场需求 二、中国企业加速创新 三、中国的人工智能发展 四、企业愿景的推进 五、...
报名开启 | 共赴一场 Flu... 2023 年 1 月 25 日,Flutter Forward 大会在肯尼亚首都内罗毕...
汇编00-MASM 和 Vis... Qt源码解析 索引 汇编逆向--- MASM 和 Visual Studio入门 前提知识ÿ...
【简陋Web应用3】实现人脸比... 文章目录🍉 前情提要🌷 效果演示🥝 实现过程1. u...
前缀和与对数器与二分法 1. 前缀和 假设有一个数组,我们想大量频繁的去访问L到R这个区间的和,...
windows安装JDK步骤 一、 下载JDK安装包 下载地址:https://www.oracle.com/jav...
分治法实现合并排序(归并排序)... 🎊【数据结构与算法】专题正在持续更新中,各种数据结构的创建原理与运用✨...
在linux上安装配置node... 目录前言1,关于nodejs2,配置环境变量3,总结 前言...
Linux学习之端口、网络协议... 端口:设备与外界通讯交流的出口 网络协议:   网络协议是指计算机通信网...
Linux内核进程管理并发同步... 并发同步并发 是指在某一时间段内能够处理多个任务的能力,而 并行 是指同一时间能够处理...
opencv学习-HOG LO... 目录1. HOG(Histogram of Oriented Gradients,方向梯度直方图)1...
EEG微状态的功能意义 导读大脑的瞬时全局功能状态反映在其电场结构上。聚类分析方法一致地提取了四种头表面脑电场结构ÿ...
【Unity 手写PBR】Bu... 写在前面 前期积累: GAMES101作业7提高-实现微表面模型你需要了解的知识 【技...