其他

Mac添加环境变量

背景


在cmd中想要执行net start mysql等操作命令,必须先cd到bin文件所在目录,如D:\mysql\mysql-x.x.xx-winx64\bin,那么每次打开mysql 都要输入那么多指令切换目录是不是很讨厌?怎么弄呢?

当你输入一个指令,比如:net start mysql,那系统怎么知道这个指令有没有呢?系统做了什么事?其实系统是在当前目录和系统环境变量path里面的路径全部查找一遍,找到第一个为准,找不到就报错。所以我们要不每次都切换cmd目录,要不就设置环境变量,以后就不需要再切换cmd路径了。简单的说环境变量里面的path路径这东西,就是cmd系统的查找目录路径
原本必须要到安装目录下才能执行,为了实现在计算机的任意目录下都能执行,才需要配置环境变量。

下面说下几个变量的作用:

(1)、PATH环境变量:作用是指定命令搜索路径,在命令行下面执行命令如javac编译java程序时,它会到PATH变量所指定的路径中查找看是否能找到相应的命令程序。我们需要把jdk安装目录下的bin目录增加到现有的PATH变量中,bin目录中包含经常要用到的可执行文件如javac/java/javadoc等等,设置好PATH变量后,就可以在任何目录下执行javac/java等工具了。 

(2)、CLASSPATH环境变量:作用是指定类搜索路径,要使用已经编写好的类,前提当然是能够找到它们了,JVM就是通过CLASSPTH来寻找类的。我们 需要把jdk安装目录下的lib子目录中的dt.jar和tools.jar设置到CLASSPATH中,当然,当前目录“.”也必须加入到该变量中。 javac -c  路径 (可以指定class文件存放目录) java -cp  路径  (可以指定要执行的class目录) 

(3)、JAVA_HOME环境变量:它指向jdk的安装目录,Eclipse/NetBeans/Tomcat等软件就是通过搜索JAVA_HOME变量来找到并使用安装好的jdk。 环境变量的作用是指定Java类所在的目录,我们在写好java文件后,去执行java经常会报错找不到主类。就是没有配置好这个变量的原因 。 

规则


Mac 系统的环境变量,加载顺序为:/etc/profile /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc 其中/etc/profile和/etc/paths是系统级别的,系统启动就会加载,后面几个是当前用户级的环境变量* 后面3个按照从前往后的顺序读取,如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,如果~/.bash_profile文件不存在,才会以此类推读取后面的文件 ~/.bashrc没有上述规则,它是bash shell打开的时候载入的。

PATH 的语法为

> # 中间用冒号隔开
export PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:...:<PATH N>

如果要查看 $PATH 的路径

echo $PATH 
etc/paths(如果是全局,建议修改这个文件)
编辑 paths,将环境变量添加到 paths 文件中 ,一行一个路径

/etc/profile(建议不修改这个文件)
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。

/etc/bashrc (一般在这个文件中添加系统级环境变量)
全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件

.profile 文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置
如果你有对/etc/profile有修改的话必须得重启你的修改才会生效,此修改对每个用户都生效

./bashrc 每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
对所有的使用bash的用户修改某个配置并在以后打开的bash都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个bash即可生效。

./bash_profile 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)
需要需要重启才会生效,/etc/profile对所有用户生效,~/.bash_profile只对当前用户生效。

配置JAVA的环境变数例子


d ~
vim .bash_profile

输入内容
# 假如我们有两个JAVA环境,需要任意切换 [java15, java1.8]
export JAVA15_HOME=/Library/Java/JavaVirtualMachines/jdk-15.0.1.jdk/Contents/Home
export JAVA8_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_281.jdk/Contents/Home
export JAVA_HOME=$JAVA8_HOME
alias jdk8='export JAVA_HOME=$JAVA8_HOME'
alias jdk15='export JAVA_HOME=$JAVA15_HOME'

要使这段设置立即生效,直接执行下边命令
source ~/.bash_profile

这样当我们登录该用户后,默认使用 java1.8 版本
如果我们输入 jdk15 则可以直接切换 到 java15 版本

另一个配置环境变数完整的例子(比较好的例子):


终端输入

cd ~
vim ./.bash_profile

打开环境配置文件

输入回车或者o

按i进入输入模式

输入形式如下:

export PATH=$PATH:/usr/local/mysql/bin

按esc并输入:wq!进行保存和退出

输入以下命令,让环境变量生效。

source ./.bash_profile

输入以下命令,查看环境变量是否生效

echo $PATH

注意:由于添加的是用户级别的环境变量,每次启动都需要输入source ./.bash_profile,以使环境变量生效。

为解决此情况,打开cmd,输入

cd ~
vim ./.zshrc   

将source ~/.bash_profile添加至文件末尾,则可以解决。