博客
关于我
Linux——命令行参数及环境变量
阅读量:791 次
发布时间:2023-02-02

本文共 1729 字,大约阅读时间需要 5 分钟。

Linux——命令行参数及环境变量

在编写C语言程序时,我们首先接触的重要概念是一个函数,通常是main函数。然而,你可能没有注意到,main函数其实可以接收一些参数。如果你曾经写过别人的函数,那么在传递参数方面你应该也不陌生,那么main函数同样可以接收参数,只是通常我们不经常使用。

####.Argc和ARGV

在Linux中,main函数可以接收两个主要的参数——argcargvargc是一个整数类型的变量,表示接收到的参数个数。而argv是一个字符指针数组,存储了每个参数的具体值。ARGV中的每一个元素都是一个字符串,如果在终端输入了一些选项,它们会被拆分成ARGV数组中的各个元素。

例如,当你在终端输入./myproc -a -b 123时,argc会等于4,而argv会是一个包含"myproc", "-a", "-b", "123"的数组。通过遍历argv数组,你可以逐个检查用户输入的参数。

环境变量

在Linux中,环境变量是一个非常重要的概念。环境变量可以配置程序运行所需的路径、自定义变量等信息。比如,曾经你在安装Java时可能遇到过环境变量的问题,Linux同样有环境变量的概念。

为什么需要添加./

你可能已经注意到,当你运行自定义编写的程序时,需要在程序名之前添加./,例如./myproc。这与环境变量密切相关。比如,当你在终端中输入lspwd时,不需要添加./,因为这些命令已经被预先配置好了路径,而路径信息是通过环境变量来存储的。

如何查看环境变量

要查看所有环境变量,你可以使用env命令。例如:

$ env

这将显示你目前登录时所拥有的所有环境变量。如PATHHOME等,每一个环境变量都有一定的作用。

获取环境变量的方法

环境变量可以通过不同的方式获取。首先,getenv函数可以用来编程获取环境变量的值。例如:

#include 
char *path = getenv("PATH");

main函数的第三个参数:char *env[]

在编程中,除了通过getenv获取环境变量,你还可以通过main函数的第三个参数char *env[]来获取所有环境变量。这个参数是全局指针,称为environ

全局指针environ

如果你不想通过main函数来获取环境变量,你可以直接使用全局指针environenviron指向一个字符指针数组,这个数组包含所有环境变量及其值。

应用场景:环境变量的配置

我们可以通过修改配置文件来配置环境变量。比如,~/.bashrc文件是bash shell配置文件之一,常用于定制用户的环境变量。你可以在这个文件中添加或修改环境变量。

例如,为了避免每次运行程序都需要添加./,你可以将程序的路径添加到PATH环境变量中。将以下内容添加到.bashrc文件中:

export PATH=$PATH:"/path/to/your/programs"

通过export导入环境变量

在shell中,你可以使用export命令将本地变量导入环境变量中。例如:

$ export MY_PATH=/my/own/program/path

此时,你的MY_PATH环境变量就会被添加到全局环境变量中。其他程序就可以通过MY_PATH来访问这个路径。

缺陷:重新登录后环境变量会丢失

在修改了路径并导入环境变量后,如果你重新登录系统,之前的环境变量会重新加载配置文件中的内容。因此,为了使环境变量持久,你需要将其添加到配置文件中,而不是仅仅在终端中输入命令。

如何使用unsetset命令

unset命令可以用来取消一个环境变量。例如:

$ unset MY_PATH

set命令则可以用来查看和修改环境变量。例如:

$ set

此时,set会显示所有当前有效的环境变量和本地变量。

总结

环境变量在程序运行中起着至关重要的作用。理解环境变量的使用方式,对于配置和优化程序运行环境至关重要。如果你的程序路径没有添加到环境变量中,那么通常需要在程序名之前添加./以指示当前目录。通过合理配置环境变量,你可以简化程序执行时的路径搜索过程,提高程序的便捷性。

转载地址:http://xkzfk.baihongyu.com/

你可能感兴趣的文章
LINQ/EF/Lambda 比较字符串日期时间大小
查看>>
linq实现分页加组合查询
查看>>
LinQ:list基础操作
查看>>
LintCode: Longest Common Substring
查看>>
Lintcode: O(1) Check Power of 2
查看>>
LintCode_114 不同的路径,115 不同的路径 II
查看>>
Linux /dev/sda3 100%解决
查看>>
linux ACL权限,设定,删除
查看>>
linux andorid studio创建快捷健
查看>>
linux awk命令详解2
查看>>
linux bash shell 特殊字符大全
查看>>
linux bash: sqlplus: command not found 错误处理
查看>>
linux bg和fg命令
查看>>
Linux Bridge KVM虚拟化环境部署
查看>>
linux c 正则
查看>>
Linux cat 命令的进化版:Bat 0.25 正式发布,行压缩功能亮点十足!
查看>>
linux centos tomcat8配置apr模式
查看>>
linux centos 安装 docker-compose 1.27.4
查看>>
linux centos6.4 php连接sql server2008
查看>>
Linux centos7 防火墙设置
查看>>