【Linux】环境变量常见指令操作&基本实验(入门必看!)

【linux】环境变量常见指令操作&基本实验(入门必看!)

一.环境变量基本概念(博主简要概述)系统中存在大量环境变量,每个变量都有其特定用途,用于实现特定的系统功能。环境变量被所有子进程继承,通常可以被所有进程读取,因此称为“系统环境变量通常具有全局属性”。【本地变量与环境变量的区别】本地变量仅在bash进程内部有效,不会被子进程继承。环境变量通过被所有子进程继承的方式,实现其全局性!【Linux命令分类&内建命令可读取本地变量】常规命令:由shell fork出的子进程执行。内建命令:shell命令行的一个函数,可以直接读取shell内部定义的本地变量。例如,我们清空PATH环境变量,echo仍然能运行,因为echo是内建命令。

【Linux】环境变量常见指令操作&基本实验(入门必看!)

二.常见环境变量介绍PATH : 指定命令的搜索路径。HOME : 指定用户的主工作目录(即用户登陆到Linux系统时,默认的目录)。SHELL : 当前Shell,其值通常是/bin/bash。

三.环境变量的组织方式:环境表(main函数的第三个参数)我们登录系统时,系统会为shell创建一张环境变量表。

【Linux】环境变量常见指令操作&基本实验(入门必看!)

main函数其实有第三个参数char* env[],即环境变量表的指针数组。我们使用自动化构建工具makefile构建如下程序,执行程序,打印出结果,正是所有的环境变量(与env指令打印出来的一致)。

int main(int argc, char* argv[], char* env[]){    int i = 0;    for (; env[i]; i++){        printf("env[%d]: %sn", i, env[i]);    }}

四.环境变量相关的【基本操作指令】(以PATH举例)1.指令总览echo $NAME //NAME:你的环境变量名称 : 显示某个环境变量值。export : 设置一个新的环境变量。env : 显示所有环境变量。unset : 清除环境变量。set : 显示本地定义的shell变量和环境变量。

2.env:获取环境变量env :直接查看环境变量。

env

【Linux】环境变量常见指令操作&基本实验(入门必看!)

3.environ(全局指针):获取环境变量environ是一个二级指针,libc中定义的全局变量,environ指向环境变量表。environ没有包含在任何头文件中,因此在使用时需要用extern声明。

【Linux】环境变量常见指令操作&基本实验(入门必看!)

int main(int argc, char* argv[]){    extern char** environ;    int i = 0;    for (; environ[i]; i++){        printf("%s n", environ[i]);    }    return 0;}

4.echo $PATHecho PATH :直接打印环境变量PATH名字。echo $PATH :打印PATH的位置。

echo PATHecho $PATH

【Linux】环境变量常见指令操作&基本实验(入门必看!)

5.PATH=xxxxxxxxx (覆盖) / PATH=$PATH:xxxxxxxxx(追加) (操作对象:指定环境变量)如下图所示,用’ ‘覆盖了原来的PATH,echo的结果是空。

【Linux】环境变量常见指令操作&基本实验(入门必看!)

注意事项:覆盖修改的只是内存中的环境变量,重新登录xshell它会自动恢复(每一次重新登陆,都会给我们形成新的bash解释器,并且新的bash解释器会从配置文件自动读取新建自己的环境变量表信息)。

6.export(导出到环境变量表中)(重点)具体实验在四章节。export :直接改变bash/shell环境变量本身,添加到当前进程上下文的环境变量表中,重新登录xshell会恢复。

注意事项:修改的只是内存中的环境变量,重新登录xshell它会自动恢复(每一次重新登陆,都会给我们形成新的bash解释器,并且新的bash解释器会从配置文件自动读取新建自己的环境变量表信息)。

先见AI 先见AI

数据为基,先见未见

先见AI 95 查看详情 先见AI

export xx=12345

五.环境变量实验1.环境变量PATH实验:让我们写的程序和系统自带指令一样执行。系统会在环境变量里进行路径搜索,系统会提供系统默认自带的程序的路径(PATH环境变量)。当我们执行操作时,系统会直接去环境变量PATH中检索我们对应的可执行程序。环境变量的本质:程序安装。指令也是程序,我们写的也是程序,为什么我们要带./?回答:因为我们写的程序的路径没有保存到PATH环境变量中,系统无法沿着路径找到并执行程序。我们通过 PATH=$PATH:xxxxxxxxx(追加),把mytouch的路径添加到环境变量中,可以看到我们让我们的程序和系统自带指令一样执行。

【Linux】环境变量常见指令操作&基本实验(入门必看!)【Linux】环境变量常见指令操作&基本实验(入门必看!)

2.环境变量HOME实验:用户识别原理输入用户名&密码认证形成许多环境变量(PATH,HOME,SHELL等等)。根据用户名,会初始化环境变量HOME(家目录:HOME=/root,HOME=/home/XXX)。执行 cd $HOME, 进入家目录/根目录。

【Linux】环境变量常见指令操作&基本实验(入门必看!)

3.环境变量实验:让我们修改的环境变量在每次登陆时都存在(更改配置文件)(重点)export :直接改变bash/shell环境变量本身。我们知道,命令行解释器启动的进程都是shell/bash的子进程,子进程的命令行参数和环境变量都是父进程bash给我们传递的!内存中的环境变量,重新登录xshell它会自动恢复。这是因为:每一次重新登陆,都会给我们形成新的bash解释器并且新的bash解释器会从父进程bash的配置文件自动读取新建自己的环境变量表信息(隐藏)。配置文件名称.bash_profile

【Linux】环境变量常见指令操作&基本实验(入门必看!)

用vim进入配置文件.bash_profile

vim ~/.bash_profile

注:把多个命令写到一个文件中,这就是shell脚本;启动shell时,会从上到下挨个执行命令,进行配置。

【Linux】环境变量常见指令操作&基本实验(入门必看!)

每一次重新登陆,都会给我们形成新的bash解释器并且新的bash解释器会从配置文件中自动读取形成自己的环境变量表信息。

以上就是【Linux】环境变量常见指令操作&基本实验(入门必看!)的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/458981.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2025年11月8日 02:40:44
下一篇 2025年11月8日 02:42:18

相关推荐

  • C语言如何检查某常量是否存在

    本文将深入探讨c语言如何检查某常量是否存在,相信这对许多程序员来说非常实用,因此分享给大家,希望大家能从中受益。 在C语言中检查常量是否存在 检查预处理常量是否存在 检查预处理常量是否存在的简便方法是使用#ifdef和#ifndef预处理指令。 ifdef用于检查常量是否已定义。如果常量已定义,则在…

    2025年12月18日
    000
  • C语言如何关闭由 zip_open() 函数打开的 zip 档案文件

    本文将详细介绍如何在C语言中关闭由zip_open()函数打开的ZIP文件,希望通过这篇文章,大家能掌握这一实用的编程技巧。 如何关闭ZIP文件: 要关闭由zip_open()函数打开的ZIP文件,可以使用zip_close()函数。该函数接受ZIP文件结构指针作为参数,并执行以下操作: 关闭ZIP…

    2025年12月18日
    000
  • C语言如何返回 zip 档案项目的压缩文件尺寸

    本文将为您详细介绍如何使用c语言来获取zip档案中项目的压缩文件尺寸。这是一项非常实用的技能,希望您在阅读本文后能有所收获。 在C语言中获取ZIP档案项目压缩文件大小 利用C语言中的zip.h库函数,可以轻松获取ZIP档案中项目的压缩文件大小。以下是具体操作步骤: 引入必要的库头文件 #includ…

    2025年12月18日
    000
  • 如何在 eclipse 中配置 c++ 开发

    在ec++lipse中配置c++开发环境需要以下步骤:1. 安装eclipse cdt插件,2. 配置c++编译器,3. 创建并运行c++项目,4. 使用调试工具,5. 优化代码性能。通过这些步骤,你可以在eclipse中高效地进行c++开发。 引言 在当今多语言编程的世界中,C++依然是性能要求高…

    2025年12月18日
    000
  • xcode 怎么创建 c++ 项目

    在 xc++ode 中创建 c++ 项目可以通过以下步骤实现:1. 打开 xcode,点击 “create a new xcode project”。2. 选择 “macos” 平台和 “command line tool” 模…

    2025年12月18日
    000
  • c++ 引用和指针的区别是什么

    引用和指针的主要区别在于:引用是变量的别名,必须初始化且不可更改;指针存储内存地址,可重新赋值。引用在函数参数和返回值中常用,语法简洁且安全;指针用于动态内存分配和复杂数据结构,灵活但易出错。 引言 在 C++ 编程中,引用和指针是两个经常被混淆的概念。今天我们就来深入探讨一下它们之间的区别。通过这…

    2025年12月18日
    000
  • c++ 递归函数怎么实现

    c++++ 中递归函数通过函数调用自身来解决问题。1) 定义递归函数需要基本情况和递归情况。2) 递归函数的工作原理是将问题分解成子问题,直到达到基本情况。3) 使用示例包括计算 fibonacci 数列,优化方法有记忆化递归。4) 常见错误包括栈溢出和无限递归,调试时使用调试器跟踪调用堆栈。5) …

    2025年12月18日
    000
  • dev c++ 如何设置编译选项

    在 dev-c++++ 中设置编译选项的方法是:1. 点击“工具”菜单,选择“编译器选项”。2. 在“编译器”选项卡中的“附加的编译器选项”字段输入选项。编译选项通过 gcc 实现,可以优化代码、生成调试信息等,需权衡选项的优缺点。 引言 在编程世界中,编译选项就像是调味料,能让你的代码变得更加美味…

    2025年12月18日
    000
  • dev c++ 怎么添加外部库

    在 dev-c++++ 中添加外部库的步骤如下:1. 下载库文件:从官方网站下载适合系统的库文件,如 libcurl。2. 添加头文件:在代码中包含头文件并将头文件目录添加到编译器搜索路径中。3. 添加库文件:在代码中链接库文件并将库文件目录添加到链接器搜索路径中。4. 编写和编译代码:使用库编写代…

    2025年12月18日
    000
  • c++ 作用域解析运算符怎么用

    在 c++++ 中,作用域解析运算符 (::) 用于明确指定标识符的作用域。1) 解决命名冲突,如访问全局变量 (::count)。2) 访问命名空间成员 (math::calculatearea)。3) 访问类的静态成员 (myclass::staticvar)。合理使用该运算符可以提高代码的清晰…

    2025年12月18日
    000
  • clion 怎么创建 c++ 项目

    在 c++lion 中创建 c++ 项目可以通过以下步骤实现:1. 启动 clion 并点击 “create new project”。2. 选择 “c++ executable” 作为项目类型。3. 设置项目位置,建议使用专门文件夹。4. 选择 c+…

    2025年12月18日
    000
  • c++ 结构体怎么定义和使用

    c++++ 结构体通过 struct 关键字定义,用于组合不同类型的数据。1) 定义结构体,如 struct person { std::string name; int age; double height;}; 2) 创建实例并访问成员,如 person.name = “alice&…

    2025年12月18日
    000
  • 如何在 sublime text 中运行 c++ 代码

    在 #%#$#%@%@%$#%$#%#%#$%@_348c++880664f2e1458b899ced2a3518e6 text 中运行 c++ 代码需要配置构建系统。1. 安装 c++ 编译器(如 mingw、xcode 或 gcc)。2. 创建并保存 c++.sublime-build 文件,定…

    2025年12月18日
    000
  • c++ 联合体怎么使用

    联合体在 c++++ 中允许在同一内存位置存储不同类型的数据。其优点包括节省内存,缺点是可能导致不可预测的值。使用时应注意初始化和类型安全。联合体允许在同一内存位置存储不同类型的数据,如整数、浮点数或字符数组。其主要优点是节省内存,因为所有成员共享同一块内存。缺点是当给一个成员赋值时,其他成员的值会…

    2025年12月18日
    000
  • c++ 浮点数精度问题怎么解决

    解决c++++中浮点数精度问题的方法包括:1.使用std::setprecision控制输出精度;2.使用std::fixed固定小数点位数;3.使用long double提高计算精度;4.使用整数运算避免浮点数问题;5.使用任意精度库如boost::multiprecision或gmp获得高精度。…

    2025年12月18日
    000
  • C编程中的字符输入问题

    让我们分析这段C代码中字符输入的问题,以及如何解决。 这段代码展示了一个常见的C语言输入陷阱:scanf(“%c”, &ch); 在读取整数后,无法正确读取下一个字符。 这是因为 scanf(“%d”, &num); 读取整数 13 后,输入缓冲区中仍然残留了一个换行符 n (用户按…

    2025年12月18日
    000
  • Gulc:从头开始建造的C库

    本文开启了一个系列,介绍我正在开发的C99库:Gulc(Generic Utility Library的缩写)。该库主要用于学习和娱乐目的,旨在提供C标准库中安全内存管理和实用功能(如向量和无序映射),以简化C语言编程。未来将持续添加更多功能。 目前,该库包含一个简单的验证系统(类似于断言,但在发行…

    2025年12月18日
    000
  • 指针,一个怪异的野兽,适合初学者及以后

    对于C/C++编程初学者来说,指针是最难理解的概念之一。许多学生为此苦恼,许多开发者都尽量避免使用指针。然而,理解指针至关重要,因此,让我们从基础开始。 什么是指针? 指针是一种数据类型,类似于int、float等。声明指针的语法是在类型名后添加*。例如,指向整数的指针声明为int *,指向自定义结…

    2025年12月18日
    000
  • C语言API与高尔夫服务器交谈

    本文演示如何使用C API与Golf Application Server进行交互。由于大多数编程语言都支持C链接,因此可以轻松地从各种编程环境访问Golf服务器。客户端API简洁易用,仅包含少量函数和一种数据类型,并支持多线程环境。本例中,Golf服务器使用树形对象存储键值对,服务器运行期间可进行…

    2025年12月18日
    000
  • 制作计划的艺术

    C语言编程挑战与乐趣 学习编程语言并非易事,而我从未涉足C语言。尽管它看起来很有趣,但我决定写一篇博客记录我的学习历程。 您可能好奇我为什么选择C语言?说实话,我从未参与过大型项目开发,所以这将是一次充满挑战的经历,就像所有软件开发项目一样。后续我会持续更新进展。 C语言的魅力 C语言仍然拥有庞大的…

    2025年12月18日
    000

发表回复

登录后才能评论
关注微信