【Linux】linux进程概念(环境变量详解)

本文是小编巩固自身而作,如有错误,欢迎指出!

目录

一、基本概念

1.基本格式

2.作用范围分类

​编辑3.常见环境变量

二、常见操作指令

1.查看环境变量

2.临时设置环境变量(当前会话有效)

[3. 永久设置(用户级 / 系统级)](#3. 永久设置(用户级 / 系统级))

三、命令行参数

总结


一、基本概念

Linux 环境变量是系统中以键值对(KEY=value) 形式存储的动态配置参数,用于定义程序运行环境、路径、用户信息等,子进程会自动继承父进程的环境变量。

1.基本格式

bash 复制代码
# 定义格式(变量名大写,值无空格)
VAR_NAME=value
# 含空格需加引号
VAR_NAME="hello world"

2.作用范围分类

3.常见环境变量

二、常见操作指令

1.查看环境变量

bash 复制代码
# 查看单个变量(最常用)
echo $PATH
echo $HOME

# 查看所有环境变量
env
printenv

# 查看所有变量(环境变量 + Shell 变量 + 函数)
set

我们在下图可以看到:

2.临时设置环境变量(当前会话有效)

bash 复制代码
# 定义 Shell 变量(仅当前 Shell 可见,子进程不可继承)
MY_VAR="test"

# 导出为环境变量(子进程可继承)
export MY_VAR="test"

# 一步完成定义+导出
export MY_VAR="hello linux"

# 追加路径到 PATH(避免覆盖原有值)
export PATH=$PATH:/new/path/directory

比如我们进行下列演示:

导出新环境变量

追加路径到PATH

3. 永久设置(用户级 / 系统级)

一般我们直接在命令行设置的环境变量都是临时的环境变量,在Xshell重启后会自动重置

而,要设置永久的环境变量,我们必须在vim中进行操作

(1)用户级(仅当前用户)

bash 复制代码
# 编辑 ~/.bashrc(Bash)或 ~/.zshrc(Zsh)
vim ~/.bashrc

# 在文件末尾添加
export MY_VAR="永久生效"
export PATH=$PATH:/opt/myapp/bin

# 使配置立即生效(无需重新登录)
source ~/.bashrc
# 或
. ~/.bashrc

(2)系统级(所有用户)

bash 复制代码
# 编辑系统配置文件(需 root 权限)
sudo vim /etc/profile

# 添加变量
export SYSTEM_VAR="系统全局变量"

# 生效
source /etc/profile

三、命令行参数

命令行参数 就是你在终端执行命令时,跟在命令后面的额外信息,用来告诉命令:要做什么、怎么做、操作哪个文件。

就举一个我们常见的例子:main函数

main函数的 标准写法应该是这样的:

cpp 复制代码
int main(int argc, char *argv[])

两个参数:

  1. argc :argument count → 命令行参数的个数
  2. argv :argument vector → 存储所有参数的字符串数组

我们举一个很直白的例子:

假如你在终端运行程序:

bash 复制代码
./test hello 123 world

那么:

  • argc = 4
  • argv[0] = "./test"
  • argv[1] = "hello"
  • argv[2] = "123"
  • argv[3] = "world"
cpp 复制代码
#include <stdio.h>

int main(int argc, char *argv[])
{
    printf("参数总个数:%d\n", argc);

    // 遍历所有参数
    for (int i = 0; i < argc; i++)
    {
        printf("argv[%d] = %s\n", i, argv[i]);
    }

    return 0;
}

Linux / Unix 下,main 还可以有第三个参数 ,用来直接获取系统环境变量

cpp 复制代码
int main(int argc, char *argv[], char *envp[])
  • envp[]:存储所有系统环境变量的字符串数组
  • 格式:"HOME=/home/user""PATH=/usr/bin:..."

测试代码:

cpp 复制代码
#include <stdio.h>

int main(int argc, char *argv[], char *envp[])
{
    // 打印所有环境变量
    for (int i = 0; envp[i] != NULL; i++)
    {
        printf("%s\n", envp[i]);
    }
    return 0;
}

总结

  • main(int argc, char *argv[]) 是 C 语言接收命令行参数的标准形式
  • argc = 参数数量,argv = 参数内容数组
  • Linux 下可加第三个参数 envp[] 获取环境变量

本次分享就到这里结束了,后续会继续更新,感谢阅读!

相关推荐
高铭杰4 小时前
万物皆可KV(2)SurrealDB 存储布局分析
linux·服务器
万事可爱^5 小时前
Claude 新发布的 Opus 5,系统提示语删了 80%,半价还能逼近 Fable 5
android·服务器·数据库·人工智能·claude
Jerry小杰5 小时前
运维神器|单端口搞定多台内网SSH!frp端口复用终极教程
运维·ssh
无小道5 小时前
深入解析操作系统文件缓冲区:页缓存、基数树与f_pos的协同设计
linux·缓存·文件缓冲区
Python私教6 小时前
Blender模型导入Godot完整教程:GLB、BLEND与继承场景怎么选
运维·godot·blender
其实防守也摸鱼6 小时前
GitHub开源项目破圈方法论:从技术自嗨到生态共赢
服务器·数据库·学习·开源·github·命令行·linux系统
爱写代码的森6 小时前
鸿蒙三方库 | harmony-utils之PasteboardUtil剪贴板数据读写详解
服务器·华为·harmonyos·鸿蒙·huawei
AOwhisky6 小时前
Linux(CentOS)系统管理入门笔记(第十二期)——系统管理工具与软件包管理(上篇):Cockpit 与 RPM 包管理
linux·运维·笔记·centos·云计算
寒水馨6 小时前
Linux下载、安装godot-4.7.1-stable(附安装包Godot_v4.7.1-stable_linux.x86_64.zip)
linux·游戏引擎·godot·游戏开发·2d游戏·3d游戏·godot engine
念恒123066 小时前
Socket编程UDP(中)
linux·网络协议·udp