环境变量(全)

news2024/11/29 22:48:43

概念

 环境变量(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.coloradmin.cn/o/1667971.html

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

相关文章

设计模式——模板设计模式(Template Method)

模板设计-base 什么是模板? 举个简单的例子,以AABB的格式,写出一个词语,你可能会想到,明明白白,干干净净等, 这个AABB就是一个模板,对模板心中有了一个清晰的概念之后,…

[hpssupfast@mailfence.com].Elbie勒索病毒如何恢复数据和预防

[hpssupfastmailfence.com].Elbie是一种新型勒索病毒,快速恢复重要数据请添加技术服务号(safe130)。以下是关于elbie勒索病毒的详细信息: 病毒介绍: elbie勒索病毒,也称为PHOBOS勒索软件,它通过加密文件并要求支付赎金以恢复对文…

spring模块(六)spring监听器(1)ApplicationListener

一、介绍 1、简介 当某个事件触发的时候,就会执行的方法块。 当然,springboot很贴心地提供了一个 EventListener 注解来实现监听。 2、源码: package org.springframework.context;import java.util.EventListener; import java.util.fu…

【数据结构】双向循环链表专题解析

实现自己既定的目标,必须能耐得住寂寞单干。💓💓💓 目录 •✨说在前面 🍋知识点一:双向链表的结构 • 🌰1."哨兵位"节点 • 🌰2.双向带头循环链表的结构 🍋…

Java - Json字符串转List<LinkedHashMap<String,String>>

需求&#xff1a;在处理数据时&#xff0c;需要将一个Object类型对象集合转为有序的Map类型集合。 一、问题 1.原代码&#xff1a; 但在使用时出现报错&#xff1a; Incompatible equality constraint: LinkedHashMap<String, String> and LinkedHashMap 不兼容的相等…

社区送水小程序软件开发

uni-app框架&#xff1a;使用Vue.js开发跨平台应用的前端框架&#xff0c;编写一套代码&#xff0c;可编译到Android、小程序等平台。 框架支持:springboot/Ssm/thinkphp/django/flask/express均支持 前端开发:vue.js 可选语言&#xff1a;pythonjavanode.jsphp均支持 运行软件…

猫头虎分享已解决Bug || 已解决ERROR: Ruby Gems安装中断 ⚠️ Bug 报告:Gem::RemoteFetcher::FetchError

猫头虎分享已解决Bug || 已解决ERROR: Ruby Gems安装中断 ⚠️ Bug 报告&#xff1a;Gem::RemoteFetcher::FetchError 博主猫头虎的技术世界 &#x1f31f; 欢迎来到猫头虎的博客 — 探索技术的无限可能&#xff01; 专栏链接&#xff1a; &#x1f517; 精选专栏&#xff1a; …

四川汇昌联信:拼多多运营属于什么行业?

拼多多运营属于什么行业?这个问题看似简单&#xff0c;实则涉及到了电商行业的深层次理解。拼多多运营&#xff0c;顾名思义&#xff0c;就是在拼多多这个电商平台上进行商品销售、推广、客户服务等一系列活动。那么&#xff0c;这个行业具体包含哪些内容呢?下面就从四个不同…

redis深入理解之实战

1、SpringBoot整合redis 1.1 导入相关依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId> </dependency> <dependency><groupId>org.springframework.boot</groupId><artifactId&g…

Webstorm免费安装教程

一、介绍 WebStorm 具有智能化的代码编辑功能&#xff0c;如代码补全、重构、代码导航、错误检测等等&#xff0c;这些功能可以帮助开发人员提高编码效率&#xff0c;减少出错的可能性。同时&#xff0c;WebStorm 也集成了各种流行的前端框架和库&#xff0c;如 React、Angula…

Python3实现三菱PLC串口通讯(附源码和运行图)

基于PyQt5通过串口通信控制三菱PLC 废话不多说&#xff0c;直接上源码 """ # -*- coding:utf-8 -*- Project : Mitsubishi File : Main_Run.pyw Author : Administrator Time : 2024/05/09 下午 04:10 Description : PyQt5界面主逻辑 Software:PyCharm "…

【Linux】轻量级应用服务器如何开放端口 -- 详解

一、测试端口是否开放 1、测试程序 TCP demo 程序&#xff08;可参考&#xff1a;【Linux 网络】网络编程套接字 -- 详解-CSDN博客&#xff09; 2、测试工具 Windows - cmd 窗口 输入命令&#xff1a;telnet [云服务器的公网ip] [port] 二、腾讯云安全组开放端口 1、安全组设…

简单贪吃蛇的实现

贪吃蛇的实现是再windows控制台上实现的&#xff0c;需要win32 API的知识 Win32 API-CSDN博客https://blog.csdn.net/bkmoo/article/details/138698452?spm1001.2014.3001.5501 游戏说明 ●地图的构建 ●蛇身的移动&#xff08;使用↑ . ↓ . ← . → 分别控制蛇的移动&am…

【C++】list原理讲解及其实现

目录 一、认识list底层结构 二、list的构造类函数 三、迭代器 四、数据的访问 五、容量相关的函数 六、关于数据的增删查改操作 前言 要模拟实现list&#xff0c;必须要熟悉list的底层结构以及其接口的含义&#xff0c;在上一篇我们仔细讲解了list的常见接口的使用及其含义&…

consul启动Error_server_rejoin_age_max (168h0m0s) - consider wiping your data dir

consul 启动报错&#xff1a; consul[11880]: 2024-05-12T08:37:51.095-0400 [ERROR] agent: startup error: error"refusing to rejoin cluster because server has been offline for more than the configured server_rejoin_age_max (168h0m0s) - consider wiping you…

IntelliJ的Maven编译返回找不到有效证书

文章目录 小结问题及解决找不到有效证书找不到org.springframework.stereotype.Service问题IntelliJ: Cannot resolve symbol springframework 参考 小结 将IntelliJ工程拷贝到新的机器中&#xff0c;返回Maven编译返回找不到有效证书的问题&#xff0c;进行了解决。 问题及解…

通过内网穿透实现远程访问个人电脑资源详细过程(免费)(NatApp + Tomcat)

目录 1. 什么是内网穿透 2. 内网穿透软件 3. NatApp配置 4. 启动NatApp 5. 通过内网穿透免费部署我们的springboot项目 通过内网穿透可以实现远程通过网络访问电脑的资源&#xff0c;本文主要讲述通过内网穿透实现远程访问个人电脑静态资源的访问&#xff0c;下一章节将讲…

Java入门基础学习笔记18——赋值运算符

赋值运算符&#xff1a; 就是“”&#xff0c;就是给变量赋值的&#xff0c;从右边往左边看。 int a 10; // 把数据赋值给左边的变量a存储。 扩展赋值运算符&#xff1a; 注意&#xff1a;扩展的赋值运算符隐含了强制类型转换。 package cn.ensource.operator;public class…

Unity Animation--动画窗口指南(使用动画视图)

Unity Animation--动画窗口指南&#xff08;使用动画视图&#xff09; 使用动画视图 window -> Animation 即可打开窗口 查看GameObject上的动画 window -> Animation -> Animation 默认快捷键 Ctrl 6 动画属性列表 在下面的图像中&#xff0c;“动画”视图&am…

【LAMMPS学习】八、基础知识(6.3)使用 LAMMPS GUI

8. 基础知识 此部分描述了如何使用 LAMMPS 为用户和开发人员执行各种任务。术语表页面还列出了 MD 术语,以及相应 LAMMPS 手册页的链接。 LAMMPS 源代码分发的 examples 目录中包含的示例输入脚本以及示例脚本页面上突出显示的示例输入脚本还展示了如何设置和运行各种模拟。 …