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

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



















