【Linux 10】环境变量

文章目录

  • 🌈 Ⅰ 命令行参数
    • ⭐ 1. main 函数的参数
    • ⭐ 2. main 函数参数的意义
    • ⭐ 3. 查看 argv 数组的内容
    • ⭐ 4. 命令行参数结论
    • ⭐ 5. 为什么要有命令行参数
    • ⭐ 6. 命令行参数传递由谁执行
  • 🌈 Ⅱ 环境变量基本概念
    • ⭐ 1. 常见环境变量
  • 🌈 Ⅲ 查看环境变量
  • 🌈 Ⅳ 配置环境变量
    • ⭐ 1. 将程序放入系统路径 (临时)
    • ⭐ 2. 往系统路径列表中添加新路径 (临时)
    • ⭐ 3. 往系统路径列表中添加新路径 (永久)
  • 🌈 Ⅴ 环境变量相关命令
    • ⭐ 1. echo 显示某个环境变量的值
    • ⭐ 2. export 设置一个新的环境变量
    • ⭐ 3. env 显示所有的环境变量
    • ⭐ 4. unset 清除环境变量

🌈 Ⅰ 命令行参数

⭐ 1. main 函数的参数

  • 在有些地方可能看到 main 函数会像下面这样带着形参,这些参数可带可不带。
int main(int argc, char* argv[])

⭐ 2. main 函数参数的意义

  1. char* argv[]:指针数组,数组中的每个元素都指向一个字符串。
  2. int argc:argv 数组中的元素个数。

⭐ 3. 查看 argv 数组的内容

  • 使用如下代码查看 argv 数组中的内容。
#include <stdio.h>
#include <unistd.h>int main(int argc, char* argv[])
{for (int i = 0; i < argc; i++)printf("argv[%d]: %s\n",i, argv[i]);                                                         return 0;
}

在这里插入图片描述

⭐ 4. 命令行参数结论

  • 在命令行输入的叫做命令行字符串
  • argc 用来记录在命令行中输入的参数个数。
  • argv 用来记录在命令行中输入的每个参数,会将命令行字符串中的空格替换成 \0,然后以参数的形式传递给 main 函数,argv 数组以 NULL 结尾
  • 一般情况下,0 号位置存的都是程序的路径 + 名称,后面的 -a -b 这些选项就是和该进程匹配的选项

在这里插入图片描述

⭐ 5. 为什么要有命令行参数

  • 命令行参数本质是交给程序不同的选项,用来定制不同的程序功能
  • 通过如下代码查看如何通过使用不同选项实现不同功能,此处只演示一个选项的情况。
#include <stdio.h>
#include <unistd.h>
#include <string.h>int main(int argc, char* argv[])
{if (argc != 2){printf("%s 的可用选项 -[a,b,c,d]\n", argv[0]);return 1;}                                                        if (0 == strcmp(argv[1], "-a"))			// 输入的选项是 -aprintf("功能1\n");else if (0 == strcmp(argv[1], "-b"))	// 输入的选项是 -bprintf("功能2\n");else if (0 == strcmp(argv[1], "-c"))	// 输入的选项是 -cprintf("功能3\n");else if (0 == strcmp(argv[1], "-d"))	// 输入的选项是 -dprintf("功能4\n");	return 0;
}

在这里插入图片描述

  • 通过上述示例,能够理解清楚 Linux 中的其他指令 (如: ls -l) 大致是如何实现子功能的。

⭐ 6. 命令行参数传递由谁执行

  • 父进程 bash,在命令行中启动的程序,都会变成进程,这些进程都是 bash 的子进程。

🌈 Ⅱ 环境变量基本概念

  • 环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数
  • Linux 中的很多指令在命令行中不需要输入路径就可以执行,而我们自己编写的可执行程序不带 ./ 就无法执行,原因就在于没有给自己的可执行程序配置环境变量。
  • 在 Linux 中,存在一些全局的设置,告诉命令行解释器,应该去哪些路径下寻找可执行程序,这就是环境变量的作用。

在这里插入图片描述

⭐ 1. 常见环境变量

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

🌈 Ⅲ 查看环境变量

指令

echo $环境变量名 

示例

  • 系统中的很多配置,在登录 Linux 系统的时候,已经被加载到了 bash 进程 (内存) 中。
  • bash 在执行命令的时候,需要先找到命令,下图的所有路径就是 bash 在执行命令时默认的搜索路径。
  • 如果在下面的所有路径中没有找到你想要的指令,就会报 command not found,如果找到了就会加载并运行该指令。

在这里插入图片描述

🌈 Ⅳ 配置环境变量

  • 让我自己写的可执行程序变得和系统指令一样有尊严,不需要带 ./ 一样能直接执行。

⭐ 1. 将程序放入系统路径 (临时)

  • 将自己写的程序随便拷贝到某个系统自带的环境变量目录中,相当于将自己写的程序安装到了 Linux 系统里。但是,不推荐将自己的可执行程序放到系统的可执行程序路径中
  • 该方法为内存级,不会永久保留配置,下次登录 Linux 系统时就会恢复原样。

在这里插入图片描述

⭐ 2. 往系统路径列表中添加新路径 (临时)

PATH=$PATH:自己写的程序路径
  • 将自己写的程序的路径添加到系统路径列表中,在任意目录执行自己的可执行程序时,就会自动在系统路径中寻找对应路径下的程序。
  • 该方法为内存级,不会永久保留配置,下次登录 Linux 系统时就会恢复原样。

在这里插入图片描述

⭐ 3. 往系统路径列表中添加新路径 (永久)

  • 上述两种配置环境变量的方法都属于内存级的,在下次登录 Linux 中就会恢复原样。

1. 解释系统环境变量为何能永久存在

  • 最开始的环境变量不在内存中,而是在系统的对应配置文件中。
  • 系统在登录 Linux 时,会先创建 bash 进程,bash 进程间就会读取这些配置文件,然后将配置文件中的环境变量在 bash 进程中拷贝一份。
  • 也就是说,将系统的配置文件改了,才能让自己的程序路径永久存在于环境变量的路径列表中。

2. 将程序路径写入配置文件

  • 在用户根目录中,有一个隐藏的 .bash_profile 文件,只需要将自己程序的所在路径添加到该文件中然后再重新登录 Linux 系统即可。

在这里插入图片描述

在这里插入图片描述

🌈 Ⅴ 环境变量相关命令

⭐ 1. echo 显示某个环境变量的值

指令echo $环境变量名

示例

在这里插入图片描述

⭐ 2. export 设置一个新的环境变量

指令export THIS_IS_MY_ENV=你的环境变量名

功能:自定义一个内存级的环境变量。

示例:创建一个名为 helloworld 的环境变量。

在这里插入图片描述

⭐ 3. env 显示所有的环境变量

功能:显示所有的环境变量,以及每个环境变量所对应的路径列表。

示例

在这里插入图片描述

⭐ 4. unset 清除环境变量

指令unset THIS_IS_MY_ENV

功能:清除所有通过 export 设置的环境变量。

示例

在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙OS开发实战:【网络管理HTTP数据请求】

一、场景介绍 应用通过HTTP发起一个数据请求&#xff0c;支持常见的GET、POST、OPTIONS、HEAD、PUT、DELETE、TRACE、CONNECT方法。 二、 接口说明 HTTP数据请求功能主要由http模块提供。 使用该功能需要申请ohos.permission.INTERNET权限。 涉及的接口如下表&#xff0c;…

Unix中的进程和线程-1

目录 1.如何创建一个进程 2.如何终止进程 2.2遗言函数 3.进程资源的回收 4.孤儿进程和僵尸进程 孤儿进程 (Orphan Process)&#xff1a; 僵尸进程 (Zombie Process)&#xff1a; 代码示例&#xff1a; 5. 进程映像的更新 在Linux中&#xff0c;进程和线程是操作系统进行工作调…

保研线性代数机器学习基础复习2

1.什么是群&#xff08;Group&#xff09;&#xff1f; 对于一个集合 G 以及集合上的操作 &#xff0c;如果G G-> G&#xff0c;那么称&#xff08;G&#xff0c;&#xff09;为一个群&#xff0c;并且满足如下性质&#xff1a; 封闭性&#xff1a;结合性&#xff1a;中性…

从零开始的软件开发实战:互联网医院APP搭建详解

今天&#xff0c;笔者将以“从零开始的软件开发实战&#xff1a;互联网医院APP搭建详解”为主题&#xff0c;深入探讨互联网医院APP的开发过程和关键技术。 第一步&#xff1a;需求分析和规划 互联网医院APP的主要功能包括在线挂号、医生预约、医疗咨询、健康档案管理等。我们…

金融衍生品市场

金融衍生品市场 衍生金融品的作用衍生金融工具远期合约期货合约期权 衍生金融品的作用 套期保值&#xff08;Hedging&#xff09; 组合多头头寸(long position)与空头头寸(short position)例&#xff1a;股票与股指期货 投机 衍生金融工具 远期合约 定义&#xff1a;在将来…

论文笔记 - :MonoLSS: Learnable Sample Selection For Monocular 3D Detection

论文笔记✍MonoLSS: Learnable Sample Selection For Monocular 3D Detection &#x1f4dc; Abstract &#x1f528; 主流做法限制 &#xff1a; 以前的工作以启发式的方式使用特征来学习 3D 属性&#xff0c;没有考虑到不适当的特征可能会产生不利影响。 &#x1f528; 本…

Optimizer神经网络中各种优化器介绍

1. SGD 1.1 batch-GD 每次更新使用全部的样本&#xff0c;注意会对所有的样本取均值&#xff0c;这样每次更新的速度慢。计算量大。 1.2 SGD 每次随机取一个样本。这样更新速度更快。SGD算法在于每次只去拟合一个训练样本&#xff0c;这使得在梯度下降过程中不需去用所有训…

css3之3D转换transform

css3之3D转换 一.特点二.坐标系三.3D移动&#xff08;translate3d)1.概念2.透视&#xff08;perpective)(近大远小&#xff09;&#xff08;写在父盒子上&#xff09; 四.3D旋转&#xff08;rotate3d)1.概念2.左手准则3.呈现&#xff08;transfrom-style)&#xff08;写父级盒子…

智能革命:ChatGPT3.5与GPT4.0的融合,携手DALL·E 3和Midjourney开启艺术新纪元

迷图网(kk.zlrxjh.top)是一个融合了顶尖人工智能技术的多功能助手&#xff0c;集成了ChatGPT3.5、GPT4.0、DALLE 3和Midjourney等多种智能系统&#xff0c;为用户提供了丰富的体验。以下是对这些技术的概述&#xff1a; ChatGPT3.5是由OpenAI开发的一个自然语言处理模型&#x…

KeepAlived使用介绍

目录 1、Introduce 2、基本使用 &#xff08;1&#xff09;安装 &#xff08;2&#xff09;配置文件 &#xff08;3&#xff09;使用教程 1、Introduce keepalived是一个用于实现高可用性和负载均衡的开源软件。它提供了一种轻量级的方式来管理多个服务器&#xff0c;并确保…

使用Detours进行HOOK

文章目录 Detours介绍Detours配置Detours进行Sleep Hook Detours介绍 Detours是微软研究院开发的一款软件工具&#xff0c;用于Windows平台上的应用程序重定向和修改。 它可以在运行时修改应用程序的执行路径&#xff0c;允许开发人员注入自定义代码来改变应用程序的 行为&…

数据分析之Tebleau 的度量名称和度量值

度量名称 包含所有的维度 度量值 包含所有的度量 度量名称包含上面所有的维度&#xff0c;度量值包含上面所有的度量 当同时创建两个或两个以上度量或维度时&#xff0c;会自动创建度量名称和度量值 拖入省份为行(这会是还没有值的) 可以直接将销售金额拖到数值这里 或者将销售…

鸿蒙OS开发实例:【ArkTS类库多线程I/O密集型任务开发】

使用异步并发可以解决单次I/O任务阻塞的问题&#xff0c;但是如果遇到I/O密集型任务&#xff0c;同样会阻塞线程中其它任务的执行&#xff0c;这时需要使用多线程并发能力来进行解决。 I/O密集型任务的性能重点通常不在于CPU的处理能力&#xff0c;而在于I/O操作的速度和效率。…

上位机图像处理和嵌入式模块部署(qmacvisual寻找圆和寻找直线)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 前面有几篇文章&#xff0c;我们谈到过直线拟合、圆拟合和椭圆拟合。当时&#xff0c;我们的做法是&#xff0c;先找到了轮廓&#xff0c;接着找到…

this.$route.back()时的组件缓存

1.this.$route.back()回到上一个路径会重新加载 跳转时,前一个路由的内容会被销毁,当回来时,重新创建树,组件内有保存了距离,没有一开始是0. 2.keep-alive写在router-view上面,这个地方所代表的路由会被保存,因此可以写在上面,保存,当返回时,如果是这个路由,里面的内容是一样…

超强命令行解析工具Apache Commons CLI

概述 为什么要写这篇文章呢?因为在读flink cdc3.0源码的时候发现了这个工具包,感觉很牛,之前写过shell命令,shell是用getopts来处理命令行参数的,但是其实写起来很麻烦,长时间不写已经完全忘记了,现在才发现原来java也有这种工具类,所以先学习一下这个的使用,也许之后自己在写…

canvas画图,画矩形可拖拽移动,可拖拽更改尺寸大小

提示&#xff1a;canvas画图&#xff0c;画矩形&#xff0c;圆形&#xff0c;直线&#xff0c;曲线可拖拽移动 文章目录 前言一、画矩形&#xff0c;圆形&#xff0c;直线&#xff0c;曲线可拖拽移动总结 前言 一、画矩形&#xff0c;圆形&#xff0c;直线&#xff0c;曲线可拖…

AI绘画教程:Midjourney使用方法与技巧从入门到精通

文章目录 一、《AI绘画教程&#xff1a;Midjourney使用方法与技巧从入门到精通》二、内容介绍三、作者介绍&#x1f324;️粉丝福利 一、《AI绘画教程&#xff1a;Midjourney使用方法与技巧从入门到精通》 一本书读懂Midjourney绘画&#xff0c;让创意更简单&#xff0c;让设计…

yolov5 v7.0打包exe文件,使用C++调用

cd到yolo5文件夹下 pyinstaller -p 当前路径 -i logo图标 detect.py问题汇总 运行detect.exe找不到default.yaml 这个是yolov8里的文件 1 复制权重文件到exe所在目录。 2 根据报错提示的配置文件路径&#xff0c;把default.yaml复制放到相应的路径下。&#xff08;缺少相应…

redis和数据库数据不一直问题,缓存常见的三大问题

文章目录 数据一致性缓存常见问题缓存穿透缓存击穿缓存雪崩 数据一致性 1 思路 查询数据的时候&#xff0c;如果缓存未命中&#xff0c;则查询数据库&#xff0c;将数据写入缓存设置超时时间修改数据时&#xff0c;先修改数据库&#xff0c;在删除缓存。 2 代码实现 修改更…