当前位置: 首页 > 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…...

云计算——弹性云计算器(ECS)

弹性云服务器&#xff1a;ECS 概述 云计算重构了ICT系统&#xff0c;云计算平台厂商推出使得厂家能够主要关注应用管理而非平台管理的云平台&#xff0c;包含如下主要概念。 ECS&#xff08;Elastic Cloud Server&#xff09;&#xff1a;即弹性云服务器&#xff0c;是云计算…...

IGP(Interior Gateway Protocol,内部网关协议)

IGP&#xff08;Interior Gateway Protocol&#xff0c;内部网关协议&#xff09; 是一种用于在一个自治系统&#xff08;AS&#xff09;内部传递路由信息的路由协议&#xff0c;主要用于在一个组织或机构的内部网络中决定数据包的最佳路径。与用于自治系统之间通信的 EGP&…...

蓝牙 BLE 扫描面试题大全(2):进阶面试题与实战演练

前文覆盖了 BLE 扫描的基础概念与经典问题蓝牙 BLE 扫描面试题大全(1)&#xff1a;从基础到实战的深度解析-CSDN博客&#xff0c;但实际面试中&#xff0c;企业更关注候选人对复杂场景的应对能力&#xff08;如多设备并发扫描、低功耗与高发现率的平衡&#xff09;和前沿技术的…...

在WSL2的Ubuntu镜像中安装Docker

Docker官网链接: https://docs.docker.com/engine/install/ubuntu/ 1、运行以下命令卸载所有冲突的软件包&#xff1a; for pkg in docker.io docker-doc docker-compose docker-compose-v2 podman-docker containerd runc; do sudo apt-get remove $pkg; done2、设置Docker…...

【HarmonyOS 5 开发速记】如何获取用户信息(头像/昵称/手机号)

1.获取 authorizationCode&#xff1a; 2.利用 authorizationCode 获取 accessToken&#xff1a;文档中心 3.获取手机&#xff1a;文档中心 4.获取昵称头像&#xff1a;文档中心 首先创建 request 若要获取手机号&#xff0c;scope必填 phone&#xff0c;permissions 必填 …...

动态 Web 开发技术入门篇

一、HTTP 协议核心 1.1 HTTP 基础 协议全称 &#xff1a;HyperText Transfer Protocol&#xff08;超文本传输协议&#xff09; 默认端口 &#xff1a;HTTP 使用 80 端口&#xff0c;HTTPS 使用 443 端口。 请求方法 &#xff1a; GET &#xff1a;用于获取资源&#xff0c;…...

免费PDF转图片工具

免费PDF转图片工具 一款简单易用的PDF转图片工具&#xff0c;可以将PDF文件快速转换为高质量PNG图片。无需安装复杂的软件&#xff0c;也不需要在线上传文件&#xff0c;保护您的隐私。 工具截图 主要特点 &#x1f680; 快速转换&#xff1a;本地转换&#xff0c;无需等待上…...

比较数据迁移后MySQL数据库和OceanBase数据仓库中的表

设计一个MySQL数据库和OceanBase数据仓库的表数据比较的详细程序流程,两张表是相同的结构,都有整型主键id字段,需要每次从数据库分批取得2000条数据,用于比较,比较操作的同时可以再取2000条数据,等上一次比较完成之后,开始比较,直到比较完所有的数据。比较操作需要比较…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

ZYNQ学习记录FPGA(二)Verilog语言

一、Verilog简介 1.1 HDL&#xff08;Hardware Description language&#xff09; 在解释HDL之前&#xff0c;先来了解一下数字系统设计的流程&#xff1a;逻辑设计 -> 电路实现 -> 系统验证。 逻辑设计又称前端&#xff0c;在这个过程中就需要用到HDL&#xff0c;正文…...