Linux进程概念—环境变量

news/2024/11/18 3:31:33/

Linux进程概念—环境变量

  • 1.孤儿进程
  • 2.环境变量
    • 2.1常见环境变量
    • 2.2查看环境变量方法
    • 2.3在环境变量中添加
    • 2.4和环境变量相关的命令
    • 2.5环境变量的组织方式
    • 2.6命令行参数

🌟🌟hello,各位读者大大们你们好呀🌟🌟
🚀🚀系列专栏:【Linux的学习】
📝📝本篇内容:孤儿进程;环境变量
⬆⬆⬆⬆上一篇:string类(下)
💖💖作者简介:轩情吖,请多多指教(> •̀֊•́ ) ̖́-

1.孤儿进程

父进程退出,子进程会被OS自动领养(通过1号进程成为新的父进程),如果不领养会在后续子进程退出时,无人回收了
在这里插入图片描述

写一份代码如上
在这里插入图片描述
在makefile文件当中可以进行简写,$ @表示的是目标文件,也就是practice,$^表示的是依赖文件,也就是practice.c
在这里插入图片描述
在杀掉父进程后,子进程的父进程变成了1号进程

2.环境变量

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数
环境变量在系统当中通常具有全局特性

2.1常见环境变量

PATH:指定命令的搜索路径
HOME:指定用户的主工作目录
SHELL:当前shell,它的值通常为/bin/bash

2.2查看环境变量方法

echo $NAME//NAME:你的环境变量名称
在这里插入图片描述

2.3在环境变量中添加

export PATH=$PATH:xxx
在这里插入图片描述
可以看见,把当前路径添加到PATH中后,可以直接运行practice程序,本质上添加到环境变量中后,当使用practice时,系统会去PATH中的路径下找对应的practice,并且因为有全局特性1,不在需要./

2.4和环境变量相关的命令

①echo:显示某个环境变量值
②export:设置一个新的环境变量
在这里插入图片描述
val还有其他的一些特性,具体的后面再讲
③env:显示所有的环境变量
在这里插入图片描述
④unset:清除环境变量
在这里插入图片描述
⑤set:显示本地定义的shell变量和环境变量
这个也有所涉及到后面的知识,后面再讲

2.5环境变量的组织方式

不知道大家有没有见过main函数的参数
int main(int argc,char* argv[],char* envp[])
每个程序都会收到一张环境变量表,环境变量表就是一个字符指针数组,每个指针指向一个以‘\0’结尾的环境字符串,其中envp就是一个字符指针数组,就是环境变量表
在这里插入图片描述
在这里插入图片描述
可以看到,把环境变量全部打印出来
还有一个方法是使用environ
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以说在使用时要用extern声明
在Linux中,把可执行程序,拷贝到系统默认路径下,让我们直接访问的方式相当于Linux下软件的安装。
在这里插入图片描述

也可以使用getenv系统调用来获取环境变量
在这里插入图片描述
环境变量本质就是一个内存级的一张表,这张表由用户登录系统的时候,进行给特定用户形成属于自己的环境变量表
每个环境变量都有自己的特定的应用场景
每一个元素都是kv的(有自己的名字和内容)
环境变量对应的数据从系统的相关配置文件中读取进来的(.bash_profile .bashrc)
环境变量通常是具有全局属性的,可以被子进程继承下去的
如果没有export,命令行定义的就是本地变量,只在shell内部有效,不会被子进程继承,使用export的目的是为了把变量放进环境变量表中,但是不管本地变量还是环境变量都被shell记录了下来
在这里插入图片描述
在这里插入图片描述
可以看到在命令行定义的变量使用env查看时并没有显示,但是使用export声明后,就能查看到在环境变量表中

2.6命令行参数

在这里插入图片描述

在这里插入图片描述
argv本质上也是一个表,由bash制作这个表,实际上就是为了方便使用命令行参数
举一个栗子来更好地理解它:
在这里插入图片描述
在这里插入图片描述
其本质上命令行上输入的就是一串字符串,一个是可执行程序,后面的就是参数选项,平常我们使用的命令以及命令选项都是这样实现的。

🌸🌸环境变量的知识大概就讲到这里啦,博主后续会继续更新更多Linux的相关知识,干货满满,如果觉得博主写的还不错的话,希望各位小伙伴不要吝啬手中的三连哦!你们的支持是博主坚持创作的动力!💪💪


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

相关文章

从0到1构建springboot web应用镜像并使用容器部署

文章目录一、生成镜像的两种方法1.1、使用commit生成镜像1.1.1、拉取Centos基础镜像1.1.2、启动Centos容器并安装Go1.1.3、commit生成新镜像1.1.4、使用新镜像验证Golang环境1.2、使用Dockerfile生成镜像二、基于Dockerfile生成一个springboot镜像2.1、准备springboot应用jar包…

基于pytorch+Resnet101加GPT搭建AI玩王者荣耀

本源码模型主要用了SamLynnEvans Transformer 的源码的解码部分。以及pytorch自带的预训练模型"resnet101-5d3b4d8f.pth"本资源整理自网络,源地址:https://github.com/FengQuanLi/ResnetGPT注意运行本代码需要注意以下几点 注意!&a…

程序员创业大课-企业战略

一、什么是企业战略? 企业战略是指企业为达成其长期目标而制定的一系列计划和行动方案。它包括企业的使命、愿景、价值观、战略目标、战略定位和战略选择等内容。企业战略的制定需要考虑外部环境、内部资源和能力、竞争对手的行为以及未来趋势等因素,并基于这些因素制定相应的…

C++之模拟实现string

文章目录前言一、包含的相关头文件二、构造和析构1.构造函数2.拷贝构造1.传统写法2.现代写法3.赋值运算符重载1.传统写法2.现代写法4.析构函数三、iterator四、modify1.push_back(尾插一个字符)2.append(尾插一个字符串)3.运算符重载1.尾插字…

Html5版飞机大战游戏中(Boss战)制作

内容在“60行代码,制作飞机大战游戏”的基础上,继续追加入了Boss战的功能。 boss的血量默认设置为100了,可以二次开发调整……(^_^) 玩起来有一定难度哈。 试玩地址:点击试玩 实现功能 添加玩家飞机,并进行控制Boss能…

【Java面试八股文宝典之Redis篇】备战2023 查缺补漏 你越早准备 越早成功!!!——Day14

大家好,我是陶然同学,软件工程大三即将实习。认识我的朋友们知道,我是科班出身,学的还行,但是对面试掌握不够,所以我将用这100多天更新Java面试题🙃🙃。 不敢苟同,相信大…

WinForm | C# 界面弹出消息通知栏 (仿Win10系统通知栏)

ApeForms 弹出消息通知栏功能 文章目录ApeForms 弹出消息通知栏功能前言全局API通知栏起始方向通知排列方向通知栏之间的间隔距离无鼠标悬停时的不透明度消息通知窗体的默认大小示例代码文本消息提示栏文本消息提示栏(带选项)图文消息提示栏图文消息提示…

[vue-next-admin] vue3 + vite 打包 gzip 压缩、cdn 加速

一、gzip 压缩 1. 安装 使用 vite-plugin-compression 插件 npm install vite-plugin-compression --save-dev2. 使用 vite.config.ts 中 import viteCompression from vite-plugin-compression;plugins: [viteCompression() ]二、cdn 加速 网络卡,打包后第一…