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

Detectron2避坑指南:从环境配置到成功运行实例分割的全流程记录

Detectron2实战避坑手册&#xff1a;从零搭建实例分割环境的完整路径 第一次接触Detectron2时&#xff0c;我被它强大的实例分割能力吸引&#xff0c;却在环境配置阶段遭遇了无数"暗礁"。记得某个深夜&#xff0c;面对屏幕上不断跳出的CUDA版本冲突报错&#xff0c;我…...

免费方法和付费工具处理顽固AI率,差距有多大

顽固AI率&#xff0c;有没有必要付费&#xff1f; 这个问题的答案&#xff0c;取决于你有多少时间&#xff0c;以及你能接受多少不确定性。这篇文章用数据说话。 免费方法&#xff1a;自己改写 方法&#xff1a;自己逐段阅读&#xff0c;换词改句&#xff0c;加口语化表达 …...

[颠覆性定位技术] Android厘米级定位方案:从算法移植到产业落地

[颠覆性定位技术] Android厘米级定位方案&#xff1a;从算法移植到产业落地 【免费下载链接】RtkGps Playing with rtklib on android 项目地址: https://gitcode.com/gh_mirrors/rt/RtkGps 在移动互联网与物联网深度融合的今天&#xff0c;位置服务已从传统的米级精度向…...

基于Stackelberg博弈与需求响应的光伏用户群内部优化定价模型研究

MATLAB代码&#xff1a;基于Stackelberg博弈的光伏用户群优化定价模型关键词&#xff1a;光伏用户群 内部电价 需求响应 斯塔克伯格博弈 参考文档&#xff1a;《基于Stackelberg博弈的光伏用户群优化定价模型》王程 刘念 仿真平台&#xff1a;MATLAB Cplex 主要内容&#xff1…...

弃投《Nature Communications》转投它?这些期刊正在让这批科研人弯道超车!

《Science Advances》影响因子分区自引率12.5JCR Q1 / 综合1区 1.6%研究方向&#xff1a;多学科综合、自然科学与工程期刊亮点&#xff1a;AAAS顶刊&#xff0c;年发文约2000篇&#xff0c;国人占比约30%&#xff0c;审稿3-5个月&#xff0c;OA发表&#xff0c;是各学科冲一区顶…...

2026届毕业生推荐的五大降重复率方案推荐榜单

Ai论文网站排名&#xff08;开题报告、文献综述、降aigc率、降重综合对比&#xff09; TOP1. 千笔AI TOP2. aipasspaper TOP3. 清北论文 TOP4. 豆包 TOP5. kimi TOP6. deepseek 为能切实且有效地把文本里AIGC的比例给降下来&#xff0c;特地给出建议采用多维度的策略&am…...

5分钟上手BilibiliDown:Windows/Mac/Linux三平台通用的B站视频下载神器

5分钟上手BilibiliDown&#xff1a;Windows/Mac/Linux三平台通用的B站视频下载神器 【免费下载链接】BilibiliDown (GUI-多平台支持) B站 哔哩哔哩 视频下载器。支持稍后再看、收藏夹、UP主视频批量下载|Bilibili Video Downloader &#x1f633; 项目地址: https://gitcode.…...

工业数据 vs. 传统资源:为什么数据才是未来的稀缺资产

从成本投入到战略资产——工业数据能成为"新石油"吗&#xff1f; “Data is the new oil”&#xff0c;数据是新石油这个比喻&#xff0c;最早由英国数学家 Clive Humby 在 2006 年提出。但真正让这一概念深入人心的&#xff0c;是《经济学人》2017 年的封面文章&am…...

遥感图像分割实战:用ResNet50和VGG16改进UNet,哪个模型效果更好?

遥感图像分割实战&#xff1a;UNet架构下ResNet50与VGG16骨干网络的深度对比 当我们需要从高空视角中精确识别建筑物轮廓时&#xff0c;遥感图像分割技术就像给计算机装上"透视眼"。在众多解决方案中&#xff0c;UNet及其变体已成为医学影像和遥感领域的黄金标准。但…...

Taskwarrior完整国际化指南:如何实现多语言任务管理

Taskwarrior完整国际化指南&#xff1a;如何实现多语言任务管理 【免费下载链接】taskwarrior Taskwarrior - Command line Task Management 项目地址: https://gitcode.com/gh_mirrors/ta/taskwarrior Taskwarrior是一款功能强大的命令行任务管理工具&#xff0c;支持完…...