菜鸟Linux(3):环境变量

news2024/11/28 20:55:38

 "Oh heiya New World!"


一、什么是环境变量?

        谈起环境变量,也许我们在敲代码的层面上并不关心。在链接的时候,我们从来没有告诉编译器,去哪里找动态库去链接;我们也从来没有告诉进程 执行该进程的用户是谁?以及在命令行解释器时,启动一个进程,实质是在命令行解释器内 进行程序替换……

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


二、常见的环境变量

(1)理解PATH

我们在使用命令行解释器时,通常直接使用ls 、 pwd 、top 等等”命令"时 为什么不需要带"./"? 但是我们自己写的程序却需要这样呢?

根本上不是说我们的程序 貌似更"低级",因为ls pwd top等命令也是可执行的文件,它们无非是在 用户登录时 已经就加载好了!并且能够找到该路径下的 可执行文件!

//指定命令的搜索路径
echo $PATH

但那些配置的文件在哪里呢?

1.“/etc/profile”文件,该文件配置的环境变量将应用于登录到系统的每一个用户;

2.“/etc/bashrc”,修改该文件配置的环境变量将会影响所有用户使用的bash shell;

3.“/etc/environment”,该文件包含与系统运行相关但与用户无关的环境变量;

4.“~/.profile”;5、“~/.bashrc”。

如何让自己的可执行程序 也成为系统命令那样跑?

①将自己的可执行文件 拷贝到 被填入进PATH里的路径下(不推荐);

 

②export导入该程序的路径(推荐);  

(2)其余环境变量 

①HOME 

HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录) 

②SHELL

SHELL : 当前Shell,它的值通常是/bin/bash 

③查看环境变量 

//查看
echo $环境变量名

(3)定义环境变量 

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

env: 显示所有环境变量

unset: 清除环境变量

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

我们在命令行定义的变量,是本地变量;

因此需要导入变量; 

进行取消设置;


三、进程内的环境变量

上述仅仅从命令行解释器这个层面上,解释了环境变量。但是 环境变量是贯穿整个程序始终的全局变量。

比如: 在一个受权限限制的文件,它是如何辨别谁可以对他进行什么合法操作 什么不合法?

          为什么不同的用户进行vim配置 会有对应不同的vim编辑器?

(1)main函数的三参数

int main(int argc,char *argv[],char *envp[])

1. 为什么main函数会有三个参数?这三个参数是什么意思?

2. main作为一个函数 是否应该被调用? 被谁调用呢?

3. main函数的返回值是返回给谁的呢?

C语言规定main函数是C程序的入口,程序中的其它函数直接或间接被main函数调用后才能被执行,如果没有被main调用,这个函数在程序中就是无用的。 

在linux下 main函数的传参 是传给”子进程”的! 

 argc:表示运行程序的时给main函数传递参数的数量;

 argv:字符串的数组,向一个字符串,末尾为NULL结尾;

 envp:也是一个字符串的数组,以NULL结尾;

多说无益,上来实操。

 所以,有时候我们就可以根据 传参的选项 执行不同 的代码逻辑;

(2)环境变量 

①getenv 

       #include <stdlib.h>
       char *getenv(const char *name);

②main参数 与 全局指针environ

 

命令行bash 为main创建子进程,子进程会继承父进程的环境变量。 这也是为什么 我们可以查看和 bash页面下 一样的环境变量。 

一般推荐使用getenv 直接拿到想要的环境变量。

③进程内添加环境变量;

       #include <stdlib.h>
       int putenv(char *string);


总结

①echo $+环境变量名 可以查看变量

②main的三个参数 

③getenv \envp[] \ char** envrion 都可以获取环境变量

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/26685.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

深度学习基础--神经网络(4)参数更新策略,梯度法

导数 导数&#xff1a;表示某个瞬间的变化量&#xff0c;公式定义&#xff1a; df(x)dxlimh→0f(xh)−f(x)h(4.4)\frac{df(x)}{dx} lim_{h \to 0}\frac{f(x h)-f(x)}{h} \tag{4.4} dxdf(x)​limh→0​hf(xh)−f(x)​(4.4) 求导的代码实现&#xff1a; import numpy as np i…

SSM框架-Spring(三)

目录 1 Spring对事务的支持 1.1 引入事务场景 1.2 spring对事务的支持 Spring实现事务的两种方式 Spring事务管理API 1.3 事务属性 1.3.1 事务传播行为 1.3.2 事务隔离级别 1.3.3 事务超时 1.3.4 只读事务 1.3.5 异常回滚事务 1.4 事务的全注解式开发 1.5 声明式事…

玩转SQL:咱们的目标是成为SQL方面的“扫地僧”

引言 (Structured Query Language)标准结构化查询语言简称SQL&#xff0c;编写SQL语句是每位后端开发日常职责中&#xff0c;接触最多的一项工作&#xff0c;SQL是关系型数据库诞生的产物&#xff0c;无论是什么数据库&#xff0c;MySQL、Oracle、SQL Server、DB2、PgSQL....&…

FPGA串口接收Demo

串口接收Demo 简单介绍 在发送数据时将并行数据转换成串行数据来传输&#xff0c;在接收数据时将接收到的串行数据转换成并行数据 空闲状态时&#xff0c;为高电平起始位为一个单位长度低电平&#xff0c;停止位为一个长度高电平 分析 帧格式 8位数据位1位停止位无校验位 …

配电站房监控系统方案

配电站为低压用户配送电能&#xff0c;设有中压进线(可有少量出线)、配电变压器和低压配电装置。计讯物联工业网关下配电站房监控系统方案&#xff0c;24小时对运行设备进行不间断数据采集上传服务器&#xff0c;云平台对接&#xff0c;远程实时在线监控设备运行状态 &#xff…

web前端-javascript-标识符(说明,命名规则、不以数字关键字保留字开头、驼峰命名,补充)

文章目录标识符1. 说明2. 命名规则3. 补充标识符 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><script type"text/javascript">//千万不要这么用/* var if 123;console.log(if); *//…

Linux、阿里云服务器用tomcat部署项目

文章目录一、安装JDK和Tomcat1.1 安装JDK2.2 安装Tomcat二、把项目打包成war包&#xff08;jar也可以&#xff0c;但是有区别&#xff09;三、把war包放进webapps里面四、修改tomcat配置五、修改防火墙和开放端口等设置六、在浏览器访问项目一、安装JDK和Tomcat 1.1 安装JDK …

如果你想跨行转做数据分析师,劝你慎重

随着数字化时代的浪潮&#xff0c;数据分析师成了炽手可热的香饽饽&#xff0c;疫情当下&#xff0c;各行各业的失业人员逐渐增多&#xff0c;所以人人都想转行当数据分析师。作为业内人员&#xff0c;说实话&#xff0c;真的不建议&#xff0c;数据分析师真的不是想象的那么简…

【Webpack】webpack的基础使用详细总结 上(建议收藏)

1- 前言&#xff08;前端工程化&#xff09; 实际的前端开发&#xff1a; 模块化&#xff08;js 的模块化、css 的模块化、其它资源的模块化组件化&#xff08;复用现有的 UI 结构、样式、行为&#xff09;规范化&#xff08;目录结构的划分、编码规范化、接口规范化、文档规范…

代码随想录算法训练营第六天|LeetCode 242. 有效的字母异位词 、349. 两个数组的交集 、 202. 快乐数、1. 两数之和

LeetCode 242. 有效的字母异位词 题目链接&#xff1a;242. 有效的字母异位词 方法一&#xff1a; 分析&#xff1a; 两个字符串里的每个字母的个数相等&#xff0c;那么我对每个字符串里的字符串都进行下排序&#xff0c;排出来后岂不是两个字符串的每个字母如果一一对应就…

高通平台开发系列讲解(AI篇)高通神经网络处理引擎工作流程详解

文章目录 一、Model to Runtime Workflow(模型运行流程)二、Basic SNPE Workflow(基本工作流程)2.1、Converting a Network Model(模型转换)2.2、Quantizing a Model(模型量化)沉淀、分享、成长,让自己和他人都能有所收获!😄 📢本篇章主要介绍高通平台神经网络处…

K_A07_002 基于 STM32等单片机驱动ULN2003模块按键控制步进电机正反转

目录 一、资源说明 二、基本参数 1.参数 2、引脚说明 三、驱动说明 步进电机驱动时序 反向输出 对应程序: 四、部分代码说明 1、接线说明 1.1、STC89C52RCULN2003模块 1.2、STM32F103C8T6ULN2003模块 五、基础知识学习与相关资料下载 六、视频效果展示与程序资料获取 七…

C#使用EPPlus操作Excel(读写)

之所以使用EPPlus操作Excel是因为微软自带的运行效率太低&#xff0c;数据多后会特别慢&#xff0c;不能满足现场要求。如果想速度快&#xff0c;而且只是读取Excel的配置还有另一个办法就是将Excel保存成xml文件&#xff0c;参考我的另一个文章&#xff1a;C# 读取XML格式的Ex…

概率统计·大数定律及中心极限定理【大数定律、中心极限定律】

这一章的学习更多的是为后面的知识作铺垫&#xff0c;所以内容比较少&#x1f358;&#x1f358;&#x1f358;&#xff08;当然也减轻一点复习的负担&#x1f917;&#x1f917;&#x1f917;&#xff09; 依概率收敛 需要概率P极限趋近于1 切比雪夫不等式的特殊情况 前提&…

数据库-sql执行深度剖析以及redo log和undo log(下)(二)

目录 buffer pool change Buffer Log Buffer redo log 随机IO/顺序IO redo log刷盘时机 redo logt特点 redo log结构 Adaptive Hash Index 磁盘区域 undo log 总结更新流程 BInlog 基于上一章sql执行原理基础上&#xff0c;我们来深入探讨sql更新的整个原理。 bu…

力扣(LeetCode)33. 搜索旋转排序数组(C++)

二分查找 二分的本质&#xff0c;是对某种性质的划分&#xff0c;一半满足&#xff0c;另一半不满足&#xff0c;即可划分。 比较 nums[mid]nums[mid]nums[mid] 和 nums[0]nums[0]nums[0] &#xff0c;可以知道 midmidmid 左右哪一端有序。 如果左端有序&#xff0c;我们找往…

66.基于Django学习会话技术

1. 背景介绍 ​ HTTP协议有一个特性就是无状态的&#xff0c;是指协议对于交互性场景没有记忆能力。 ​ 随着动态交互的web应用的出现&#xff0c;HTTP的无状态特性严重阻碍了动态交互应用程序的发展&#xff0c;例如一些购物网站在进行购物时候都会进行了页面跳转/刷新&…

西门子 S7-1200 与 BL200PN 通信示例

准备 IO 模块&#xff1a;耦合器 BL200PN、数字量输出模块 M2082、数字量输入 M1081、 模拟量输入模块 M3401、模拟量输出 M4043。 2、BL200PN、S7-1200、PC 要同一局域网。将 BL200PN 和 S7-1200 上电&#xff0c;打开西 门子 TIA V13 软件&#xff0c;新建项目“BL200PN”…

SpringBoot开发的实用小工具集,YYDS

真正的大师,永远都怀着一颗学徒的心&#xff01; 一、项目简介 springboot开发的实用小工具集 环境搭建说明 开发环境为jdk1.8&#xff0c;基于maven构建&#xff1b; 使用Idea或者eclipase开发&#xff1b; 基于SpringBoot搭建&#xff0c;大大简化了配置操作&#xff1b;…

DBCO-mPEG2000,二苯并环辛炔-mPEG MW 2000具有亲和力和稳定性

DBCO-mPEG2000白色固体&#xff0c; DBCO试剂在水性缓冲液中具有快速的亲和力和稳定性&#xff0c;可用于以高特异性和反应性标记叠氮化物修饰的生物分子。带有 PEG 臂的试剂会增加化合物的亲水性。西安凯新生物科技有限公司​DBCO 试剂已广泛应用于生物偶联、标记和化学生物学…