当前位置: 首页 > news >正文

Linux环境变量 本地变量 命令行参数

在这里插入图片描述

并行和并发


  • 并行

    多个进程在多个 CPU 下分别,同时进行运行。

  • 并发

    多个进程在一个 CPU 采用进程切换的方式,在一段时间内,让多个进程都得以推进,称之为并发。

  • CPU 中的寄存器扮演什么角色?

    • 寄存器:cpu 内的寄存器里面保存的是进程相关的数据。CPU 寄存器里面保存的是进程的临时数据–统称为:进程的上下文。临时数据数据量不大,所以被放在进程里的 PCB 中。

    • 进程在从 CPU 上离开的时候,要将自己的上下文数据保存好,甚至带走。保存的目的是未来能够恢复。

    • 进程在被切换的时候有以下步骤:

      • 保存上下文
      • 恢复上下文
    • 提高效率,将高频进程数据放入寄存器中。


环境变量


基本概念

PATH

  • 例子

在 linux 中输入以下指令

echo $PATH

linux 会输出一些以冒号为分割的路径,当在 linux 下执行指令时(ls,pwd 等),操作系统会在这些路径下搜索

  • PATH 定义

    linux 的指令搜索路径

  • 如果将自己编写的程序添加到环境变量中会怎么样?

    无需使用./即可运行,就像系统指令一样,直接输入程序名即可运行,无需添加./

  • 如何将自己编写的程序添加到环境变量?

    • PATH=$PATH:程序路径 (直接在后面添加)
    • PATH=程序路径 (这样写的话,就会使得 PATH 环境变量中只含有刚刚添加的路径,覆盖原先的路径了,会导致无法使用系统指令)
    • 若将环境变量改错了,只需重新启动 XShell 即可。
  • 常见问题

    • 为什么我们执行系统指令时不用添加./?

      因为指令也是可执行程序,操作系统会维护一个 PATH 变量,这是一个指令搜索路径。

    • which 搜索指令从哪里搜索?

      在 PATH 环境变量中搜索。


查看所有环境变量

  • 指令:

    env
    
  • C 指令

    getenv("PATH")
    

HOME

echo $HOME

什么是环境变量

环境变量是系统提供的一组 name=value 形式的变量。不同的环境变量有不同的作用,通常具有全局属性。

命令行参数

在文件 mycmd中:

//char* argv[] 是指针数组,有多少个元素由argc决定
int main(int argc, char* argv[])
{for (int i = 0; i < argc; i++){printf("argv[%d]->%s", argc, argv[i]);}}
  • ./mycmd
    输出:

    argv[0]->./mycmd
    
  • ./mycmd -a
    输出:

    argv[0]->./mycmd
    argv[0]->-a
    
  • ./mycmd -a -b
    输出:

    argv[0]->./mycmd
    argv[0]->-a
    argv[0]->-b
    
  • 命令行参数
  • 在命令行中输入的 ./mycmd -a -b ,其实输入的是 “./mycmd -a -b” ,bash 作命令行解释时就会把这个字符串打散成 3 个字符串(“./mycmd”,“-a”,“-b”),以空格为分隔。
  • 打散之后,有几个字符串就初始化 argc 为几。把每一个字符串的起始地址保存到 argv 中。然后才把 argc 和 argv 传递给 main 函数。这叫做命令行参数
  • 为什么要这样做?

int main(int argc, char* argv[])
{if (argc != 2){printf("./mycmd -[a|b|c|..]");return 0;}if (strcmp(argv[1], "a") == 0){printf("功能1\n");}else if (strcmp(argv[1], "b") == 0){printf("功能2\n");}else if (strcmp(argv[1], "c") == 0){printf("功能3\n");}else{printf("default\n");}}
  • ./mycmd -a
    输出

    功能1
    
  • ./mycmd -b
    输出

    功能2
    
  • 结论
    • 为什么以前的指令能带不同的选项呢?所有的指令对应的选项,本质上是同一个指令,但是根据不同的选项,可以有不同的功能
    • 为指令或工具等提供命令行选项的支持

常见问题

  • main 函数中只有 int argc 和 char *argv[]吗?还可以再添加参数吗?

    • 可以!!!,还可以添加 char *env[] 是一个环境变量列表
    • char *env[]和 char *argv[]结构一模一样,都是指针数组,里面放指针,最后一个默认为 NULL。
    • C/C++代码一共两张核心向量表

      • 命令行参数表 char *argv[]
      • 环境变量表 char *env[]
    • 输出环境变量表

      int main(int argc, char *argv[],char *env[])
      {for (int i = 0; env[i]; i++){printf("env[%d]->%s\n", i, env[i]);}}
      
  • 我们所运行的进程都是子进程,bash 本身在启动的时候会从操作系统的配置文件中读取环境变量,我们对应的子进程会继承父进程交给我的环境变量。

    • 创建自己的环境变量

      export My_Value=12345678
      
    • 取消自己创建的环境变量

      unset My_Value
      

本地变量和内建命令


本地变量

本地变量不会继承,只在本 bash 内有效

  • 例如:

    a=1
    echo $a//(输出 1)
    
  • 将本地变量转化为环境变量

    export a
    

命令的分类

常规命令

通过创建子进程完成的

内建命令

bash 不创建子进程,而是自己亲自执行。类似于 bash 调用了自己写的或者系统提供的函数。


在这里插入图片描述

相关文章:

Linux环境变量 本地变量 命令行参数

并行和并发 并行 多个进程在多个 CPU 下分别&#xff0c;同时进行运行。 并发 多个进程在一个 CPU 采用进程切换的方式&#xff0c;在一段时间内&#xff0c;让多个进程都得以推进&#xff0c;称之为并发。 CPU 中的寄存器扮演什么角色? 寄存器:cpu 内的寄存器里面保存的是进程…...

向量数据库Faiss的搭建与使用

1. 什么是Faiss&#xff1f; Faiss是由Facebook AI Research团队开发的一个库&#xff0c;旨在高效地进行大规模向量相似性搜索。它不仅支持CPU&#xff0c;还能利用GPU进行加速&#xff0c;非常适合处理大量高维数据。Faiss提供了多种索引类型&#xff0c;以适应不同的需求&a…...

微信小程序接入客服功能

前言 用户可使用小程序客服消息功能&#xff0c;与小程序的客服人员进行沟通。客服功能主要用于在小程序内 用户与客服直接沟通用&#xff0c;本篇介绍客服功能的基础开发以及进阶功能的使用&#xff0c;另外介绍多种客服的对接方式。 更多介绍请查看客服消息使用指南 客服视…...

mysql开启远程访问

个人建议mysql可以用宝塔自动下载安装。 远程访问&#xff0c; 1.关闭防火墙&#xff0c;确保ip能ping通 2.ping端口确定数据库能ping通 3.本地先连上去命令行修改远程访问权限。 mysql -u root -p use mysql; select user,host from user; select host from user where u…...

【NLP自然语言处理】文本处理的基本方法

目录 &#x1f354;什么是分词 &#x1f354;中文分词工具jieba 2.1 jieba的基本特点 2.2 jieba的功能 2.3 jieba的安装及使用 &#x1f354;什么是命名实体识别 &#x1f354;什么是词性标注 &#x1f354;小结 学习目标 &#x1f340; 了解什么是分词, 词性标注, 命名…...

uniapp使用defineExpose暴露和onMounted访问

defineExpose作用 暴露方法和数据 允许从模板或其他组件访问当前组件内部的方法和数据。明确指定哪些方法和数据可以被外部访问&#xff0c;从而避免不必要的暴露。 增强安全性 通过显式声明哪些方法和数据可以被外部访问&#xff0c;防止意外修改内部状态。提高组件的安全性&a…...

怎么使用matplotlib绘制一个从-2π到2π的sin(x)的折线图-学习篇

首先&#xff1a;如果你的环境中没有安装matplotlib&#xff0c;使用以下命令可以直接安装 pip install matplotlib如何画一个这样的折线图呢&#xff1f;往下看 想要画一个简单的sin(x)在-2π到2π的折线图&#xff0c;我们要拆分成以下步骤&#xff1a; 先导入相关的库文…...

【Java毕业设计】基于SpringBoot+Vue+uniapp的农产品商城系统

文章目录 一、系统架构1、后端&#xff1a;SpringBoot、Mybatis2、前端&#xff1a;Vue、ElementUI4、小程序&#xff1a;uniapp3、数据库&#xff1a;MySQL 二、系统功能三、系统展示1、小程序2、后台管理系统 一、系统架构 1、后端&#xff1a;SpringBoot、Mybatis 2、前端…...

C++ | Leetcode C++题解之第390题消除游戏

题目&#xff1a; 题解&#xff1a; class Solution { public:int lastRemaining(int n) {int a1 1;int k 0, cnt n, step 1;while (cnt > 1) {if (k % 2 0) { // 正向a1 a1 step;} else { // 反向a1 (cnt % 2 0) ? a1 : a1 step;}k;cnt cnt >> 1;step …...

echarts进度

echarts图表集 const data[{ value: 10.09,name:制梁进度, color: #86C58C,state: }, { value: 66.00,name:架梁进, color: #C6A381 ,state:正常}, { value: 33.07,name:下部进度, color: #669BDA,state:正常 }, ];// const textStyle { "color": "#CED6C8&…...

PostgreSQL16.4搭建一主一从集群

PostgreSQL搭建一主一从集群的过程主要涉及到基础环境准备、PostgreSQL安装、主从节点配置以及同步验证等步骤。以下是一个详细的搭建过程&#xff1a; 一、基础环境准备 创建虚拟机&#xff1a; 准备两台虚拟机&#xff0c;分别作为主节点和从节点。为每台虚拟机分配独立的IP…...

Spring01——Spring简介、Spring Framework架构、Spring核心概念、IOC入门案例、DI入门案例

为什么要学 spring技术是JavaEE开发必备技能&#xff0c;企业开发技术选型命中率>90%专业角度 简化开发&#xff1a;降低企业开发的复杂度框架整合&#xff1a;高效整合其他技术&#xff0c;提高开发与运行效率 学什么 简化开发 IOCAOP 事务处理 框架整合 MyBatis 怎…...

深度学习|模型推理:端到端任务处理

引言 深度学习的崛起推动了人工智能领域的诸多技术突破,尤其是在处理复杂数据与任务的能力方面。模型推理作为深度学习的核心环节,决定了模型在真实应用场景中的表现。而端到端任务处理(End-to-End Task Processing)作为深度学习的一种重要范式,通过从输入到输出的直接映…...

【深度学习 Pytorch】2024年最新版本PyTorch学习指南

引言 2024年&#xff0c;深度学习技术在各个领域取得了显著的进展&#xff0c;而PyTorch作为深度学习领域的主流框架之一&#xff0c;凭借其易用性、灵活性和强大的社区支持&#xff0c;受到了广大研究者和开发者的喜爱。本文将为您带来一份2024年最新版本的PyTorch学习指南&a…...

第 1 章:原生 AJAX

原生AJAX 1. AJAX 简介 AJAX 全称为 Asynchronous JavaScript And XML&#xff0c;就是异步的 JS 和 XML。通过 AJAX 可以在浏览器中向服务器发送异步请求&#xff0c;最大的优势&#xff1a;无刷新获取数据。AJAX 不是新的编程语言&#xff0c;而是一种将现有的标准组合在一…...

【代码随想录|贪心part04以后——重叠区间】

代代码随想录|贪心part04以后——重叠区间 一、part041、452.用最少数量的箭引爆气球2、435. 无重叠区间2、763.划分字母区间3、56. 合并区间4、738.单调递增的数字总结python 一、part04 1、452.用最少数量的箭引爆气球 452. 用最少数量的箭引爆气球 class Solution:def f…...

Denodo 连续 4 年获评 Gartner® 数据集成工具魔力象限™ 领导者

Gartner 在其 2023 年数据集成工具魔力象限中连续第四年将 Denodo 评为“领导者”。 Gartner 表示&#xff1a;“由于对数据编织架构、数据产品交付以及支持生成式 AI 的集成数据的需求即将到来&#xff0c;数据集成工具市场正在蓬勃发展。数据和分析领导者应该利用这项研究来…...

WHAT - React 函数与 useMemo vs useCallback

目录 一、介绍useMemo 与 useCallback 的区别示例代码useMemo 示例useCallback 示例 总结 二、当一个函数被作为依赖项useMemo 和 useCallback 的适用情况选择使用 useCallback 或 useMemo总结实际例子 一、介绍 在 React 中&#xff0c;useMemo 和 useCallback 是两个用于性能…...

系统分析师7:数学与经济管理

文章目录 1 图论应用1.1 最小生成树1.2 最短路径1.3 网络与最大流量 2 运筹方法2.1 线性规划2.2 动态规划2.2.1 供需平衡问题2.2.2 任务指派问题 3 预测与决策3.1 不确定型决策分析3.2 风险型决策3.2.1 决策树3.2.2 决策表 4 随机函数5 数学建模 1 图论应用 ①最小生成树 连接…...

一套简约的qt 蓝色qss方案

一套简约的qt 蓝色qss方案 直接使用qss代码 QMenu {background: qlineargradient(x1:0, y1:0, x2:0, y2:1,stop:0 rgba(255, 255, 255, 240),stop:0.2 rgba(255, 255, 255, 200),stop:0.6 rgba(255, 255, 255, 160),stop:1 rgba(255, 255, 255, 120));qproperty-effect: blur…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

React Native 开发环境搭建(全平台详解)

React Native 开发环境搭建&#xff08;全平台详解&#xff09; 在开始使用 React Native 开发移动应用之前&#xff0c;正确设置开发环境是至关重要的一步。本文将为你提供一份全面的指南&#xff0c;涵盖 macOS 和 Windows 平台的配置步骤&#xff0c;如何在 Android 和 iOS…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

【算法训练营Day07】字符串part1

文章目录 反转字符串反转字符串II替换数字 反转字符串 题目链接&#xff1a;344. 反转字符串 双指针法&#xff0c;两个指针的元素直接调转即可 class Solution {public void reverseString(char[] s) {int head 0;int end s.length - 1;while(head < end) {char temp …...

Python爬虫(二):爬虫完整流程

爬虫完整流程详解&#xff08;7大核心步骤实战技巧&#xff09; 一、爬虫完整工作流程 以下是爬虫开发的完整流程&#xff0c;我将结合具体技术点和实战经验展开说明&#xff1a; 1. 目标分析与前期准备 网站技术分析&#xff1a; 使用浏览器开发者工具&#xff08;F12&…...

Springcloud:Eureka 高可用集群搭建实战(服务注册与发现的底层原理与避坑指南)

引言&#xff1a;为什么 Eureka 依然是存量系统的核心&#xff1f; 尽管 Nacos 等新注册中心崛起&#xff0c;但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制&#xff0c;是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...

聊一聊接口测试的意义有哪些?

目录 一、隔离性 & 早期测试 二、保障系统集成质量 三、验证业务逻辑的核心层 四、提升测试效率与覆盖度 五、系统稳定性的守护者 六、驱动团队协作与契约管理 七、性能与扩展性的前置评估 八、持续交付的核心支撑 接口测试的意义可以从四个维度展开&#xff0c;首…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

Go 语言并发编程基础:无缓冲与有缓冲通道

在上一章节中&#xff0c;我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道&#xff0c;它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好&#xff0…...

[免费]微信小程序问卷调查系统(SpringBoot后端+Vue管理端)【论文+源码+SQL脚本】

大家好&#xff0c;我是java1234_小锋老师&#xff0c;看到一个不错的微信小程序问卷调查系统(SpringBoot后端Vue管理端)【论文源码SQL脚本】&#xff0c;分享下哈。 项目视频演示 【免费】微信小程序问卷调查系统(SpringBoot后端Vue管理端) Java毕业设计_哔哩哔哩_bilibili 项…...