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

[Linux进程概念]命令行参数|环境变量

目录

一、命令行参数

1.什么是命令行参数

2.为什么要有命令行参数

(1)书写的代码段

(2)实际的代码段

3.Linux中的命令行参数

二、环境变量

1.什么是环境变量?

2.获取环境变量

(1)指令获取

​编辑

​编辑

(2)代码获取

(3)系统调用获取

3.常见环境变量

4.和环境变量相关的指令

5.环境变量具有全局属性


一、命令行参数

1.什么是命令行参数

  • 命令行参数(Command-Line Arguments)是指在命令行界面(CLI,Command-Line Interface)中运行程序时,紧随程序名称之后传递给程序的额外信息或指令。这些参数允许用户自定义程序的行为,而无需修改程序代码。命令行参数通常用于指定输入文件、输出文件、配置选项、运行模式等。

2.为什么要有命令行参数

  • 同一个程序,可以根据得到的参数、选项的不同,表现不同的功能

(1)书写的代码段

int main()
{return 0;
}

(2)实际的代码段

int main(int argc,char*argv[])
{return 0;
}
  • argc(argument count),表示传递给程序的命令行参数的数量(包括程序本身的名称)。argc的值至少为1,因为第一个参数始终是程序的名称
  • argv(argument vector),存储了所有的命令行参数。argv数组中的每个元素都是一个指向字符串的指针,这些字符串包含了每一个传递给程序的命令行参数。argv[0]是程序的名称,argv[1]是传递给程序的第一个参数,以此类推

3.Linux中的命令行参数

ls -a -l 
  • 这就是Linux中的一个命令行参数,首先将其以字符串存储,被shell拿到后按照空格分隔,形成argv表,再得到argc参数


二、环境变量

1.什么是环境变量?

  • 环境变量(Environment Variables)是在操作系统中用来指定操作系统运行环境的一些参数。这些参数定义了程序运行时的各种配置,比如文件路径、系统资源位置、程序行为等。环境变量可以被操作系统及其上运行的程序读取和使用
int main(int argc,char*argv[],char*env[])
{}
  • 图示表示:

2.获取环境变量

(1)指令获取

env

echo $NAME

(2)代码获取

#include <stdio.h>
#include <unistd.h>
int main(int argc,char*argv[],char*env[])
{int i = 0;while(env[i]){printf("%s\n",env[i]);i++;sleep(1);}return 0;
}
#include <stdio.h>
#include <unistd.h>
int main(int argc,char *argv[])
{extern char** environ;int i = 0;while(environ[i]){printf("%s\n",environ[i]);i++;sleep(1);}return 0;
}

(3)系统调用获取

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{printf("%s\n",getenv("PATH"));return 0;
}
  • getenv函数
char *getenv(const char *name);

参数:

  • name:一个指向以空字符结尾的字符串的指针,该字符串包含要检索的环境变量的名称

返回值:

  • 如果环境变量存在,getenv 返回一个指向该环境变量值的指针
  • 如果环境变量不存在,getenv 返回 NULL

3.常见环境变量

  • PATH:指定命令的搜索路径。当用户在命令行中输入一个命令时,系统会在PATH环境变量中列出的目录中查找对应的可执行文件
  • HOME:指定用户的工作目录,即用户登录到系统时所处的默认目录
  • USER:指定当前登录用户的用户名
  • TEMP:指定临时文件夹的路径。当程序需要创建临时文件时,会在这个目录下创建
  • SHELL:当前用户的Shell类型,如/bin/bash
  • LANGUGE:语言相关的环境变量,多语言系统可以修改此环境变量来设置程序的语言偏好
  • MAIL:当前用户的邮件存放目录(在某些系统中可能不适用)
  • PS1:基本提示符,对于root用户是#,对于普通用户是$(主要在Linux和macOS中)
  • HISTSIZE:历史记录数(主要在Linux和macOS的shell中)
  • LOGNAME:当前用户的登录名(主要在Linux中)
  • HOSTNAME:指主机的名称(主要在Linux和macOS中)

4.和环境变量相关的指令

  • echo:显示某个环境变量值
  • enport:设置一个新的环境变量
  • env:显示所有的环境变量
  • unset:清楚环境变量
  • set:显示本地定义的shell变量和环境变量

5.环境变量具有全局属性

#include <stdio.h>
#include <unistd.h>
#include <stdlib.h>
int main()
{pid_t id = fork();if(id == 0){printf("%s\n",getenv("SHELL"));sleep(1);}else{printf("%s\n",getenv("SHELL"));sleep(1);}return 0;
}

http://www.mrgr.cn/news/56219.html

相关文章:

  • [Luogu 4630] APIO2018 铁人两项(广义圆方树)
  • 拥抱云开发的未来:腾讯云数据库、云模板与AI智能化的应用场景探索
  • TDengine 与北微传感达成合作,解决传统数据库性能瓶颈
  • MIT-OC Electrochemical Energy Systems4-3
  • OpenSEMBA :一个用于电磁场模拟的开源软件框架
  • C语言【调试】(个人笔记版)
  • netty的网络IO模型
  • 音乐之趣:叶珂吐槽伍佰,黄晓明笑对人生
  • Git 完整教程:版本管理、分支操作与远程仓库解析
  • 链动 2+1 模式、AI 智能名片与 S2B2C 商城小程序:提升企业产品方便性的创新策略
  • 云原生技术:nacos进化到servicemash
  • 多模态数据融合最新Nature来袭!四种方法就上岸,可别错过了这波好思路!
  • RunMe_About BIOS Connect Server Auto Setting.cmd
  • 端口频繁遭遇攻击,又该如何应对?
  • 骨传导耳机哪款好?五大热门畅销骨传导耳机推荐!
  • 无人机电机损耗!
  • JAVA接口,继承,和抽象类的使用
  • 自动裁剪图像的智能方法:Smart Image Cropping API指南
  • 跨境电商批量自养号测评是怎么做到的?
  • SpringCloud-负载均衡-ribbon
  • 智能优化算法-禁忌搜索算法(TS)(附源码)
  • 服务控制管理器
  • 应用假死?
  • 35岁的打工人,生了二胎然后被炒(职场吐槽漫画)
  • 有趣的css - 跷跷板加载动画
  • Mac电脑:资源库Library里找不到WebServer问题的解决