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

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

前言

大家好吖,欢迎来到 YY 滴Linux系列 ,热烈欢迎! 本章主要内容面向接触过Linux的老铁

主要内容含:

一.环境变量基本概念(博主简练概括)

  • 系统中会存在大量的环境变量,每一个变量都有它的 特殊用途 ,用来完成 特定的系统功能
  • 环境变量被所有子进程继承,通常可以被其下的 所有进程读到 ,所以称 “系统环境变量通常具有全局属性”

【本地变量vs环境变量】

  • 本地变量只在bash进程内部有效,不会被子进程继承下去
  • 环境变量通过让所有的子进程继承的方式,实现自身的全局性!

【Linux命令分类&内键命令可读本地变量】

  1. 常规命令:shell fork出的子进程执行的
  2. 内键命令:shell命令行的一个函数,可以直接读取shell内部定义的本地变量
  • 举例:我们清空PATH环境变量,echo却仍然能跑
  • 原因:echo是内键命令


二.常见环境变量介绍

  • PATH : 指定命令的搜索路径
  • HOME : 指定用户的主工作目录 (即用户登陆到Linux系统中时,默认的目录)
  • SHELL : 当前Shell ,它的值通常是/bin/bash。

三.环境变量的组织方式:环境表(main函数的第三个参数)

  • 我们登录系统时,系统会为shell创建一张 环境变量表
  • main函数其实有第三个参数char* env[],即 环境变量表的指针数组
  • 我们用自动化构建工具makefile构建如下所示程序
  • 执行程序,打印出结果,正是所有的环境变量(与env指令打印出来的一致)
int main(int argc, char* argv[], char* env[])
{
  int i = 0;
  for (; env[i]; i++)
  {
    printf("env[&d]: %s\n", i, env[i]); 
  }
}


四.环境变量相关的【基本操作指令】(以PATH举例)

1.指令总览

  1. echo $NAME //NAME:你的环境变量名称 : 显示某个环境变量值
  2. export : 设置一个新的环境变量
  3. env : 显示所有环境变量
  1. unset : 清除环境变量
  2. set : 显示本地定义的shell变量和环境变量

2.env:获取环境变量

  • env :直接查看环境变量
env

3.environ(全局指针):获取环境变量

  • environ是一个二级指针
  • libc中定义的全局变量environ指向环境变量表
  • environ没有包含在任何头文件中,所以在使用时要用 extern声明
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 $PATH

  • echo PATH :直接打印环境变量PATH名字
  • echo $PATH :打印PATH的位置
echo PATH
echo $PATH

5.PATH=xxxxxxxxx (覆盖) / PATH= $PATH:xxxxxxxxx(追加) (操作对象:指定环境变量)

  • 如下图所示,用‘ ’ 覆盖了原来的PATH,echo的结果是空
  • 注意事项:覆盖修改的只是 内存中的环境变量 ,重新登录xshell它会自动恢复 (每一次重新登陆,都会给我们形成新的bash解释器并且新的bash解释器会从配置文件自动读取新城自己的环境变量表信息)

6.export(导出到环境变量表中)(重点)

  • 具体实验在四章节

export : 直接改变bash/shell环境变量本身 , 添加到当前进程上下文的环境变量表中 ,重新登录xshell会恢复

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

export xx=12345

五.环境变量实验

1.环境变量PATH实验:让我们写的程序和系统自带指令一样执行

指令的原理:

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


2.环境变量HOME实验:用户识别原理

在我们登陆时:

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

3.环境变量实验:让我们修改的环境变量在每次登陆时都存在(更改配置文件)(重点)

  • export 直接改变bash/shell环境变量本身
  • 我们知道,命令行解释器启动的进程都是shell/bash的 子进程 ,子进程的命令行参数和环境变量都是父进程bash给我们传递的!
  • 内存中的环境变量 ,重新登录xshell它会自动恢复
  • 这是因为:每一次重新登陆,都会给我们形成新的bash解释器并且新的bash解释器会从 父进程bash的配置文件 自动读取新城自己的环境变量表信息
  • (隐藏)配置文件名称.bash_profile
  • 用vim进入配置文件.bash_profile
vim ~/.bash_profile
  • 注:把多个命令写到一个文件中,这就是 shell脚本
  • 启动shell时,会从上到下挨个执行命令,进行配置;
  • 每一次重新登陆,都会给我们形成新的bash解释器并且新的bash解释器会从 配置文件中 自动读取形成自己的 环境变量表信息
相关文章
|
3天前
|
Linux Shell 网络安全
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
本指南介绍如何利用 HTA 文件和 Metasploit 框架进行渗透测试。通过创建反向 shell、生成 HTA 文件、设置 HTTP 服务器和发送文件,最终实现对目标系统的控制。适用于教育目的,需合法授权。
24 9
Kali Linux系统Metasploit框架利用 HTA 文件进行渗透测试实验
|
24天前
|
Linux
linux-du指令
`du`命令是Linux系统中查看磁盘使用情况的基本工具之一。通过灵活使用 `du`命令的各种选项,可以准确、高效地获取文件和目录的大小信息,有助于系统管理员进行磁盘空间管理。无论是查找大文件、分析目录结构还是排除特定类型的文件,`du`命令都提供了丰富的功能和灵活的配置。理解和掌握 `du`命令的使用,对于维护和优化Linux系统的磁盘空间至关重要。
23 4
|
28天前
|
存储 运维 Linux
如何在 Linux 系统中使用 envsubst 命令替换环境变量?
`envsubst` 是 Linux 系统中用于替换文本中环境变量值的实用工具。本文分三部分介绍其工作原理、使用方法及实际应用,包括配置文件替换、脚本执行中环境变量替换和动态生成文件等场景,帮助用户高效利用 `envsubst` 进行开发和运维工作。
44 4
|
1月前
|
Unix Linux Shell
linux入门!
本文档介绍了Linux系统入门的基础知识,包括操作系统概述、CentOS系统的安装与远程连接、文件操作、目录结构、用户和用户组管理、权限管理、Shell基础、输入输出、压缩打包、文件传输、软件安装、文件查找、进程管理、定时任务和服务管理等内容。重点讲解了常见的命令和操作技巧,帮助初学者快速掌握Linux系统的基本使用方法。
65 3
|
2月前
|
Linux Windows
【Linux】-基本指令(下)
【Linux】-基本指令(下)
【Linux】-基本指令(下)
|
18天前
|
安全 Ubuntu Unix
【Linux】基础指令
本文介绍了Linux操作系统的基本概念及特点,强调了其开源性、多用户多任务处理能力、稳定性和安全性。文章重点讲解了多个Linux基础命令,如ls、cd、touch、mkdir、rm、man、cp、mv、cat、less、find、grep、tar等,旨在帮助初学者快速掌握Linux命令行操作,为后续深入学习奠定基础。
48 0
|
2月前
|
Linux
【Linux第一弹】- 基本指令
【Linux第一弹】- 基本指令
37 1
|
2月前
|
Unix Linux 索引
【Linux】-基本指令(上)
【Linux】-基本指令(上)
|
7月前
|
存储 Shell Linux
【Shell 命令集合 系统设置 】⭐ Linux 取消或删除已设置的环境变量 unset命令 使用指南
【Shell 命令集合 系统设置 】⭐ Linux 取消或删除已设置的环境变量 unset命令 使用指南
261 0
|
7月前
|
存储 Linux 编译器
Linux 交叉编译第三方库需要设置的环境变量
Linux 交叉编译第三方库需要设置的环境变量
274 0