环境变量到底是什么
也就是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