linux 1.0.5

环境变量到底是什么

也就是windows上面的环境变量

就是这个东东,用户变量系统变量,那这些到底是啥呢?

主包只是用过,配置来配置去的,就是不知道是啥意思

windows上面的环境变量

windows的ls命令是dir

输入calc可有直接调出计算器的界面

在win7的时候都是win + R才能调出cmd

这个时候开始思考:为什么执行一个程序的时候,直接输入关键词就能调出来这个文件

那是不是得知道这个程序在哪?

在这个目录下面

可以通过命令行直接调出软件的原因就是他在这里

这条命令和在system32这个文件夹下面直接打开这个.exe文件的效果是一样的

那么问题来了,为什么这个notepad明明在system32下面,但是当前的命令行是在C:\User\Admin下面,为什么可以调用这个软件

然后为什么在别的地方,哪怕我在E盘也可以调用这个函数,这是为什么呢?

这就相当于告诉系统:不管你在哪?只要我输入notepad,你就给我到system32这里去打开这个软件

进入环境变量,发现很多路径已经写好了

在E盘输入notepad时候,就会先到环境变量里面找一下

就相当于提前进行了预约,我先到这找一下

这个预约是提前写到内存里的,相当于开机之前就写进来了

这意味着每个文件夹下面所有的文件都已经被写入了

意思就是文件夹下面的所有东西在任何地方都可以被访问

所以在使用java的时候要配置环境变量

在任何地方都可以访问环境变量中的内容,这就是环境变量的作用

这些东西不要删,删了之后就没法访问了,相当于把这个东西从全球通里面除名了,hhhhh

不光是path文件,TEMP是要定义出来,才能使用这个路径

还有很多很多

全局变量和局部变量

那这用户变量和系统变量有啥区别呢?

一个电脑是可以有很多用户的

我把当前的用户啪唧一注销,这个路径就没了,别人就没法使用你的用户变量了

linux中也有这个概念,分别是全局变量和局部变量

不管在哪里,都可以使用cd ls这两个命令,这就相当于提前写好了,环境变量
printenv就是打印当前的环境变量

出现了这样的画面

这里的东西,和前文编辑环境变量差不多

不同发行版的全局变量有可能是不一样的

单独显示某个变量
printenv + 想了解的变量

HOME是很重要的变量

真的要去使用的时候该怎么做
echo $变量名字

这意味着在整个系统上,使用$HOME,就等于/home/yyy,相当于起了一个别名,这个名称就代替了这个路径,就会自动进行替换

以后如果想要指定某些路径的话就可以使用这个$路径名字

如果PAth这个地方出错了,那你就完蛋了,这个地方一错,那就全都错了,cmd你也用不了了

就会出现类似于这样的效果

等于把这个路径直接代替掉了

局部变量的话只能在这一个shell里面去定义,关掉之后就没法使用

实际情况上肯定是全局使用的多,局部变量用的确实不多

输入set就会显示当前shell的局部变量

显示一堆什么乱七八糟的看不懂

用户和局部变量的设定

局部变量大多数指的是用户变量

怎么去使用用户的局部变量
echo $fuck,这个意思是输出fuck这个变量的值

可以这么玩
fuck="QNMB",然后echo $fuck

但是这些都只在一个终端里面,如果建一个新的终端这个变量就没了

这种局部的变量只能在自己的范围里,即使是说在当前终端创建一个子shell也不能使用

同样的在子shell中创建之后,退出到父shell也不能使

值得提醒的一点,自己定义的用户变量名千万不要使用大写,你自己定义的变量一定是全小写,也是用下划线隔开,这是业界规范,也是企业里强制要求的,如果你定义的用户变量是大写的,那就糟糕了,别人以为是全局变量然后一使用,我靠?! undefined?

只有全局变量才使用全大写,而且是下划线命名法

定义全局变量

自己定义全局变量的时候也应该小写

只有系统级的变量才可以使用大写
export fuck="QNMB"

这样就相当于定义了全局的变量

在创建一个子线程之后会发现,诶好像还是能用诶!

但是这个只限制在shell里面,包括他的子shell

可以看到如果在子shell中创建,回到父shell还是使用不了,主包推测这就像一种继承的关系

如何删除呢?
unset + 变量名

这样就把这个删掉了

现在来像这样一种情况父shell中的变量,在子shell中删除,会产生什么样的效果

在父shell中依然可用,在子shell中删掉一个变量的话,只对子shell产生影响,但是对父shell没有任何影响,确实有点像继承的感觉

默认的环境变量

系统中会配置很多好环境

只需要搜索Bash shell bourn或者看shell 变量菜鸟教程

不知道的都多搜索一下,看见不认识的就搜索一下

配置系统的环境变量

在windows中只需要添加全局变量,然后所用的终端都能来访问他

很多东西都是需要终端才能来使用

PATH里面保存了好几个路径,上图中每个冒号隔开都是一个路径

想在终端去使用的话,就得放到PATH里面

因为在终端里面命令的话,只能访问PATH下面的路径

如何在PATH中添加路径
PATH=$PATH:/home/yyy/Project/

注意这里有冒号,没有冒号你就完蛋了,就全完了

这样的话只需要把软件都安装到这里里面,然后直接安装就可以,因为环境变量已经包括这个路径了,就不用去配环境了

但是这有一个坏处,只要一退出这个终端就没了

那该如何永久地保存我们的变量呢?

永久配置?

怎么一次性修改,让他下次开关机还有

在设置之前要提前了解一些东西

linux中的cd ls这些命令都是系统自己默认设定好的

想要保存自己的变量

linux启动的时候需要读取启动文件

开机的时候会默认执行环境变量、

那这是怎么划分的呢?

怎么登录shell,就怎么读取文件

  1. 登录shell
    这一种就是直接点开桌面里面的terminal去打开shell
    cat /etc/profile,我们可以看一下这个文件,这个文件就是启动的时候最主要的文件
    能看到里面有个这东西,有两个文件/etc/bahs.bahsrc /etc/profile.d
    说明:在不同的linux发行版中文件的类型都是不一样的
    如果想配置环境的话就先使用一下这个语法,看看这文件在哪呢
    有些路径一定要熟悉

    打开这个文件就能看见这些文件
    怎么主包看着有点眼熟呢?
    只需要知道怎么去修改就行
    所以怎么修改呢?
    对于用户来说不要碰系统里面的变量
    只需要找到home下面的.bashrc文件就可以,推荐在用户目录下面去执行
    但是问题来了,这是一种新的语法啊,主包怎么知道是怎么改的?
    如果想编辑这些东西的话就得使用vim,只有修改这些文件的话才能修改真正的全局变量
    每一个发行版的启动文件都是不一样的,需要针对性的去找,然后去修改
    这个文件里面也可以修改命令的别名
  2. 非登录就打开shell
  3. 运行脚本非交互shell

所以下面的这两个条件呢?

日后主包遇到的话再续吧

就要找到保存这些变量的文件

修改的话需要编辑器,日后再说咯

micro_frank

相关推荐
待什么青丝15 分钟前
【Ubuntu】摸鱼技巧之虚拟机环境复制
linux·运维·ubuntu
Demisse1 小时前
[MongoDB] 认识MongoDB以及在Windows和Linux上安装MongoDB
linux·windows·mongodb
独行soc1 小时前
2025年渗透测试面试题总结-匿名[校招]高级安全工程师(代码审计安全评估)(题目+回答)
linux·安全·web安全·面试·职场和发展·渗透测试
LB21122 小时前
Maven(黑马)
linux·服务器·maven
alex18012 小时前
ubuntu磁盘挂载
linux·数据库·ubuntu
Stardep2 小时前
Linux下目录递归拷贝的单进程实现
linux·运维·服务器·实验
hawk2014bj3 小时前
KVM 安装 Ubuntu 22
linux·运维·ubuntu
nako_sayuri3 小时前
Linux进程间通信----简易进程池实现
linux·服务器·进程池
藥瓿亭3 小时前
Vim常用快捷键
linux·ubuntu·centos·vim
Zfox_3 小时前
【C++项目】:仿 muduo 库 One-Thread-One-Loop 式并发服务器
linux·服务器·c++·muduo库