简单学习一下Linux中的环境变量

2023-05-16

环境变量

最近在学习Linux下的C程序编写,在运行可执行程序的时候有个问题就是链接的问题,最后通过学习才知道是因为环境变量没有设置好;

环境变量在进行linux开发过程中经常碰到,那什么是环境变量呢?我在刚学习Linux的时候对环境变量不是特别理解,变量不应该是在编程语言中类似于全局变量和局部变量吗?怎么又来了个环境变量?

在我们主流的OS中几乎都存在环境变量的概念,同样在windows下也是存在环境变量的,如下图所示:
在这里插入图片描述
在这里插入图片描述
通过学习查询资料,其实这些所谓的环境变量就相当于一些信息的简称,比如搜索、查询的路径等等,以后应用程序可以获取这些环境变量中包含的信息来完成相应的工作,很多小伙伴有这样的体会,经常在windows中运行刚安装的软件会需要在环境变量中添加一些路径等信息,否则软件无法运行。
在Linux中也是类似的作用,当执行一个命令,系统会根据环境变量中的路径信息依次搜索直到找到对应的程序运行。

Linux 环境变量

Linux环境变量主要分为系统级别和用户级级别,这点与windows也是非常类似的,如下图所示:
在这里插入图片描述
不同级别的环境变量在linux系统存在于不同的配置文件,且他们的作用域也是不一样的,所以这里结合C语言的各种变量的作用域就可以更加方便理解所谓的环境变量了吧,同样它也是一段常驻的内存标识。

我们在linux命令行中输入printenv命令即可查看所有的环境变量

其中比较常用的是环境变量PATH,可以使用printenv PATH或者echo $PATH来单独查看,如下图所示,两者完全一致:
在这里插入图片描述

PATH环境变量以冒号 : 进行分割,形成了多个路径,当用户输入相应的命令便会依次从上面的路径中查询程序来执行。

比如:在终端中输入ls命令行,Shell会从PATH变量中存储的路径来查找ls执行程序来运行。
当我们用环境变量export PATH=/home/maqianjun/ 把路径修改之后就不能执行ls命令了:
在这里插入图片描述

修改环境变量

对照上面的图进行说明:
在这里插入图片描述
修改环境变量大体分为两种办法 :
1 . 使用export命令行直接导入;
示例:
1.使用命令行"export 环境变量=新加入的的路径 ",如下图所示,这样就加入了新路径。
在这里插入图片描述
2.当我们退出后重新进入终端,之前使用export临时加的环境变量就会消失。
在这里插入图片描述
2.将export命令行保存到如上图所示的对应的文件中适时进行加载导入。
示例:
1、相对命令行方式,其实仅仅只是把export命令行放到了相应的文件中进行加载使用,我们进入到家目录,然后编辑隐藏文件.bashrc,然后把命令行追加到最后,如下图所示:
在这里插入图片描述
2、加入到文件并保存以后,其环境变量不会立即生效,需要使用source命令执行一下,才能够生效。
在这里插入图片描述

3、重新启动终端,如下图所示,其环境变量依然存在,因为~/.bashrc包含shell的bash信息,当登录以及每次打开新的shell时,该文件被读取,相应的命令也就会重新执行。
在这里插入图片描述
4、上面修改.bashrc仅仅只是在shell启动时被加载,在其被加载前执行的程序均无效,所以就有不同作用域,比如环境变量保存在~/.profile 中,那么图形界面启动程序就可以访问到设置的环境变量,而设置到~/.bashrc中的便无法被图形界面启动程序访问。
5、对于普通用户其实将环境变量在.bashrc文件中操作即可,如果修改了其他作用域更广的配置,会影响到其他用户,同时这些配置文件也是逐级覆盖的,启动过程中后面加载的文件会覆盖前面相同的配置信息。
PS,
还有几个关于环境变量的知识点:
1.PATH变量决定了shell 将到哪些目录中寻找命令或程序
2.一些第三方软件没有将可执行文件放到 Linux 的标准目录中。因此,将这些非标准的安装目录添加到 $PATH 是一种解决的办法.(之前也写过一篇关于制作动态库所用到的环境变量这一解决方法,但是它在关闭终端之后就消失了)。
最后
好了,本文就介绍了一下Linux中环境变量的理解与使用,以后在安装编译器,或者make命令等等很多地方都会设计到环境变量的操作,有说明错误请指正。希望本文能够对你有帮助!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

简单学习一下Linux中的环境变量 的相关文章

  • Linefit_ground_segmention文章梳理及代码阅读

    2013年专门针对地面分割的文章 xff1a Fast segmentation of 3D point clouds for ground vehicles 代码链接 xff1a https github com lorenwel lin
  • 使用MFC+GDI编写地图编辑器补充

    使用MFC 43 GDI编写地图编辑器补充 小宝乱猜 在编写MapEdit时我遇到一个问题 xff0c 那就是在程序开始时一切正常 xff0c 但在打开一个地图文件后 xff0c 程序就会因找不到资源文件而画面混乱 调试了半天才发现是相对路
  • 基于select模型的TCP服务器

    之前的一篇博文是基于TCP的服务器和客户机程序 xff0c 今天在这我要实现一个基于select模型的TCP服务器 xff08 仅实现了服务器 xff09 socket套接字编程提供了很多模型来使服务器高效的接受客户端的请求 xff0c s
  • 路由器端口介绍

    路由器所在的网络位置比较复杂 xff0c 既可是内部子网边缘 xff0c 也可位于内 外部网络边缘 同时为了实现强大的适用性 xff0c 它需要连接各种网络 xff0c 这样 xff0c 它的接口也就必须多种多样 对于这些 xff0c 不要
  • 光流(Optical Flow)

    光流的概念 光流是一种描述像素随时间在图像之间运动的方法 随着时间流逝 同一个像素会在图像中运动 我们希望追踪他的运动过程 稀疏光流 计算部分像素 稠密光流 计算全部像素 稀疏光流以Lucas Kanade光流为代表 简称LK光流 光流的两
  • 模块化程序 点与圆的关系 类中成员函数的声明和实现分开写入头文件和源文件中

    64 TOC 模块化程序 点和圆的关系 在黑马程序员课程4 1 3成员属性设置为私有 课后案例 点和圆的关系中 谈到了文件的封装 此案例是判断点与圆的关系 xff0c 重点是以另外一个类作为本类中的成员 xff1b 在比较大的开发中 xff
  • c++模板类/模板函数的声明与定义应该放在头文件里

    如果函数模板按照普通的函数声明放在头文件的 xff0c 定义放在 cpp文件 xff0c 会出现错误 xff1a 模板函数声明 定义 引用有什么要注意的问题么 xff1f xff1f mylib h template lt class T
  • checksum-8位和16位校验和代码示例

    span class hljs comment linux 系统编译通过 span span class hljs comment gcc filename c o filename span span class hljs comment
  • 安卓鉴权方式的总结

    HTTP Basic Authentication 这种授权方式是浏览器遵守http协议实现的基本授权方式 HTTP协议进行通信的过程中 xff0c HTTP协议定义了基本认证认证允许HTTP服务器对客户端进行用户身份证的方法 效果 xff
  • 手把手教你使用Vue搭建注册登录界面及前端源码

    文章目录 一 前言二 概况三 搭建注册页面四 改造登录页面四 整体效果动画演示五 前端源码下载六 后续 一 前言 本文将在vue admin template模板基础上完成搭建注册与登录页面 文末处有完整的前端源码下载 环境准备 浏览器 x
  • 从传感器和算法原理讲起,机器人是如何避障的

    导语 xff1a 本文内容来自大道智创CTO邢志伟在雷锋网硬创公开课的分享 xff0c 由雷锋网旗下栏目 新智造 整理 编者按 xff1a 本文内容来自大道智创CTO邢志伟在雷锋网 公众号 xff1a 雷锋网 硬创公开课的分享 xff0c
  • or1200处理器中的特殊寄存器

    以下内容摘自 步步惊芯 软核处理器内部设计分析 一书 OR1200中的寄存器分为两类 xff1a 通用寄存器r0 r31 特殊寄存器 特殊寄存器又分为11组 xff0c 在本书第1 3 3节简单地列出了所有的特殊寄存器组 从列表中可以发现除
  • 基础面试题 :大端、小端及转换方式

    理解网络中大端和小端往往是一道基础面试题 xff0c 这里作为记录和整理 xff0c 希望能帮到大家 目录 前言 一 字节序 二 什么小端顺序 三 什么大端顺序 四 处理器体系所属网络字节顺序 五 大小端转换 1 大端整形转换为小端 2 小
  • RS485——A与B波形与电路分析

    一 理论知识 发送端 AB间的电压差 xff0b 2 xff5e xff0b 6v 逻辑1 xff0d 2 xff5e xff0d 6v 逻辑0 xff1b 接收端 AB间的电压差 大于 xff0b 200mv 逻辑1 小于 xff0d 2
  • vsCode软件安装code runner插件,运行shell脚本,terminal终端不显示运行结果数据

    问题 vsCode软件安装code runner插件 xff0c 运行shell脚本 xff0c terminal终端不显示运行结果数据 原因分析 运行shell脚本 xff0c 没有指定运行的bash环境 解决办法 在Code runne
  • Microsoft Visual C++ Redistributable 与 Visual C++ 的区别与联系?

    Visual Studio xff1a 是一款开发软件 xff0c 即我们俗称的 IDE xff0c 有很多版本 xff0c 如 Visual Studio 2010 Visual C 43 43 xff1a Visual C 43 43
  • ROS下采用camera_calibration进行单目相机标定

    参考 xff1a https blog csdn net learning tortosie article details 79901255https blog csdn net learning tortosie article det
  • C++使用libcurl做HttpClient

    当使用C 43 43 做HTTP客户端时 xff0c 目前通用的做法就是使用libcurl 其官方网站的地址是http curl haxx se xff0c 该网站主要提供了Curl和libcurl Curl是命令行工具 xff0c 用于完
  • ROS小车打造(十一)--arduino订阅/发布Topic

    1 安装arduino Software Arduino 选择对应的版本下载 xff0c 下载后解压安装运行 sudo tar xvf arduino 1 8 18 linux64 tar tar sudo mv arduino 1 8 1
  • 简单谈谈5G/C-V2X技术与自动驾驶的关系

    一 什么叫自动驾驶 自动驾驶分为 6 个等级 xff1a Level 0 xff1a 人工驾驶 xff0c 无驾驶辅助系统 xff0c 仅提醒 Level 1 xff1a 辅助人工驾驶 xff0c 可实现单一的车速或转向控制自动化 xff0

随机推荐

  • axios详解

    文章目录 axios是干啥的原生XMLHttpRequest实现axios介绍 发送并发请求 axios API 创建一个实例Config配置选项默认设置 全局默认设置实例中自定义默认值设置的优先级 响应信息 response schema
  • 浅谈一下汽车行业中的OTA/FOTA/SOTA

    首先来一个背景知识铺垫 xff1a 被誉为汽车界 苹果 的特斯拉 xff0c 从它的第一款ModelS上市开始 xff0c 截止到2017年3月份的5年时间里 xff0c 总计对车辆推送了25次远程升级 特斯拉每次发布新系统新功能就可以通过
  • 三分钟看懂什么是边缘计算和云计算

    随着科技的发展 xff0c 社会的进步 xff0c 各种尖端科技层出不穷 xff0c 各种新概念和课题也是百花齐放 xff0c 前几年如雨后春笋般涌现出来的大数据 云计算这些个高科技 xff0c 左查右问 xff0c 花了好大工夫好不容易才
  • 如何提升github的clone速度(简单粗暴,亲测有效)

    今天在github上看上了一个项目 xff0c 想要clone到本地来 项目比较大 xff0c clone速度很慢 xff0c 一开始还有50 60k的速度在跑 xff0c 到后来居然给我降到了4K s xff0c 看得实在是蛋疼 于是去百
  • CAN总线数据帧/标准帧/扩展帧/远程帧/错误帧的组成格式对比

    最近在研究CAN总线的驱动 xff0c 需要详细了解数据帧 标准帧 扩展帧 远程帧 错误帧这几种帧的详细组成格式 xff0c 于是收集了一下 xff0c 统一放在这里进行对比和记录 xff0c 以便日后需要时查阅 1 数据帧 标准帧 CAN
  • 图解CAN总线数据的组成和帧格式

    CAN 是Controller Area Network 的缩写 xff08 以下称为CAN xff09 xff0c 是ISO国际标准化的串行通信协议 在汽车产业中 xff0c 出于对安全性 舒适性 方便性 低公害 低成本的要求 xff0c
  • 关于CAN总线的位时间/同步段/传播时间段/相位缓冲段/采样点

    根据 CAN 规范的要求 xff0c 总线上的所有器件都必须使用相同的比特率才能完成通信 然而 xff0c 并非所有器件都要求具有相同的主振荡器时钟频率 所以 xff0c CAN 总线能够在一定的范围内容忍总线上 CAN 节点的通信波特率的
  • NAND FLASH/NOR FLASH/EMMC等存储器的比较和区别

    首先介绍一下NAND FLASH NOR FLASH xff1a Nand Flash xff1a Nand Flash存储器是Flash存储器的一种 xff0c 其内部采用非线性宏单元模式 xff0c 为固态大容量内存的实现提供了廉价有效
  • 如何计算CAN总线的负载率以及每帧耗时和每秒最多传输帧数

    今天遇到一个问题 xff0c 需要计算一下CAN总线上 xff0c 不同的波特率下 xff0c 每秒钟最多能够传输多少帧数据 xff0c 或者说 xff0c 每帧数据需要耗时多少时间 一开始以为这个东西是很基础的确定性数据 xff0c 百度
  • 如何在bat脚本中显示出该脚本文件的相关信息

    今天在研究windows系统下的bat脚本 xff0c 想要在bat脚本运行的过程中 xff0c 输出脚本文件自身的一些信息 xff0c 经过一番查阅和摸索 xff0c 采用以下代码就可以实现 xff1a 64 span class tok
  • 如何在bat脚本中列出指定目录下的所有文件信息

    今天在研究windows系统下的bat脚本 xff0c 想要去遍历一个目录并输出该目录下的所有文件的详细信息 经过一番查找和摸索 xff0c 使用以下代码即可实现 xff1a 64 span class token function ech
  • 解决IDEA导入maven项目Plugin ‘org.apache.maven.pluginsmaven-compiler-plugin‘ not found问题

    问题 xff1a 导入了maven项目 xff0c 报错Plugin org apache maven plugins maven compiler plugin not found等问题 xff0c 不仅仅是 maven compiler
  • ISO11898/ISO14229/ISO14230/ISO15031/ISO15765标准对比简介

    各行各业都有很多的国际标准和规范 xff0c 汽车行业也不例外 xff0c 经常遇到一套一套的标准和规范 xff0c 什么ISO11898 xff0c ISO14229 xff0c ISO14230 xff0c ISO15031 xff0c
  • 如何解决UltraCompare中中文显示乱码的问题

    作为一名程序猿 xff0c 对代码进行对比分析是经常避免不了的 xff0c 这时候就需要一个很好用的对比工具 xff0c 我选择了大名鼎鼎的Ultra Compare 但是 xff0c 使用过程中发现 xff0c 这家伙居然不支持中文 xf
  • 一文简单介绍眼图

    搞通信行业的 xff0c 经常要关注信号的传输质量 xff0c 近几年开始出现了一个新的名词 xff0c 叫眼图 xff0c 可以非常直观的体现出信号传输的情况 那么 xff0c 什么是眼图 xff0c 怎么解读眼图 xff0c 下面就为大
  • 下一代CAN通信技术CAN XL简介

    众所周知 xff0c CAN网络具有易于实现 可扩展 并支持复杂拓扑结构等诸多优点 xff0c 所以目前在各个行业特别是汽车领域 xff0c 得到了非常广泛的应用 但是 xff0c 它也存在着诸多问题 xff0c 其中最大的一点就是总线带宽
  • 聊一下质量管理体系中的DQE/SQE/PQE/CQE

    最近接触了不少质量体系的话题 xff0c 反复的听到SQE DQE等 xff0c 大概知道是跟质量管理相关的一些职位 xff0c 但是具体也不是很清楚 xff0c 于是干脆来理一下 正式开始之前 xff0c 先要介绍一下他们的老祖宗 xff
  • C语言字符串库函数 #include <string.h>

    c语言字符串库函数 include lt string h gt 在头文件 lt string h gt 中定义了两组字符串函数 第一组函数的名字以str开头 xff1b 第二组函数的名字以mem开头 只有函数memmove对重叠对象间的拷
  • gcc编译动态库静态库及Makefile知识汇总;

    gcc编译 动态库静态库及Makefile知识汇总 gcc编译过程gcc的常用选项静态库 xff0c 动态库并制作 xff1b Makefile 基本使用make工具简介 gcc编译过程 我们在Linux下使用vim命令写的 c文件 xff
  • 简单学习一下Linux中的环境变量

    环境变量 最近在学习Linux下的C程序编写 xff0c 在运行可执行程序的时候有个问题就是链接的问题 xff0c 最后通过学习才知道是因为环境变量没有设置好 xff1b 环境变量在进行linux开发过程中经常碰到 xff0c 那什么是环境