【Linux系统编程】环境变量--1

简介: 【Linux系统编程】环境变量--1

介绍


       环境变量是一个系统预定义的全局参数,系统自己开辟空间,将它存在于所有的Shell中,具有继承性,可以存储有关shell会话和工作环境的信息。


       环境变量不是只有一个,而是一堆,是系统内具有特殊用途的变量。如:PATH、PWD、USER、HOME等。


环境变量的认识


       首先,要说明,每当启动系统时,环境变量就已被系统开辟完毕,我们可使用env指令进行查看系统下的所有环境变量以及环境变量对应的数据。


[zhujunhao@bogon code]$ env
........
USER=zhujunhao
PATH=.........
PWD=/home/zhujunhao/code
HOME=/home/zhujunhao
........


       查看单个环境变量的数据时,只需输入:echo 环境变量。如echo环境变量。如echo PATH、echo $PWD等。


[zhujunhao@bogon code]$ echo $USER
zhujunhao   
[zhujunhao@bogon code]$ echo $PWD
/home/zhujunhao/code

       我们也可以创建环境变量。在Linux中,export命令用于创建环境变量,unset删除环境变量。如export ENV=12,创建存放12的环境变量,unset ENV删除ENV环境变量。


[zhujunhao@bogon code]$ export ENV=12
[zhujunhao@bogon code]$ echo $ENV
12
[zhujunhao@bogon ~]$ unset HHH   //删除HHH环境变量


       每个环境变量对应的数据就是其功能的代表,它具有特殊的意义,下面会详细介绍其功能。


命令行参数


      在认识环境变量的功能前,我们来学习一下命令行参数。在Linux中,在我们启动的非图形化界面时的命令行时,实际上就是bash(或shell)给我们输出的命令行字符串,对应的小部分代码样例如下:


printf("[zhujunhao@bogon code]$ ");//输出指令行,不同机器的数据可能有些不同
char buffer[1024];//指令数组,存入相关指令的字符串
scanf("%s, buffer");//从输入流中输入指令


       该命令行还可以与我们写入的代码程序联系起来。在平常我们写入C/C++程序时,主函数中其实也可以有参数。main主函数中的参数是从bash指令行中维护、创建、传参,即这些参数通常在命令行中传递给程序,并可以通过main函数的参数进行访问。样例如下:


int main(int n, char* news[],char* S[]) //其中,第一个整型参数n表示命令行参数的数量。第二个参数news是一个指向命令行参数字符串数组的指针,命令行中输入的字符串都将放入里面。第三个参数S存放的就是系统下的环境变量

       我们先来观察前两个参数的使用。当我们在命令行中运行程序时,输入的参数将会传递给程序,下面的代码是依次访问输入数据的代码。如下:


[zhujunhao@bogon code]$ cat test.cpp
#include <iostream>
#include <cstdio>
using namespace std;
int main(int n, char* news[])
{
    /*int i = 0;
    for (i = 0; i < n; i++)
    {
        cout << "news[" << i << "]: " << news[i] << endl;
    }*/
    //以下效果一样
    for (int i = 0; news[i]; i++)
    {
        cout << "news[" << i << "]: " << news[i] << endl;
    }
    return 0;
}
[zhujunhao@bogon code]$ g++ -o test.exe test.cpp
//以下是输出指令行中的内容
[zhujunhao@bogon code]$ ./test.exe
news[0]: ./test.exe  
[zhujunhao@bogon code]$ ./test.exe -a -b -c -d -e
news[0]: ./test.exe
news[1]: -a
news[2]: -b
news[3]: -c
news[4]: -d
news[5]: -e


       这种使用通常在命令代码中最常见,通过不同选项,让相同的程序执行内部不同的功能。在bash的指令中,运用的其实就是上面的道理来实现命令逻辑,即命令行参数是指令选项的基础。


[zhujunhao@bogon code]$ cat code.cpp   //系统的源代码
#include <iostream>
#include <cstring>
using namespace std;
int main(int n, char *s[])
{
    if (n != 2)
    {
        cout << "Error:\n\tPlease Inoput" << endl;
    }
    else if (strcmp("-1", s[1]) == 0)
    {
        cout << "test.exe: -1" << endl;
    }
    else if (strcmp("-2", s[1]) == 0)
    {
        cout << "test.exe: -2" << endl;
    }
    else if (strcmp("-3", s[1]) == 0)
    {
        cout << "test.exe: -3" << endl;
    }
    else
    {
        cout << "unknow" << endl;
    }
    return 0;   
}
[zhujunhao@bogon code]$ g++ -o code.exe code.cpp
[zhujunhao@bogon code]$ ./code.exe
Error:
    Please Inoput
//下面的-1、-2、-3、-4可理解为对应设计的选项功能,而./code.exe为设计对应的命令
[zhujunhao@bogon code]$ ./code.exe -1 
test.exe: -1
[zhujunhao@bogon code]$ ./code.exe -2
test.exe: -2
[zhujunhao@bogon code]$ ./code.exe -3
test.exe: -3
[zhujunhao@bogon code]$ ./code.exe -4
unknow

       main函数中存放环境变量的第三个参数使用样例如下,该代码的功能是输出系统下的所有环境变量,也就是说,环境变量可以被子进程进行下去。


[zhujunhao@bogon code]$ cat test.cpp
//以下代码的S2[i]将会输出所有的环境变量
#include <iostream>
using namespace std;
int main(int n, char *S1[], char *S2[])
{
    for (int i = 0; S2[i]; i++)
    {
        cout << "S2[" << i << "]:  " << S2[i] << endl;
    }
    return 0;
}

【Linux系统编程】环境变量--2 https://developer.aliyun.com/article/1424730?spm=a2c6h.13148508.setting.17.214f4f0eXZtIwY

相关文章
|
7天前
|
Linux
在 Linux 系统中,“cd”命令用于切换当前工作目录
在 Linux 系统中,“cd”命令用于切换当前工作目录。本文详细介绍了“cd”命令的基本用法和常见技巧,包括使用“.”、“..”、“~”、绝对路径和相对路径,以及快速切换到上一次工作目录等。此外,还探讨了高级技巧,如使用通配符、结合其他命令、在脚本中使用,以及实际应用案例,帮助读者提高工作效率。
31 3
|
7天前
|
监控 安全 Linux
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景
在 Linux 系统中,网络管理是重要任务。本文介绍了常用的网络命令及其适用场景,包括 ping(测试连通性)、traceroute(跟踪路由路径)、netstat(显示网络连接信息)、nmap(网络扫描)、ifconfig 和 ip(网络接口配置)。掌握这些命令有助于高效诊断和解决网络问题,保障网络稳定运行。
25 2
|
17天前
|
Linux 应用服务中间件 Shell
linux系统服务二!
本文详细介绍了Linux系统的启动流程,包括CentOS 7的具体启动步骤,从BIOS自检到加载内核、启动systemd程序等。同时,文章还对比了CentOS 6和CentOS 7的启动流程,分析了启动过程中的耗时情况。接着,文章讲解了Linux的运行级别及其管理命令,systemd的基本概念、优势及常用命令,并提供了自定义systemd启动文件的示例。最后,文章介绍了单用户模式和救援模式的使用方法,包括如何找回忘记的密码和修复启动故障。
39 5
linux系统服务二!
|
17天前
|
Linux 应用服务中间件 Shell
linux系统服务!!!
本文详细介绍了Linux系统(以CentOS7为例)的启动流程,包括BIOS自检、读取MBR信息、加载Grub菜单、加载内核及驱动程序、启动systemd程序加载必要文件等五个主要步骤。同时,文章还对比了CentOS6和CentOS7的启动流程图,并分析了启动流程的耗时。此外,文中还讲解了Linux的运行级别、systemd的基本概念及其优势,以及如何使用systemd管理服务。最后,文章提供了单用户模式和救援模式的实战案例,帮助读者理解如何在系统启动出现问题时进行修复。
38 3
linux系统服务!!!
|
7天前
|
安全 网络协议 Linux
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。
本文详细介绍了 Linux 系统中 ping 命令的使用方法和技巧,涵盖基本用法、高级用法、实际应用案例及注意事项。通过掌握 ping 命令,读者可以轻松测试网络连通性、诊断网络问题并提升网络管理能力。
26 3
|
10天前
|
安全 Linux 数据安全/隐私保护
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。
在 Linux 系统中,查找文件所有者是系统管理和安全审计的重要技能。本文介绍了使用 `ls -l` 和 `stat` 命令查找文件所有者的基本方法,以及通过文件路径、通配符和结合其他命令的高级技巧。还提供了实际案例分析和注意事项,帮助读者更好地掌握这一操作。
29 6
|
10天前
|
Linux
在 Linux 系统中,`find` 命令是一个强大的文件查找工具
在 Linux 系统中,`find` 命令是一个强大的文件查找工具。本文详细介绍了 `find` 命令的基本语法、常用选项和具体应用示例,帮助用户快速掌握如何根据文件名、类型、大小、修改时间等条件查找文件,并展示了如何结合逻辑运算符、正则表达式和排除特定目录等高级用法。
36 6
|
11天前
|
机器学习/深度学习 自然语言处理 Linux
Linux 中的机器学习:Whisper——自动语音识别系统
本文介绍了先进的自动语音识别系统 Whisper 在 Linux 环境中的应用。Whisper 基于深度学习和神经网络技术,支持多语言识别,具有高准确性和实时处理能力。文章详细讲解了在 Linux 中安装、配置和使用 Whisper 的步骤,以及其在语音助手、语音识别软件等领域的应用场景。
42 5
|
11天前
|
缓存 运维 监控
【运维必备知识】Linux系统平均负载与top、uptime命令详解
系统平均负载是衡量Linux服务器性能的关键指标之一。通过使用 `top`和 `uptime`命令,可以实时监控系统的负载情况,帮助运维人员及时发现并解决潜在问题。理解这些工具的输出和意义是确保系统稳定运行的基础。希望本文对Linux系统平均负载及相关命令的详细解析能帮助您更好地进行系统运维和性能优化。
32 3
|
11天前
|
监控 网络协议 算法
Linux内核优化:提升系统性能与稳定性的策略####
本文深入探讨了Linux操作系统内核的优化策略,旨在通过一系列技术手段和最佳实践,显著提升系统的性能、响应速度及稳定性。文章首先概述了Linux内核的核心组件及其在系统中的作用,随后详细阐述了内存管理、进程调度、文件系统优化、网络栈调整及并发控制等关键领域的优化方法。通过实际案例分析,展示了这些优化措施如何有效减少延迟、提高吞吐量,并增强系统的整体健壮性。最终,文章强调了持续监控、定期更新及合理配置对于维持Linux系统长期高效运行的重要性。 ####