【Linux系统编程】环境变量的组织方式

这篇具有很好参考价值的文章主要介绍了【Linux系统编程】环境变量的组织方式。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

environ和getenv函数

        在Linux中,environ是一个全局的外部变量,其类型为char**,存储着系统的环境变量。除了使用主函数中的第三个参数外,我们也可使用environ函数直接访问系统的环境变量。

        注意:这里在代码内部使用environ时,需要先定义environ。在系统下的libc中定义的全局变量environ指向环境变量表,environ没有包含在任何头文件中,所以在使用时要用extern声明。定义如下:

extern char **environ;

        getenv是通过指定的环境变量名称来获取环境变量,在头文件<stdlib.h>中。

环境变量表

        环境变量表简称环境表,它是一个存储环境变量的数据结构,类似于一个数组,其中每个元素都是一个环境变量,而environ指针指向的就是存放环境变量的数据结构,而getenv指向表中指定名称的环境变量。

【Linux系统编程】环境变量的组织方式,linux,运维,服务器

        下面代码通过使用environ来获取系统下的所有环境变量。

#include <iostream>
#include <unistd.h>
using namespace std;
int main()
{
    extern char **environ;
    for (int i = 0; environ[i]; i++)
    {
        cout << "environ[" << i << "]: " << environ[i] << endl;
    }
    return 0;
}

        下面使用getenv获取表中的指定名称的环境变量

[zhujunhao@bogon code]$ cat code.cpp
#include <iostream>
#include <cstring>
#include <cstdlib>
using namespace std;
int main()
{
    char*s = getenv("PATH");   //访问PATH环境变量
    cout << s << endl;
    return 0;
}
[zhujunhao@bogon code]$ g++ -o code.exe code.cpp

[zhujunhao@bogon code]$ ./code.exe
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zhujunhao/.local/bin:/home/zhujunhao/bin
[zhujunhao@bogon code]$ echo $PATH   //可看出,代码输出的内容与之相同
/usr/local/bin:/usr/local/sbin:/usr/bin:/usr/sbin:/bin:/sbin:/home/zhujunhao/.local/bin:/home/zhujunhao/bin

 

环境变量的存放

        Linux系统下的环境变量天然都会被保存在磁盘的文件中。只有登入系统时,bash/shell进程才会存在,也就是说只有登入系统的时候,才会分配bash/shell程序,而环境变量就在bash/shell的上下文中。当开始登入系统时,所有的环境变量都是从磁盘中的某些脚本或配置文件中来的。因此,每当重启系统时,环境变量都会被更新。

        通常,我们可以使用 set 指令显示本地定义的shell变量和环境变量,但要注意的是,本地定义的shell变量不能被子进程进行下去,它只在本地bash内部有效。

        下面我们来认识一下 bash_profile 文件。

        在Linux系统中,.bash_profile是一个Shell脚本文件,它被用于在用户登录时设置用户的环境变量和配置选项。它是bash或shell的配置文件之一,通常位于用户的家目(~/.bash_profile

        当用户登录时,bash_profile文件会被自动执行,允许用户设置环境变量等。通过编辑bash_profile文件,用户可以定制自己的shell会话环境,以便更方便地使用命令行工具和应用程序。下面是代码演示:

首先,我们要进行配置环境变量

[zhujunhao@bogon ~]$ cat .bash_profile

//下面是系统下的源代码
# .bash_profile

# Get the aliases and functions
if [ -f ~/.bashrc ]; then
    . ~/.bashrc
fi

# User specific environment and startup programs

PATH=$PATH:$HOME/.local/bin:$HOME/bin

export PATH

//下面是我们设置的一个简单的环境变量MY

MY=yiyezhiqiu
export MY 
因为当系统启动时,环境变量就已执行,因此,配置完毕之后要重启系统才可被运行

[zhujunhao@bogon ~]$ echo $MY
yiyezhiqiu
文章来源地址https://www.toymoban.com/news/detail-802761.html

到了这里,关于【Linux系统编程】环境变量的组织方式的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Linux从入门到放弃】Linux操作系统环境变量一文详解

    🧑‍💻作者: @情话0.0 📝专栏:《Linux从入门到放弃》 👦个人简介:一名双非编程菜鸟,在这里分享自己的编程学习笔记,欢迎大家的指正与点赞,谢谢!   提到环境变量,大家应该都不会陌生,不管学习Java还是Phython都需要去安装环境变量,尤其是我自己在做深度学习

    2024年02月05日
    浏览(51)
  • Linux系统安装conda,镜像设置,环境变量

    1,我们现在学习Linux系统,首先得有个服务器的账号,这个要看自己的学校里面有没有专门做生信的课题组问问,或者去淘宝买,或者去那个组学大讲堂公众号里面有服务器租借的(没广告),租个好点的服务器,价格估计5000-10000半年不等的价格,能处理一些转录组等大数据

    2024年02月15日
    浏览(42)
  • 【Linux操作系统】环境变量和命令行参数

    环境变量是有特殊用途的系统变量。 如:我们在编写C/C++代码的时候,在链接的时候,从来不知道我们的所链接的动态静态库在哪里,但是照样可以链接成功,生成可执行程序,原因就是有相关环境变量帮助编译器进行查找。 这里推荐一个B站迷糊老师的一个视频哦:迷糊老

    2024年02月01日
    浏览(48)
  • Linux系统中的配置文件和环境变量

    Linux系统中,常用的配置文件包括: 用户级别的配置文件: ~/.bashrc 系统级别的配置文件: /etc/profile 用户级别的配置文件和系统级别的配置文件在功能和作用上存在一些区别: 用户级别的配置文件: 位置:通常存储在用户的主目录中,例如 ~/.bashrc 适用范围:仅对当前用户

    2024年02月09日
    浏览(50)
  • linux系统查看jdk版本,路径及配置环境变量

    目录 1、查看jdk版本 2、查看jdk安装目录 3、配置jdk环境变量 4、输入 i 进入编辑模式,到最后一行,添加一下代码,然后保存退出 5、重新加载配置文件 1、查看jdk版本 2、查看jdk安装目录    或者使用  最后一行显示路径 3、配置jdk环境变量 使用命令打开文件 4、输入 i 进入编

    2024年02月13日
    浏览(52)
  • 操作系统:Linux 环境变量配置的 6 种方法

    操作系统:Linux 环境变量配置的 6 种方法 linux查看、添加、删除环境变量 ------------------------------------------------------------   https://blog.csdn.net/mayue_web/article/details/97023615 针对修改的配置文件执行: source ~/.bashrc 当前终端和新连接的终端自动生效。         source ~/.bashrc 针对已

    2024年02月08日
    浏览(38)
  • 【Linux取经路】解析环境变量,提升系统控制力

    优先级决定了资源分配的先后顺序,即谁先访问,谁后访问。要注意区分优先级和权限的概念,权限决定了能不能做,而优先级是在已经确定可以做的基础上,去决定谁先谁后的问题。 因为在系统中可能存在多个进程,但是只有一个 CPU,这就注定了所有的进程是需要去竞争

    2024年02月12日
    浏览(44)
  • 一文解决Linux系统下安装并配置Java环境变量

    jdk下载地址: http://www.oracle.com/technetwork/java/javase/downloads/index.html 下载完成后,将需要安装的jdk安装包放到Linux系统指定的文件夹下,并且命令进入该文件夹下 在最后添加

    2024年02月07日
    浏览(40)
  • Linux 系统编程-开发环境(一)

    目录 1 shell 1.1 shell 家族 1.2  bash 1.3 命令和路径补齐      1.4 历史记录 1.5 主键盘快捷键  2 目录和文件 2.1 类Unix系统目录结构 2.2 用户目录 2.2.1 相对路径和绝对路径 2.3 ls 2.4 cd 2.5 which 2.6 pwd 2.7 mkdir 2.8 rmdir  2.9 touch 2.10 rm rm file  2.11 mv  2.12 cp  2.13 cat 2.14 more 2.15 less 2.16 head  

    2024年02月16日
    浏览(44)
  • Linux系统编程:采用管道的方式实现进程间通信

    目录 一. 进程间通信概述 二. 管道的概念  三. 通过管道实现进程间通信 3.1 实现原理 3.2 匿名管道创建系统接口pipe 3.3 管道通信的模拟实现 3.4 管道通信的访问控制规则 3.5 管道通信的特点 四. 通过匿名管道实现进程池 4.1 进程池的概念 4.2 进程池的模拟实现 五. 命名

    2024年02月12日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包