Linux - 环境变量

news2024/12/29 1:46:15

1.基本概念

环境变量(environment variables)一般是指在操作系统中用来指定操作系统运行环境的一些参数

如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但 是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。

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

2.常见环境变量

PATH : 指定命令的搜索路径 HOME : 指定用户的主工作目录(即用户登陆到Linux系统中时,默认的目录) SHELL : 当前Shell,它的值通常是/bin/bash。

3.查看环境变量方法

输入env可以查看系统环境变量

1c3e88288cbf9c492c97e63bb9f6c68a.png

输入以下指令可以查看相关环境变量的路径:

echo $PATH  //PATH为环境变量名称
804b74b5c638905e77df843ec9f12ee0.png

4.测试PATH

1. 创建test.c文件

#include <stdio.h>
int main()
{
    printf("hello Linux!\n");
    return 0;
}
2. 对比./hello执行和之间hello执行
580a0ee04f221ff92e067f843879e3c2.png

我们自己写的程序需要带上./才可以运行,而系统自带的ls不需要

3. 为什么有些指令可以直接执行,不需要带路径,而我们的二进制程序需要带路径才能执行?

因为我们写的程序没有添加到环境变量里,所以必须带路径执行,有些指令在系统环境变量里,就可以直接运行,比如ls

7617238e075c6ea1767f23f3485ffdf6.png
4. 将我们的程序所在路径加入环境变量PATH当中, export PATH=$PATH:test程序所在路径
0da2f02c1bca39f0637f0405dec20eaa.png

发现可以直接a.out运行程序了,但是出现了其他问题,我们再次运行ls观察

c2247f480baac8ce25ded1cf10f22070.png

ls出问题了,发现系统路径没用了,说明上面的添加环境变量是错误的,这时候我们重启下xshell可以恢复系统环境变量路径。

正确的方式:

3cb236436e218e619d75274ca84c5fa5.png

在Linux中,把可执行程序,拷贝到系统默认路径下,让我们可以直接访问的方式 --相当于Linxu的安装

如何取消呢?

5.测试HOME

用root和普通用户,分别执行 echo $HOME ,对比差异

4d1921ff95c6b8afbbb1ca193a194ec9.png
c3e252f050da5098746a19a58024753f.png

不同的用户,环境变量不同

6.和环境变量相关的命令

1. echo: 显示某个环境变量值 2. export: 设置一个新的环境变量 3. env: 显示所有环境变量 4. unset: 清除环境变量 5. set: 显示本地定义的shell变量和环境变量

7.获取环境变量

envp环境变量表

envp是一个表结构

39997b7729e5761fc38700f69ee14cbf.png
8b880571d5d51fa8df5887a0955efe0a.png

打印出环境变量表的内容

bd3f2d0efe2d092b393cb290d817633b.png

environ(C语言方式)、

libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时 要用extern声明

cd40b5bfe1e1574f532167e3065fd081.png

结果和envp环境变量表一样

getenv(函数获取-主流)

2d8278a2e82ec1dfa2cd35d4c1ced190.png

下面是获取user的环境变量

a69e0b9907dfb0ef220905fc50d9c1a0.png
8e322fa769a9ccdfeb6aab0137928aa5.png

下面模拟写一个pwd

72021391e928cdad162912f04f95aac8.png
e60fc66c03f29a6e65bcb881840e406b.png

将我们写的mypwd添加到系统环境变量里

932f0965ef0323cc9ee6cc6ae198306f.png
15d5b8ac74e925c366e4b686591a029b.png

添加用户访问权限

0390d6d634ff22c02f9d16c3f13318a0.png

putenv()

以后补充

944688c9e1a26dd21699634afce14bd9.png

系统家目录下的环境变量配置文件

8ddbd84d34a12a35f6fabacdc553ebc1.png

.bash_profile和.bashrc

其中profile调用bashrc

7424664e5ca7fd4ee44186c9bf28e1dc.png
a5a48864c8532918d91f8cacaf8d3cc0.png

8.shell环境变量

df569940910eedba0d3463c3aabef8fe.png
347e21bfecdeb6f9d1ffa05987ad327f.png

将shell添加到环境变量表

5053acef5d9a56a3ac7f0be6b7eab274.png
d75896424e41d5661da7243804614e58.png
bcc86603f2443769773c338eff199726.png
环境变量是可以被相关的子进程继承下去的 -- 环境变量具有全局属性
cd5590f07f28aac6a62b89b52d970e0d.png

未有export定义,其能echo打印,其被bash记录了下来,但是没有被添加到环境变量表内而已,这种变量称做本地变量,本地变量只在shell内部有效,不能被子进程继承;用export导入一下即可

9.命令行参数

7d699bbb6c40268e3d1759813ed075cd.png

我们打印一下argc,我们通过运行结果可以得出argc即命令行参数个数

7de2232d753bb9cdee557d28979926b9.png
4bdca53951a7d2e8a8121738840eab9c.png

 

737e7bc488981d1fb00dfd365b06ffda.png
46b4240508423b6faa0d7c8cad6f975b.png
9762284554fa2ce4141b5ab346c01525.png

 

 

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

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

相关文章

超级个体新时代Web3space西南旗舰合伙人招募活动圆满落幕

7月30日&#xff0c;一场备受瞩目的超级个体新时代—Web3space西南旗舰合伙人招募活动在四川省成都市G1咖啡馆会议室成功举办。本次活动吸引了30余位Web3领域的从业者和爱好者参与&#xff0c;现场氛围十分热烈。 首先&#xff0c;CyberDAO执行合伙人JR老师主持了Web3space商业…

【AI实战】开源中文 llama2 来了,30 分钟搭建 130 亿参数大模型 Llama2-Chinese-13b-Chat

【AI实战】开源中文 llama2 来了&#xff0c;30 分钟搭建 130 亿参数大模型 Llama2-Chinese-13b-Chat 简介环境配置环境搭建依赖安装 代码及模型权重拉取拉取 Llama2-Chinese拉取 Llama2-Chinese-13b-Chat 模型权重及代码 终端测试页面测试安装 gradio加载模型并启动服务 国内 …

配置VS Code 使其支持vue项目断点调试

起因 每个应用&#xff0c;不论大小&#xff0c;都需要理解程序是如何运行失败的。当我们写的程序没有按照自己写的逻辑走的时候&#xff0c;我们就会逐步一一排查问题。在平常开发过程中我们可能会借助 console.log 来排查,但是现在我们可以借助 VS Code 断点来调试项目。 前…

Linux下查阅帮助文档必学命令 man

Linux操作系统的使用中,我们经常会遇到很多问题,这个时候查询文档的能力至关重要,黄老师来推荐大家使用man,这时我们必须掌握的查阅能力: 最常用的命令: man 名称 man 数字(1~9) 名称 这里的数字分别代表:

JavaWeb 项目实现(四) 验证旧密码

1.验证旧密码 步骤很简单&#xff0c;从Session中取到当前密码&#xff0c;和修改密码界面得到的旧密码对比&#xff0c;判断是否相等。 特别之处在于实现用到了Ajax&#xff0c;可以不刷新整个页面的情况下与Web服务器进行通信。 2.Ajax Ajax&#xff08;Asynchronous Java…

使用Gunicorn+Nginx部署Flask项目

部署-开发机上的准备工作 确认项目没有bug。用pip freeze > requirements.txt将当前环境的包导出到requirements.txt文件中&#xff0c;方便部署的时候安装。将项目上传到服务器上的/srv目录下。这里以git为例。使用git比其他上传方式&#xff08;比如使用pycharm&#xff…

深度学习之用PyTorch实现线性回归

代码 # 调用库 import torch# 数据准备 x_data torch.Tensor([[1.0], [2.0], [3.0]]) # 训练集输入值 y_data torch.Tensor([[2.0], [4.0], [6.0]]) # 训练集输出值# 定义线性回归模型 class LinearModel(torch.nn.Module):def __init__(self):super(LinearModel, self)._…

nodejs安装及多版本安装与TS环境搭建

nodejs安装及多版本安装与TS环境搭建 方法一&#xff1a; 普通安装nodejs,确定只能安装一个。网址&#xff1a;链接: 官网 不同系统下安装&#xff1a;不同系统下的nodejs 方法二&#xff1a; 借助工具nvm&#xff0c;安装多个nodejs&#xff0c;随时切换nodejs版本 什么是…

禁止别人调试自己的前端页面代码

✨ 目录 &#x1f388; 为啥要禁止&#xff1f;&#x1f388; 无限 debugger&#x1f388; 无限 debugger 的对策&#x1f388; 禁止断点的对策&#x1f388; 忽略执行的代码&#x1f388; 忽略执行代码的对策&#x1f388; 终极增强防调试代码 &#x1f388; 为啥要禁止&#…

简约好看的帮助中心创建案例,赶紧点赞收藏!

在线帮助中心创建案例是提供用户支持和解决问题的有效方式之一。一个简约好看的帮助中心案例能够帮助用户快速找到需要的信息并解决问题&#xff0c;同时也能提升用户体验&#xff0c;增加点赞和收藏的可能性。 帮助中心创建案例分享&#xff1a; 酷学院&#xff1a; 酷渲&a…

item_get-KS-获取商品详情

一、接口参数说明&#xff1a; item_get-根据ID取商品详情 &#xff0c;点击更多API调试&#xff0c;请移步注册API账号点击获取测试key和secret 公共参数 请求地址: https://api-gw.onebound.cn/ks/item_get 名称类型必须描述keyString是调用key&#xff08;http://o0b.cn/…

‘vite‘ 不是内部或外部命令,也不是可运行的程序 或批处理文件。

1.切换到工程目录下 2.执行npm install(最关键的一步了&#xff01;&#xff01;) 3. 最后直接运行&#xff1a;npm run dev 4.浏览器直接打开就行了&#xff01;

断网监测网关可以自动重启路由器

网络设备监测系统是一种用于监测远程网络设备状态的设备&#xff0c;它可以通过断网、断电和网线监测等多种方式进行监测。该系统支持同时监测7台网络设备&#xff0c;并且具有1路继电器输出&#xff0c;可以用于自动重启或者远程重启网络设备。 网络设备监测系统内置微型处理器…

VR 变电站事故追忆反演——正泰电力携手图扑

VR(Virtual Reality&#xff0c;虚拟现实)技术作为近年来快速发展的一项新技术&#xff0c;具有广泛的应用前景&#xff0c;支持融合人工智能、机器学习、大数据等技术&#xff0c;实现更加智能化、个性化的应用。在电力能源领域&#xff0c;VR 技术在高性能计算机和专有设备支…

前端代码注释率

nodejs差代码注释率 /*** author duan* source https://editor.csdn.net/md/?not_checkout1&spm1011.2124.3001.6192* date 2023-7-7* * 统计指定目录下代码行数及注释率* * 用法: node count.js <路径> [后缀名]...* 后缀名不填的话默认为统计 .js 和 .ts 文件* *…

类Blip2的视觉文本多模态算法

一、Blip2出现的意义不比ChatGPT差 BLIP-2: Bootstrapping Language-Image Pre-training with Frozen Image Encoders and Large Language Models 论文链接&#xff1a;https://arxiv.org/abs/2301.12597 代码仓库&#xff1a;https://github.com/salesforce/LAVIS/tree/mai…

解密GIS系统:数字化地球的智慧导航之道

作为现代科技与地理信息的完美结合&#xff0c;地理信息系统&#xff08;GIS&#xff09;在如今的社会中发挥着越来越重要的作用。GIS系统通过整合地理数据、分析空间关系和可视化信息&#xff0c;为我们呈现了一个数字化的地球&#xff0c;带来了许多令人惊叹的功能与作用。 ①…

服务器返回 413 Request Entity Too Large

问题 上传一个大于1.5M的文件时,报错:413 Request Entity Too Large 使用的配置 1、用的是docker环境,还有一层代理,代理用的镜像是:jwilder/nginx-proxy 2、docker里是有php和nginx 确认配置 docker里的php和nginx都配置了上传的限制是20M以上,包括请求超时时间也是…

【unity之IMGUI实践】游戏结束流程封装实现【七】

&#x1f468;‍&#x1f4bb;个人主页&#xff1a;元宇宙-秩沅 &#x1f468;‍&#x1f4bb; hallo 欢迎 点赞&#x1f44d; 收藏⭐ 留言&#x1f4dd; 加关注✅! &#x1f468;‍&#x1f4bb; 本文由 秩沅 原创 &#x1f468;‍&#x1f4bb; 收录于专栏&#xff1a;uni…

把握前沿大模型风向标?这场大会一定不能错过!

2023年全球AI浪潮迭起&#xff0c;大语言模型热度空前&#xff0c;生成式人工智能为千行百业高质量发展带来更多想象空间。作为前沿科技风向标、汇聚全球开发者的顶级盛会&#xff0c;WAVE SUMMIT 2023深度学习开发者峰会正式定档8月16日&#xff0c;在北京望京凯悦酒店召开。本…