Linux 第十七章

🐶博主主页:@ᰔᩚ. 一怀明月ꦿ 

❤️‍🔥专栏系列:线性代数,C初学者入门训练,题解C,C的使用文章,「初学」C++,linux

🔥座右铭:“不要等到什么都没有了,才下定决心去做”

🚀🚀🚀大家觉不错的话,就恳求大家点点关注,点点小爱心,指点指点🚀🚀🚀

目录

查看环境变量的另一种方法

本地环境变量

本地环境变量

第三种方法访问环境变量

本地变量vs环境变量

linux命令的分类 

设置环境变量和取消环境变量


查看环境变量的另一种方法

系统启动我们程序的时候,可以选择我们的进程(main)

提供两张表:

1.命令行参数表 

2.环境变量表

查看当前所有的环境变量,通过环境变量表

#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
int main(int argc,char* argv[],char* env[])//char* env[]也是一个指针数组,用于存储当前所有进程环境变量的字符串
{
        int i=0;
        for(;env[i];i++)
        {
                printf("pid:%d,env[%d]:%s\n",getpid(),i,env[i]);
        }
        return 0;
}


[BCH@hcss-ecs-6176 10_21]$ ./mytest
pid:4824,env[0]:XDG_SESSION_ID=661
pid:4824,env[1]:HOSTNAME=hcss-ecs-6176
pid:4824,env[2]:SHELL=/bin/bash
pid:4824,env[3]:TERM=xterm
pid:4824,env[4]:HISTSIZE=10000
pid:4824,env[5]:SSH_CLIENT=124.114.148.162 22478 22
pid:4824,env[6]:SSH_TTY=/dev/pts/0
pid:4824,env[7]:USER=BCH
pid:4824,env[8]:LS_COLORS=rs=0:di=01;34:ln=01;36:mh=00:pi=40;33:so=01;35:do=01;35:bd=40;33;01:cd=40;33;01:or=40;31;01:mi=01;05;37;41:su=37;41:sg=30;43:ca=30;41:tw=30;42:ow=34;42:st=37;44:ex=01;32:*.tar=01;31:*.tgz=01;31:*.arc=01;31:*.arj=01;31:*.taz=01;31:*.lha=01;31:*.lz4=01;31:*.lzh=01;31:*.lzma=01;31:*.tlz=01;31:*.txz=01;31:*.tzo=01;31:*.t7z=01;31:*.zip=01;31:*.z=01;31:*.Z=01;31:*.dz=01;31:*.gz=01;31:*.lrz=01;31:*.lz=01;31:*.lzo=01;31:*.xz=01;31:*.bz2=01;31:*.bz=01;31:*.tbz=01;31:*.tbz2=01;31:*.tz=01;31:*.deb=01;31:*.rpm=01;31:*.jar=01;31:*.war=01;31:*.ear=01;31:*.sar=01;31:*.rar=01;31:*.alz=01;31:*.ace=01;31:*.zoo=01;31:*.cpio=01;31:*.7z=01;31:*.rz=01;31:*.cab=01;31:*.jpg=01;35:*.jpeg=01;35:*.gif=01;35:*.bmp=01;35:*.pbm=01;35:*.pgm=01;35:*.ppm=01;35:*.tga=01;35:*.xbm=01;35:*.xpm=01;35:*.tif=01;35:*.tiff=01;35:*.png=01;35:*.svg=01;35:*.svgz=01;35:*.mng=01;35:*.pcx=01;35:*.mov=01;35:*.mpg=01;35:*.mpeg=01;35:*.m2v=01;35:*.mkv=01;35:*.webm=01;35:*.ogm=01;35:*.mp4=01;35:*.m4v=01;35:*.mp4v=01;35:*.vob=01;35:*.qt=01;35:*.nuv=01;35:*.wmv=01;35:*.asf=01;35:*.rm=01;35:*.rmvb=01;35:*.flc=01;35:*.avi=01;35:*.fli=01;35:*.flv=01;35:*.gl=01;35:*.dl=01;35:*.xcf=01;35:*.xwd=01;35:*.yuv=01;35:*.cgm=01;35:*.emf=01;35:*.axv=01;35:*.anx=01;35:*.ogv=01;35:*.ogx=01;35:*.aac=01;36:*.au=01;36:*.flac=01;36:*.mid=01;36:*.midi=01;36:*.mka=01;36:*.mp3=01;36:*.mpc=01;36:*.ogg=01;36:*.ra=01;36:*.wav=01;36:*.axa=01;36:*.oga=01;36:*.spx=01;36:*.xspf=01;36:
pid:4824,env[9]:PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
pid:4824,env[10]:MAIL=/var/spool/mail/root
pid:4824,env[11]:PWD=/home/BCH/10_21
pid:4824,env[12]:LANG=zh_CN.UTF-8
pid:4824,env[13]:HISTCONTROL=ignoredups
pid:4824,env[14]:HOME=/home/BCH
pid:4824,env[15]:SHLVL=2
pid:4824,env[16]:LOGNAME=BCH
pid:4824,env[17]:SSH_CONNECTION=124.114.148.162 22478 192.168.0.7 22
pid:4824,env[18]:LESSOPEN=||/usr/bin/lesspipe.sh %s
pid:4824,env[19]:XDG_RUNTIME_DIR=/run/user/0
pid:4824,env[20]:HISTTIMEFORMAT=%F %T BCH 
pid:4824,env[21]:_=./mytest
pid:4824,env[22]:OLDPWD=/home/BCH

本地环境变量

命令行启动的进程都是shell/bash的子进程,子进程的命令行参数和环境变量,是父进程bash给我们传递的!父进程的环境命令行参数和环境变量又从哪来了?

我们直接更改的是bash进程内部的环境变量信息!

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

bash父进程的环境变量信息又从哪里来?

环境变量信息是以脚本配置文件的形式存在的!

每一次登录的时候,你的bash进程都会读取.bash_profile(在家目录下)

-rw-r--r--   1 BCH  BCH    193 11月 25 2021 .bash_profile

配置文件中的内容,为我们bash进程形成一张环境量表信息

本地环境变量

除了存在系统变量,自己也可以添加自己的环境变量(本地变量)

[BCH@hcss-ecs-6176 ~]$ MYENV_109=hellolinux
[BCH@hcss-ecs-6176 ~]$ echo $MYENV_109
hellolinux
[BCH@hcss-ecs-6176 ~]$ env | grep MYENV_109//但是通过env查询当前的环境变量并没有MYENV_109
[BCH@hcss-ecs-6176 ~]$

通过命令行export把本地变量暂时添加到系统变量里

[BCH@hcss-ecs-6176 10_21]$ export MYENY_109
[BCH@hcss-ecs-6176 10_21]$ ./mytest | grep MYENV_109//通过main传参能够查到MYENV_109
pid:6294,env[19]:MYENV_109=hellolinux
[BCH@hcss-ecs-6176 10_21]$ env | grep MYENV_109//通过env能够查到MYENV_109
MYENV_109=hellolinux

在命令行export的时候也可以创建本地变量暂时添加到系统变量里,因为是暂时写到系统变量,shell一旦退出,下次再在登录时,自己添加的环境变量就不存在了(根本原因是我们自己添加的环境变量在内存中)

如果想要将自己添加的环境变量保存在.bash_profile配置文件中

[BCH@hcss-ecs-6176 10_21]$ env | grep MYENV_10_21
MYENV_10_21=the_day_is_very_conflused,in10_21

第三种方法访问环境变量

extern char **environ;//全局二级指针变量

[BCH@hcss-ecs-6176 10_21]$ cat test.c
#include<stdio.h>
#include<stdlib.h>
#include<sys/types.h>
#include<unistd.h>
//int main(int argc,char* argv[],char* env[])
int main()
{
        //int i=0;
        //for(;env[i];i++)
        //{
                //printf("pid:%d,env[%d]:%s\n",getpid(),i,env[i]);
        //}
        //return 0;
        //
        
        extern char** environ;
        int i=0;
        for(;environ[i];i++)
        {
                printf("%d: %s\n",i,environ[i]);
        }
}

现在访问环境变量的方法有

getenv("环境变量”)/main传参/extern char** environ

本地变量vs环境变量

1)本地变量只在bash进程内部有效,不会被子进程继承

2)环境变量通过让所有的子进程继承的方式,实现自身的全局性

或则bash_profile配置文件自定义添加的环境变量

linux命令的分类 

1.常规命令,shell(bash) fork让子进程执行的
2.内建命令,shell(bash)命令行的一个函数,当然可以直接读取shell内部定义的本地变量

我们把PATH=“”,常规命令不能运行,而echo还能够运行
本地变量不能被子进程继承,但是可以被内建命令echo读取

export内建命令

设置环境变量和取消环境变量

[BCH@hcss-ecs-6176 10_21]$ HELLO=123456//设置本地
[BCH@hcss-ecs-6176 10_21]$ export HELLO=123456设置系统
[BCH@hcss-ecs-6176 10_21]$ env | grep HELLO
HELLO=123456
[BCH@hcss-ecs-6176 10_21]$ unset HELLO//取消
[BCH@hcss-ecs-6176 10_21]$ env | grep HELLO
[BCH@hcss-ecs-6176 10_21]$

注意:

env查看不到本地变量

echo可以查看本地变量

set可以查看环境变量和本地变量

 🌸🌸🌸如果大家还有不懂或者建议都可以发在评论区,我们共同探讨,共同学习,共同进步。谢谢大家! 🌸🌸🌸 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/587028.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【触摸案例-控件不能响应的情况 Objective-C语言】

一、接下来,我们来说这个“控件不能响应的情况”, 1.素材里边,有一个“不接受用户交互的情况”,这么一个代码,把它打开, 把这个项目啊,复制过来,改一个名字,叫做“04-控件不能响应的情况”, 打开之后,command + R,运行一下, 在storyboard上,你也可以看得出来,我…

Python绘制的好看统计图

代码 sx [Accent, Accent_r, Blues, Blues_r, BrBG, BrBG_r, BuGn, BuGn_r, BuPu, BuPu_r, CMRmap, CMRmap_r, Dark2, Dark2_r, GnBu, GnBu_r, Greens, Greens_r, Greys, Greys_r, OrRd, OrRd_r, Oranges, Oranges_r, PRGn, PRGn_r, Paired, Paired_r, Pastel1, Pastel1_r, P…

C++ 多态详解

文章目录 1. 多态的概念2. 多态的定义及实现2.1 多态的构成条件2.2 虚函数2.3 虚函数的重写2.3.1 虚函数重写的两个例外 2.4 C11 override 和 final2.5 重载、覆盖(重写)、隐藏(重定义)的对比 3. 多态的原理3.1 虚函数表3.2多态的原理 4. 单继承和多继承关系的虚函数表4.1 单继…

C++Day 7 作业

1、lambda #include <iostream>using namespace std;int main() {int a 100;int b 90;int temp;auto fun [&]()mutable->int {temp a;ab;btemp;};fun();cout<<a<<endl;return 0; } 2、vector #include <iostream> #include <vector>…

python安卓自动化pyaibote实践------学习通自动刷课

前言 欢迎来到我的博客 个人主页:北岭敲键盘的荒漠猫-CSDN博客 本文是一个完成一个自动播放课程&#xff0c;避免人为频繁点击脚本的构思与源码。 加油&#xff01;为实现全部电脑自动化办公而奋斗&#xff01; 为实现摆烂躺平的人生而奋斗&#xff01;&#xff01;&#xff…

python项目入门新手攻略

最近工作需要接手了代码量比较大的python开发的项目&#xff0c;平时写python不多&#xff0c;记录一下如何熟悉项目。 分析调用流程-pycallgraph 因为代码量比较大&#xff0c;所以希望通过工具生成代码调用流程&#xff0c;因此用到了pycallgraph。 pycallgraph&#xff0…

翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习三

合集 ChatGPT 通过图形化的方式来理解 Transformer 架构 翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习一翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深度学习二翻译: 什么是ChatGPT 通过图形化的方式来理解 Transformer 架构 深…

56.基于SSM实现的在线教育网站系统(项目 + 论文)

项目介绍 本站是一个B/S模式系统&#xff0c;采用Java的SSM框架作为开发技术&#xff0c;MYSQL数据库设计开发&#xff0c;充分保证系统的稳定性。系统具有界面清晰、操作简单&#xff0c;功能齐全的特点&#xff0c;使得基于SSM的在线教育网站的设计与实现管理工作系统化、规范…

Scikit-Learn回归树

Scikit-Learn回归树 1、决策树1.1、什么是决策树1.2、决策树学习的步骤1.3、决策树算法 1、决策树 决策树&#xff08;DTs&#xff09;是一种用于回归和分类的有监督学习方法。通常&#xff0c;决策树用于分类问题&#xff1b;当决策树用于回归问题时&#xff0c;称为回归树。回…

Midjourney之绘画背景的选择

hello 小伙伴们&#xff0c;我是你们的老朋友——树下&#xff0c;今天分享Midjourney提示词中绘画背景的选择&#xff0c;话不多说&#xff0c;直接开始~ 对于背景的选择&#xff0c;Midjourney中主要体现在年代和所处的环境对绘画产生不同的影响 科技的发展&#xff0c;我们…

matlab学习006-使用matlab绘出系统的冲激响应和阶跃响应波形并求其冲激响应的数值解

目录 题目 1&#xff0c;绘出系统的冲激响应和阶跃响应波形 1&#xff09;基础 2&#xff09;效果 3&#xff09;代码 2&#xff0c;求出t0.5s,1s,1.5s,2s时系统冲激响应的数值解。 1&#xff09;基础 2&#xff09;效果 ​☀ 3&#xff09;代码 题目 已知描述某连续系…

【Python】Anaconda 使用笔记

文章目录 一、创建环境1.1 在任意磁盘中创建环境1.2 添加环境路径envs_dirs 二、安装和使用Python环境三、删除已有的Python环境 前言   笔者使用Python的目的主要是为了学习神经网络等深度学习算法。但是在学习之初配置环境的时候发现之前的环境配置一团乱麻&#xff0c;不仅…

Mybatis进阶(动态SQL)

文章目录 1.动态SQL1.基本介绍1.为什么需要动态SQL2.基本说明3.动态SQL常用标签 2.环境搭建1.新建子模块2.删除不必要的两个文件夹3.创建基本结构4.父模块的pom.xml5.jdbc.properties6.mybatis-config.xml7.MyBatisUtils.java8.MonsterMapper.java9.MonsterMapper.xml10.测试Mo…

第七篇:专家级指南:Python异常处理的艺术与策略

专家级指南&#xff1a;Python异常处理的艺术与策略 1 引言 在编程的世界中&#xff0c;异常处理是一门必修的艺术。它不仅涉及到程序的错误处理&#xff0c;更广泛地影响着软件的稳定性、健壮性和用户体验。本篇文章将深入探讨Python中的异常处理&#xff0c;展示如何通过精心…

Linux:服务器间同步文件的脚本(实用)

一、功能描述 比如有三台服务器&#xff0c;hadoop102、hadoop103、hadoop104&#xff0c;且都有atguigu账号 循环复制文件到所有节点的相同目录下&#xff0c;且脚本可以在任何路径下使用 二、脚本实现 1、查看环境变量 echo $PATH2、进入/home/atguigu/bin目录 在该目录下…

三. Django项目之电商购物商城 -- 校验用户名 , 数据入库

Django项目之电商购物商城 – 校验用户名 , 数据入库 需要开发文档和前端资料的可私聊 一. 路由匹配获得用户名 在注册时 , 用户输入用户名 , 通过ajax请求发送到服务器 , 在路由中设置对应url , 响应视图 , 将用户输入的用户名传入视图 , 与数据库进行校验检查用户名是否重…

信息技术内涵及意义

一、信息技术及其演进趋势 &#xff08;一&#xff09;信息技术概况概念 信息技术&#xff08;Information Technology&#xff0c;IT&#xff09;指“应用在信息加工和处理中的科学、技术与工程的训练方法与管理技巧&#xff1b;上述方法和技巧的应用&#xff1b;计算机及其…

linux高性能服务器--Ngix内存池简单实现

文章目录 内存模型&#xff1a;流程图内存对齐code 内存模型&#xff1a; 流程图 内存对齐 对齐计算 要分配一个以指定大小对齐的内存&#xff0c;可以使用如下公式&#xff1a; 假设要分配大小为n&#xff0c;对齐方式为x&#xff0c;那么 size(n(x-1)) & (~(x-1))。 举个…

【大模型系列】大模型的上下文长度解释与拓展

文章目录 1 什么是大模型的上下文长度&#xff1f;2 拓展大模型上下文长度的方式参考资料 1 什么是大模型的上下文长度&#xff1f; 大模型的上下文长度&#xff08;Context Length&#xff09;是指在自然语言处理&#xff08;NLP&#xff09;的大型语言模型&#xff08;Large…

自动的异地组网工具?

越来越多的企业和个人对远程访问和异地组网需求日益增加。为了满足这一需求&#xff0c;各种技术和服务也不断涌现。其中一项备受关注的技术就是自动的异地组网。本文将介绍这一技术的优势和特点。 【天联】组网的优势 天联组网技术以其卓越的性能和稳定性备受用户称赞。它的优…