【hello Linux】环境变量

news/2024/9/22 22:28:39/

目录

1. 环境变量的概念

2. 常见的环境变量

3. 查看环境变量

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

5. 环境变量的组织方式

6. 通过代码获取环境变量

7. 通过系统调用获取环境变量


 Linux🌷

在开始今天的内容之前,先来看一幅图片吧! 

不知道你们是否和我一样都有这样的疑问?

为什么 ls 和我们编写的 hello.c 生成的可执行二进制文件都是可执行的,为什么 ls 在执行时直接使

用 ls 就行,运行 hello 时还要在前面指定当前路径呢?

其实这便是环境变量在其中作祟!😉(小小形容下)

1. 环境变量的概念

环境变量(environment variables):一般是指在操作系统中用来指定操作系统运行环境的一些
参数;
如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库
在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进
行查找。
环境变量通常具有某些特殊用途,还有在系统当中通常具有全局特性;

2. 常见的环境变量

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

3. 查看环境变量

echo &NAME
//NAME:要查看的环境变量名称

上述为:查看系统的环境变量;

我们发现:系统的环境变量是以冒号为分隔符的;

其实在查找时是以冒号为分隔符依次查找的,如果没找到便继续查找下一个冒号分隔处的路径;

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

echo: 显示某个环境变量值或者本地变量的值;
env: 显示所有环境变量;
set: 显示本地变量和环境变量;
export: 设置一个新的环境变量,可以用于将本地变量导成环境变量;
unset: 清除环境变量和本地变量;

下面给出几个示例:

示例一:

经过上述,我们发现 hello 便可以直接运行;

注意:上述修改只在本次会话中有效; 

示例二:

 myval是定义的一个本地变量,通过上述语句,验证了echo、set、env等各个命令的功能和用法;

5. 环境变量的组织方式

其实环境变量也是操作系统在内存中开辟空间来对它进行存储的:

下述为存储的大致样式:

每个程序都会收到一张环境表,环境表是一个字符指针数组,每个指针指向一个以’\0’结尾的环境

字符串,由变量名+路径组成

6. 通过代码获取环境变量

示例一:

上述main()函数中,传了两个参数,可自动进行修改,存储大致如下:

我们看到指令有很多选项,用来完成同一个命令的不同子功能,选项底层使用的就是我们的命令行

参数!!

7. 通过系统调用获取环境变量

getenv("环境变量名")
//函数getenv返回一个字符串指针,指向这个环境变量的路径

最后一点: 

环境变量通常是具有全局属性的,可以被子进程继承下去。

坚持打卡!

😃


http://www.ppmy.cn/news/43052.html

相关文章

Stable Diffusion成为生产力工具(五):放大并修复老照片、马赛克照片、身份证件照

S:你安装stable diffusion就是为了看小姐姐么? I :当然不是,当然是为了公司的发展谋出路~~ 预先学习: 安装webui《Windows安装Stable Diffusion WebUI及问题解决记录》。运行使用时问题《Windows使用Stable Diffusion时…

计算机发展史-计算机基础知识总结(上)

随着计算机技术的不断发展,计算机已经成为人们日常生活中必不可少的一部分,而且它也对人类社会产生了巨大的影响。本文将从计算机的发展历史、计算机硬件和软件、操作系统、计算机网络、数据库等方面进行系统的介绍,为读者提供计算机基础知识…

springboot+thymeleaf实现发Html邮件自由

2019年,我刚接触测试架构和测试开发类的工作时,经常会有自动化发邮件的功能,大都是从各个平台自动化统计一些数据出来,每周定时发一封邮件给领导交差,回过头来再看看我发的邮件,不美观,不专业。…

LeetCode-152. 乘积最大子数组

目录思路动态规划题目来源 152. 乘积最大子数组 思路 这题跟LeetCode-53. 最大子数组和很像 最后把整个 dp 数组看一遍求最大值即可。因此状态转移方程可能是: dp[i] Math.max(dp[i-1]nums[i],nums[i]);说明:牢记状态的定义,一定以下标 i…

NDK RTMP直播客户端二

在之前完成的实战项目【FFmpeg音视频播放器】属于拉流范畴,接下来将完成推流工作,通过RTMP实现推流,即直播客户端。简单的说,就是将手机采集的音频数据和视频数据,推到服务器端。 接下来的RTMP直播客户端系列&#xff…

在 Flutter 多人视频通话中实现虚拟背景、美颜与空间音效

前言 在之前的「基于声网 Flutter SDK 实现多人视频通话」里,我们通过 Flutter 声网 SDK 完美实现了跨平台和多人视频通话的效果,那么本篇我们将在之前例子的基础上进阶介绍一些常用的特效功能,包括虚拟背景、色彩增强、空间音频、基础变声…

机器学习-作业2-贝叶斯网络

作业2 实现能处理连续属性的贝叶斯网络。 思路 怎么自动判断该属性是离散还是连续:计算该属性的不同值有多少个,超过10个就认为是连续,否则是离散的。离散的:统计该类、该属性、该值的各个数量,计算概率&#xff0c…

react-router原理

前端路由的原理 自己来监听URL的改变,改变url,渲染不同的组件(页面),但是页面不要进行强制刷新(a元素不行)。 hash模式,localhost:3000/#/abc 优势就是兼容性更好,在老版IE中都可以运行缺点是…