当前位置: 首页 > news >正文

第六次作业Linux环境变量

Linux环境变量 - 课堂笔记总结

1. 什么是环境变量

定义:在程序外部设置的变量,由名称/值对组成(VARIABLE_NAME=value),用于存储shell会话和工作环境的信息。

分类:
全局环境变量:对shell会话和所有子shell可见
局部环境变量:只对创建它们的shell可见

命名规范:
- 系统环境变量:全大写字母(如HOME、PATH)
- 用户自定义变量:建议使用小写字母(避免冲突)

2. 查看环境变量的命令

env:查看全局环境变量
printenv:查看全局环境变量(可指定单个变量)
set:查看所有变量(环境变量 + 局部变量 + 函数定义)

查看单个变量:
printenv HOME
echo $HOME

关键点:
引用变量用$(如echo $HOME)
操作变量不用$(如unset myvar)

3. 设置用户定义变量

局部变量:
myvar="Hello World"
myvar=Hello

注意事项:
等号两边不能有空格
字符串有空格需加引号

全局变量(环境变量):
myvar="Global variable"
export myvar

或直接创建并导出:
export myvar="Global variable"

关键特性:
子shell继承父shell的全局变量
子shell修改变量不影响父shell(单向传递)

4. 删除环境变量

unset myvar

验证是否删除:
echo $myvar

5. PATH环境变量

作用:定义shell查找命令的目录列表(冒号分隔)

查看当前PATH:
echo $PATH

添加新目录到PATH(临时生效):
PATH=$PATH:/new/directory

使脚本可直接运行:
chmod u+x myscript.sh
PATH=$PATH:$(pwd)
myscript.sh

注意:对PATH的修改只在当前shell会话有效,重启后失效。

6. 定位系统环境变量(启动文件)

登录shell启动文件加载顺序:
/etc/profile
/etc/profile.d/*.sh
$HOME/.bash_profile 或 $HOME/.bash_login 或 $HOME/.profile(按顺序只执行第一个)
$HOME/.bashrc

常用启动文件:
/etc/profile:系统级,所有用户登录时执行
$HOME/.bash_profile:用户级登录shell配置
$HOME/.bashrc:用户级交互式shell配置(最常用)

7. 数组变量

创建数组:
mytest=(one two three)

引用数组元素(索引从0开始):
echo $mytest 显示第一个元素:one
echo ${mytest[1]} 显示第二个元素:two
echo ${mytest[*]} 显示所有元素:one two three

修改元素:
mytest[2]=five

删除元素:
unset mytest[1]

删除整个数组:
unset mytest

核心实践总结

查看全局变量:env 或 printenv
查看所有变量:set
设置局部变量:var=value
设置全局变量:export var=value
删除变量:unset var
引用变量:$var
修改PATH:PATH=$PATH:/newdir

关键理解

父子shell继承关系:
- 父shell到子shell:全局变量(export)可继承
- 父shell到子shell:局部变量不可继承
- 子shell修改到父shell:不受影响(单向)

临时性:通过命令行设置的环境变量在shell退出或系统重启后失效。

持久化:需将变量设置在启动文件中(如~/.bashrc)才能永久生效。

课堂作业

http://www.jsqmd.com/news/1141336/

相关文章:

  • Geo优化源码部署搭建技术分享——开源支持二开
  • 浏览器中的SVG绘图神器:SVG-edit免费矢量图形编辑器入门指南
  • 工业级4-20mA电流环系统设计与DAC161S997芯片应用
  • 【计算机Java毕业设计案例】基于 SpringBoot 的校园停车车辆管理系统的设计与实现 基于 SpringBoot 的校园车辆溯源管理系统(程序+文档+讲解+定制)
  • TC78H653FTG与MKV46F128VLH16的直流电机驱动方案
  • B站视频下载终极指南:三步轻松保存大会员4K和充电专属内容
  • Python 实现群智能学习策略:5 行代码集成 ROBL 提升 PSO 寻优精度 15%
  • 抖音无水印下载器终极指南:5分钟掌握批量下载技巧
  • WS2812与MK51DN512CLQ10微控制器的智能LED驱动方案
  • 如何通过手机号查询关联QQ号码的技术实现方案
  • 数据挖掘 4大核心任务对比:分类、聚类、回归、关联规则(附 Scikit-learn 实现)
  • 2026年本地搜索合规升级:属地GEO精细化运维助力企业长效发展
  • 终极GTNH汉化指南:让格雷科技新视野全面中文化的完整解决方案
  • 抖音无水印视频下载器:3步搞定批量下载的完整指南
  • OpenCV 4.8.0 实战:Harris角点检测与SIFT特征提取的MATLAB/Python 3方案对比
  • 如何用roop-unleashed实现零基础AI换脸:3步快速入门完整指南
  • 智能体(Agent)学习路线:从入门到精通
  • MAX9744与PIC18F65K40音频系统设计与优化
  • BufferedReader的源码分析和使用方法详细分析(windows操作系统,JDK8)
  • OpenEMS开源能源管理系统:30分钟快速部署与智能能源控制完整指南
  • Redis.from_url()连接redis时,redis密码带有#号报错
  • AI视频分析并发优化性能优化指南
  • 智慧农业-垂直农场/植物工厂AI Agent 发展挑战(4)
  • L9958与PIC18LF26K42实现高性能直流电机控制方案
  • 高压数字隔离与dsPIC30F在电力电子的应用
  • 向量数据库选型指南:Milvus / Qdrant / Chroma / Pinecone 实战对比,附 Python 代码
  • 想要挂号不难?来看看智能体如何重构门诊效率
  • RK3506开发板通过USB RNDIS实现网络共享配置指南
  • PIC32扩展EEPROM存储方案与I2C接口优化
  • 如何构建一个高效稳定的番茄小说下载器:从网页解析到多格式输出的完整技术实现