环境变量(全)

概念

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

三个常见环境变量

PATH : 指定命令的搜索路径
HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录)

PWD:环境变量存储当前工作目录的路径

PATH

众所周知,命令的本质就是一个个可执行程序

那么都是可执行程序,为什么我们自己的可执行程序运行时需要加“./”呢?

因为运行可执行程序时系统会自动在PATH环境变量里面进行路径搜索

自己的可执行程序:

系统的命令:

如果我们想要自己的可执行程序执行起来也不需要“./”改怎么做?

很简单,只要让环境变量里有我们可执行程序的路径或者把我们的可执行程序放在PATH原有的路径下即可

查看PATH的默认路径:

把我们的命令的路径追加到PATH环境变量中并运行:

路径恢复(直接将原有路径赋值给PATH):

当然,如果直接赋值一个空串,大部分命令就是用不了了

不过不用担心,重启xshell就行

但是有几个命令却依然可以使用

例:echo,export

Linux的命令分类:
1.常规命令,shell fork让子进程成执行的
2.内建命令,shell命令行的一个函数,当然可以直接读取shell内部定义的本地变量喽!

默认更改环境变量,仅限于本次登录,重新登录,环境变量自动恢复(像网吧的机子)

如果我们把对应的可执行程序拷贝到PATH包含的路径下也可以实现---这个行为也可以称为---程序安装(简易版)相对的把对应可执行程序从PATH的路径下删除---这个行为可以称为---程序卸载

which寻找路径也是通过PATH去寻找的

HOME

会根据用户名来初始化家目录:

此时我是一个普通用户:

此时我是root用户:

cd $HOME直接返回家目录

PWD

环境变量存储当前工作目录的路径

pwd命令就是读取PWD的值然后打印出来

本地/环境变量

本地变量

命令行直接定义 左侧名称=右侧内容

本地变量只在bash进程内部有效,不会被子进程继承下去


环境变量

通过继承父进程bash的环境变量

具有全局性通过让所有的子进程继承的方式,实现自身的全局性!

系统环境变量通常具有全局属性,会被所有的子进程继承

查看/获取环境变量

查看
1.env

2.set

set查看包含环境变量的其他本地变量,env只能查看环境变量

获取
1.getenv

2.main传参

main函数的三个参数

3.environ

环境变量的组织方式

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

设置环境变量

我们直接更改的是bash进程内部的环境变量信息!
每一次重新登陆,都会给我们形成新的bas解释器并且新的bash解释器自动从 读取形成自己的环境变量表信息

父进程的环境变量信息又从哪里来??
环境变量信息是以脚本配置文件的形式存在的!

每一次登陆的时候,你的bash进程都会读取vim .bash_profile
配置文件中的内容,为我们bash进程形成一张环境变量表信息!

shell的本地变量

export导出环境变量(只导出在父进程bash的上下文中,只导出在内存中,并不在配置中,重启shell就会消失)

unset取消环境变量

在配置文件中配置环境变量并导出(重启shell并不会消失)

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

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

相关文章

韩顺平0基础学Java——第10天

p202-233 类与对象(第七章) 成员方法 person类中的speak方法: 1.public表示方法是公开的 2.void表示方法没有返回值 3.speak()中,speak表示方法名,括号是形参列表。 4.大括号为方法体&am…

Oracle 流stream数据的复制

Oracle 流stream数据的复制 --实验的目的是捕获scott.emp1表的变化,将变化应用到远程数据库scott.emp1表中。 --设置初始化参数 AQ_TM_PROCESSES1 COMPATIBLE9.2.0 LOG_PARALLELISM1 GLOBAL_NAMEStrue JOB_QUEUE_PROCESSES2 --查看数据库的名称,我的为o…

Unity图形图表XChart插件使用

最近做了一款数字孪生项目,其中涉及到了图形图表的应用,网上找了一下,找到了XChart插件,使用起来蛮方便的,不过还有待继续研究,很多细节性的知识点需要进行学习探索。以下是项目中的应用。 官方应用: ![](https://img-blog.csdnimg.cn/direct/ab9de8e84e7b4be4a50ea…

【UnityRPG游戏制作】Unity_RPG项目_PureMVC框架应用

👨‍💻个人主页:元宇宙-秩沅 👨‍💻 hallo 欢迎 点赞👍 收藏⭐ 留言📝 加关注✅! 👨‍💻 本文由 秩沅 原创 👨‍💻 收录于专栏:就业…

Google与哈佛大学的科学家团队共同创造了一张人脑中一个极小部分的精细地图

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

《为什么伟大不能被计划》对创意、创新和创造的自由探索 - 三余书屋 3ysw.net

为什么伟大不能被计划:对创意、创新和创造的自由探索 大家好,今天我们要讲述的书是由肯尼斯斯坦利和乔尔雷曼撰写的《为什么伟大不能被计划》,副标题是“对创意、创新和创造的自由探索”。光听这两位作者的名字,斯坦利和雷曼&…

鸿蒙开发接口Ability框架:【(AbilityContext)】

AbilityContext AbilityContext是Ability的上下文环境,继承自Context。 AbilityContext模块提供允许访问特定于ability的资源的能力,包括对Ability的启动、停止的设置、获取caller通信接口、拉起弹窗请求用户授权等。 说明: 本模块首批接口…

【机器学习300问】86、简述超参数优化的步骤?如何寻找最优的超参数组合?

本文想讲述清楚怎么样才能选出最优的超参数组合。关于什么是超参数?什么是超参数组合?本文不赘述,在之前我写的文章中有详细介绍哦! 【机器学习300问】22、什么是超参数优化?常见超参数优化方法有哪些?htt…

(Java)心得:LeetCode——19.删除链表的倒数第 N 个节点

一、原题 给你一个链表,删除链表的倒数第 n 个结点,并且返回链表的头结点。 示例 1: 输入:head [1,2,3,4,5], n 2 输出:[1,2,3,5]示例 2: 输入:head [1], n 1 输出:[]示例 3&…

Golang — map的使用心得和底层原理

map作为一种基础的数据结构,在算法和项目中有着非常广泛的应用,以下是自己总结的map使用心得、实现原理、扩容机制和增删改查过程。 1.使用心得: 1.1 当map为nil和map为空时,增删改查操作时会出现的不同情况 我们可以发现&#…

什么是数据平台——企业构建Data+AI的基础数据底座需要的决策参考

什么是数据平台 标准的解释是这样的 Wikipedia A data platform usually refers to a software platform used for collecting and managing data, and acting as a data delivery point for application and reporting software. 数据平台是指将各类数据进行整合、存储、处…

鸿蒙开发接口Ability框架:【 (Context模块)】

Context模块 Context模块提供了ability或application的上下文的能力,包括允许访问特定于应用程序的资源、请求和验证权限等。 说明: 本模块首批接口从API version 6开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 本模块…

Java代理Ⅱ

目录 静态代理的内存结构图 测试demo 内存图 关于为什么不能直接修改原方法,而是要用代理 参考文章 关于代理我之前写过一篇博客,基本已经讲的差不多了,有兴趣的读者可以去看看 Java代理 最近有了新的感悟,所以记录一下 静…

如何快速展示专业:掌握类的基本概念-类/方法/关键字/变量/数据类型/注释

在李笑来的《财富自由之路》中提到一种初学者快速入门的学习方法:快速掌握最小必要知识。 关于Java的类,最少必要知识就是本文提到的基本概念,掌握了这些基本概念,就对类有了基本的了解,为后续的深入学习和沟通奠定了基…

7.STL_string1.0(详细)

目录 1. 什么是STL 2. STL的版本 3. STL的六大组件 1. 为什么学习string类? 1.1 C语言中的字符串 2. 标准库中的string类 2.1 string类(了解) 2.2 string类的常用接口说明 1. string类对象的常见构造 2. string类对象的容量操作 reserve 3. string类对象…

体验MouseBoost PRO,让Mac操作更高效

还在为Mac的右键功能而烦恼吗?试试MouseBoost PRO for Mac吧!这款强大的鼠标右键增强软件,能让你通过简单操作即可激活多种实用功能,让你的工作变得更加轻松。其高度定制化的设计,更能满足你的个性化需求。赶快下载体验…

【C++】string底层的实现原理(简单详细)

前言 本篇文章我将按照C文档库中的模块顺序来实现和讲解其实现原理,我们只讲各板块中常用的 目录 一,Member functions(成员函数) 二、Iterators(迭代器) 三、Capacity(容器) 常…

[AIGC] redis 持久化相关的几道面试题

文章目录 1. 什么是Redis持久化?2. Redis 的持久化机制是什么?各自的优缺点?2.1 RDB(Redis DataBase),快照2.2 AOF(Append Only File),日志 3. 优缺点是什么?…

【递归、回溯和剪枝】全排列 子集

0.回溯算法介绍 什么是回溯算法 回溯算法是⼀种经典的递归算法,通常⽤于解决组合问题、排列问题和搜索问题等。 回溯算法的基本思想:从⼀个初始状态开始,按照⼀定的规则向前搜索,当搜索到某个状态⽆法前进时,回退到前…

Electron、QT、WPF三强争霸,该支持谁呢?

Electron、QT、WPF都是跨平台的桌面应用开发框架,都是非常流行的,作为开发者该选用哪个呢?本文从多个角度分析一下。 一、定义 Electron、Qt 和 WPF 都是用于创建桌面应用程序的框架或工具,它们各自有着不同的特点和优势。 Elec…