Linux环境变量

2023-09-20 19:37:09

在Linux系统中,环境变量是用来定义系统运行环境的一些参数。例如,每个用户不同的家目录(HOME)、邮件存放位置(MAIL)等¹。环境变量的名称一般都是大写的,这是一种约定俗成的规范。以下是一些Linux系统中重要的环境变量:

  • HOME:用户的主目录(也称家目录)
  • SHELL:用户使用的 Shell 解释器名称
  • PATH:定义命令行解释器搜索用户执行命令的路径
  • EDITOR:用户默认的文本解释器
  • RANDOM:生成一个随机数字
  • LANG:系统语言、语系名称
  • HISTSIZE:输出的历史命令记录条数
  • HISTFILESIZE:保存的历史命令记录条数
  • PS1:Bash解释器的提示符
  • MAIL:邮件保存路径

环境变量可以分为两类:永久的和临时的。

  • 永久的环境变量需要用户修改相关的配置文件,变量永久生效
  • 临时的环境变量用户利用export命令,在当前终端下声明环境变量,关闭Shell终端失效

此外,环境变量也可以分为系统环境变量和用户环境变量。系统环境变量对该系统中所有用户都有效,而用户环境变量只对特定的用户有效。


在Linux环境中,getenvsetenv是两个用于处理环境变量的函数。

  • getenv函数用于获取环境变量的值。它接受一个字符串参数(环境变量的名称),并返回一个指向该环境变量值的指针。如果该环境变量不存在,则返回NULL。

  • setenv函数用于设置环境变量的值。它接受三个参数:环境变量的名称、新的值以及一个整数。如果这个整数为非零值,那么即使环境变量已经存在,新的值也会覆盖旧的值。

下面是一个简单的例子,演示了如何使用这两个函数:

#include <stdio.h>
#include <stdlib.h>

int main() {
    // 使用setenv设置一个环境变量
    if (setenv("TEST_ENV", "123", 1) == -1) {
        perror("setenv");
        return 1;
    }

    // 使用getenv获取刚才设置的环境变量
    char *value = getenv("TEST_ENV");
    if (value == NULL) {
        printf("TEST_ENV not found\n");
        return 1;
    }

    printf("TEST_ENV = %s\n", value);

    return 0;
}

在这个例子中,我们首先使用setenv设置了一个名为TEST_ENV的环境变量,然后使用getenv获取并打印出这个环境变量的值。如果一切正常,你应该会看到输出TEST_ENV = 123。这就是getenvsetenv的基本用法。希望这个例子能帮助你理解这两个函数的作用。


在Linux系统中,你可以使用printenv命令来查看当前的环境变量。如果你想查看某个特定的环境变量,你可以在printenv后面加上环境变量的名称。例如,如果你想查看PATH环境变量,你可以使用printenv PATH命令。

此外,你也可以使用env命令来查看所有的环境变量。这个命令会列出所有的环境变量,以及它们的值。以下是如何使用这些命令的例子:

# 查看所有的环境变量
printenv

# 查看PATH环境变量
printenv PATH

# 使用env命令查看所有的环境变量
env
更多推荐

vue.js路由如何配置,及全局前置路由守卫(做所有请求登录验证)、路由独享守卫(访问路由前身份验证)

1.编写路由配置文件router.js以及配置全局前置路由守卫和路由独享守卫//路由配置文件//作用是将指定的路由地址切换成对应的模块//eslint-disable-next-lineno-unused-varsimportRouterfrom"vue-router"//eslint-disable-next-lin

HelpLook全新升级!定制AI问答机器人,企业内容中心焕新

一直以来,企业都在努力解决内外部“企业知识管理”问题:从纸质手册发放,转线上电子文档传阅(pdf/ppt/word等),再到整理客户常见问题(FAQ)和内部知识库(wiki),但始终没有找到一套完整方案将“企业知识”很好地集中管理及分享查阅。持续困扰大家的⬇️❌要么是软件系统更新太困难、或搭建费用太昂贵❌要么是没人知道

MybatisX快速生成代码(mybatis plus模板)

文章目录1、概述2、基本使用2.1、插件安装2.2、集成数据库1、概述MybatisX是一款基于IDEA的快速开发插件,为效率而生。在开发过程中,相信大家都遇到过一个数据库内有着十几张或比之更多的数据表的情况。而面对这众多的数据表,实体类、服务类、服务实现类、Mapper接口及其对应的XML文件更是头大,这无疑是成倍增

IPV6真的神

ipv6地址短缺的现实,万物互联的未来<全局可达性>1、路由表更小。地址分配遵循聚类原则,路由表用Entry的路由表示一片子网。2、更强的组播以及流控制。为媒体服务质量QoS。控制提供了良好的网络平台。3、DHCPv6,自动配置地址。使得网(尤其是局域网)的管理更加方便和快捷。4、自带IPSec,端对端安全。在网络层的

通讯网关软件001——利用CommGate X2Access-U实现OPC UA数据转储Access

本文介绍利用CommGateX2ACCESS-U实现从OPCUAServer读取数据并同步转储至ACCESS数据库。CommGateX2ACCESS-U是宁波科安网信开发的网关软件,软件可以登录到网信智汇(http://wangxinzhihui.com)下载。【案例】如下图所示,实现从OPCUAServer实时读取数

linux vim操作汇总

汇总起来,备忘查看~目录1、复制复制一行包括换行符复制光标开始到行末的文本复制光标开始到行首的文本复制当前单词复制单行或多行到指定行后2、粘贴、剪贴3、移动4、删除删除整行删除光标所在行删除光标所在行开始的3行删除一行带复制(当前光标所在行)删除当前行开始的几行(包括当前行)删除到本行行首/行尾删除字符删除单词/符号5

探索Go语言在机器学习领域的应用局限与前景

🌷🍁博主猫头虎带您GotoNewWorld.✨🍁🦄博客首页——猫头虎的博客🎐🐳《面试题大全专栏》文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~🌺🌊《IDEA开发秘籍专栏》学会IDEA常用操作,工作效率翻倍~💐🌊《100天精通Golang(基础入门篇)》学会Golang语言,畅玩云原生,走遍大

Pytest系列-数据驱动@pytest.mark.parametrize(7)

简介unittest和pytest参数化对比:pytest与unittest的一个重要区别就是参数化,unittest框架使用的第三方库ddt来参数化的而pytest框架:前置/后置处理函数fixture,它有个参数params专门与request结合使用来传递参数,也可以用parametrize结合request来传

【linux】paramiko介绍 + 路由器设置tc命令使用

背景:要给网络灵活的设置各种带宽限制,通过对路由器下发tc命令实现。设置python脚本的ssh链接+tc脚本下发+针对某一个id进行配置。Paramiko是一个用于在Python中进行SSH(SecureShell)协议通信的库。它提供了在远程服务器上执行命令、上传和下载文件、建立SSH连接等功能,使得开发者可以轻松

MySQL---优化&日志

目录一、MySQL优化3、mysqlserver上的优化3.1、MySQL查询缓存3.2、索引和数据缓存3.2、线程缓存二、MySQL日志2.1、redolog重做日志2.2、undolog回滚日志2.3、错误日志2.4、查询日志2.5、二进制日志2.5.1、基于binlog数据恢复实践操作六、慢查询日志一、MySQL

渗透测试信息收集方法和工具分享

文章目录一、域名收集1.OneForAll2.子域名挖掘机3.subdomainsBurte4.ssl证书查询二、获取真实ip1.17CE2.站长之家ping检测3.如何寻找真实IP4.纯真ip数据库工具5.c段,旁站查询三、端口扫描1.端口扫描站长工具2.masscan(全端口扫描)+nmap扫描3.scanport

热文推荐