Linux:命令行参数与环境变量

上篇文章:Linux:进程优先级与进程切换与调度

目录

1.命令行参数

2.环境变量

2.1基本概念

2.2Linux常见环境变量

2.2.1PATH

2.2.1.1修改环境变量

2.2.2HOME

2.3写一个指定的只能被我执行的可执行程序

2.3.1getenv

2.4获取,设置环境变量

方法一:

方法二:通过第三方变量environ获取

方法三:

3.理解环境变量

3.1和环境变量相关的命令

3.2本地变量

3.3拓展

3.4修改环境变量的配置文件

4.内建命令


1.命令行参数

给main函数传递的参数我们称之为命令行参数

运行结果:

运用到命令行参数的实例:

它们实现了多选项的功能,而解析命令行参数,通常是bash进程来做的。

2.环境变量

2.1基本概念

变量是由变量名和变量的内容组成的->在此章变量的内容是和系统相关的内容。

环境变量一般是指在操作系统中用来指定操作系统运行环境的一些参数,其属于系统级变量,保存系统启动和运行的核心参数,通常具有全局特性。

在windows中环境变量:

2.2Linux常见环境变量

2.2.1PATH

PATH:指定命令的搜索路径

查看PATH:

当我们运行系统的命令时,往往直接输入命令即可:

但是在运行我们生成的可执行程序时却需要指定路径:

原因是因为运行系统命令时,它会到PATH中寻找相对应的路径,实际上命令为:

如果想让我们的可执行程序也像系统命令一样,可以将其路径切换到PATH相对应的路径下:

2.2.1.1修改环境变量

如果将我们当前所在路径放到环境变量中,那么在我们当前路径下所有操作都可以像系统命令一样不需要带路径执行。不过在命令行当中修改环境变量,是内存级的修改,重启xshell会恢复。

修改示例:

回顾我们的which命令,它之所以能够知道命令所在路径,实际上就是在遍历环境变量PATH:

2.2.2HOME

HOME:指定用户的主工作目录(即用户登录到Linux系统中时,默认的目录)

PED:记录当前用户所处路径

要想查看当前系统的所有环境变量,输入命令env即可。

展示部分env:

  1. XDG_SESSION_ID

这是由 systemd 等现代初始化系统生成的会话 ID,用来唯一标识当前用户的登录会话,主要用于桌面环境或多用户管理。

  1. HOSTNAME

表示当前 Linux 系统的主机名,这里是 VM-16-10-centos,说明这是一个运行在 CentOS 系统上的云服务器或虚拟机。

  1. TERM

定义了当前终端的类型,这里是xterm。它告诉系统终端支持哪些功能(比如颜色、光标移动等),让应用程序能正确输出内容。

  1. SHELL

指明当前用户默认使用的 Shell 程序路径,这里是 /bin/bash,这是 Linux系统中最常用的命令解释器。

  1. HISTSIZE

设置了命令历史记录的最大条数,这里是3000,意味着你的终端会记住最近输入的3000条命令,超出后会自动覆盖最早的记录。

  1. SSH_CLIENT

当你通过 SSH 连接服务器时,这个变量会记录客户端的 IP 地址、客户端端口和服务器的监听端口,格式为[客户端IP][客户端端口][服务器端口]。

  1. 0LDPWD

保存了你上一次所在的工作目录路径, 这里是 /home/xxx404/linux-learning。 你可以用 cd -命令快速回到这个目录。

  1. SSH_TTY

表示当前 SSH 会话所关联的终端设备文件,这里是 /dev/pts/0。 pts 是伪终端,用于远程连接或图形界面中的终端窗口。

  1. USER

显示当前登录的用户名,这里是xxx404。

  1. LD_LIBRARY_PATH

这是一个动态链接库的搜索路径。它告诉系统在哪里查找程序运行时需要的.so库文件。这里的路径是:/home/xxx404/ .VimForCp,冒号开头表示在系统默认路径之前先搜索这个自定义目录。

  1. LS_CoLORS

定义了 ls 命令显示不同类型文件和目录时的颜色编码。

2.3写一个指定的只能被我执行的可执行程序

2.3.1getenv

获得一个环境的内容

2.4获取,设置环境变量

获得整个系统所对应的环境变量信息:

方法一:

方法二:通过第三方变量environ获取

libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时要用extern声明。

方法三:

3.理解环境变量

任何进程启动,都会存在两张表: 命令行参数表和环境变量表。

它们都由bash进程提供,当用户输入命令字符串时,bash进程会解析命令行参数表,当一个一个环境变量值输入时,会构建按环境变量表(char *env[])。

而在命令行中启动的进程都是bash的子进程,所以环境变量通常具有全局属性,本质是环境变量可以被子进程继承下去。

上述代码中OK的环境变量是null,此时,我们使用命令export给调用进程,导出新的环境变量。

再通过unset清除设置的环境变量:

3.1和环境变量相关的命令

echo:显示某个环境变量值

export:设置一个新的环境变量

env:显示所有环境变量

unset:清除环境变量

set:显示本地定义的shell变量和环境变量

3.2本地变量

本地变量只在本bash内部有效

本地变量的使用示例:

这里的i=0,就是在定义本地变量。

3.3拓展

环境变量是从系统的特定的配置文件中出来的,每一次登录,OS都会给我们提供一个命令行参数服务。

配置文件部分举例:.bash......

获取配置文件的顺序:

3.4修改环境变量的配置文件

此时断开xshell的链接,再登录:

4.内建命令

在Linux中由两种命令,普通命令和内建命令(export,env,cd......)。而内建命令不是通过子进程来执行的,往往由bash自己提供,自己亲自执行(自己调用自己内部的函数)。

本章完。

相关推荐
j_xxx404_2 小时前
Linux:进程虚拟地址空间|虚拟内存管理
linux·运维·服务器
江畔何人初2 小时前
pod的定义以及创建过程
linux·运维·云原生
德尔塔大雨淋2 小时前
VLLM 中的module PASS 和FUN PASS
linux·服务器·vllm
末日汐2 小时前
linux线程
linux·运维
玉梅小洋2 小时前
CentOS :yum源配置及验证指南
linux·运维·centos·yum
zxsz_com_cn2 小时前
设备预测性维护算法核心功能有哪些?六大模块拆解智能运维的“技术骨架”
运维·算法
自可乐2 小时前
n8n全面学习教程:从入门到精通的自动化工作流引擎实践指南
运维·人工智能·学习·自动化
沐芊屿2 小时前
华为交换机配置M-LAG
服务器·网络·华为
枷锁—sha3 小时前
【SRC】越权漏洞检测
运维·服务器·网络·安全·网络安全·系统安全