使用惯了win,在用mac系统添加环境变量总觉得麻烦,而且几个配置文件也没弄到底有什么区别,今天就来总结一下
我们先来看这样的一个使用场景1,我们有一个程序Java,需要读取某个文件(/data/file.txt)。 那么我们在运行的时候是不是需要做如下的步骤:
但是,当我们需要同时使用多个工具的时候,比如又有java、maven、git等等,而且是多台机器的时候,我们通常需要很多繁琐的cd操作。而配置环境变量 就可以使我们可以快速的运行这些脚本了。
如果我们又有JDK1.7,又有JDK1.8,而且需要经常的切换,那么怎么办?
可以配置局部变量比如:
1 export JDK1.7=/usr/apps/jdk1.7
2 export JDK1.8=/usr/apps/jdk1.8
3 export PATH=$JDK1.7/bin
这样,在改变的时候,就不需要去改变目录,而改变部分语句可以了。
ok,有了上面的介绍,我们大概就可以知道环境变量到底有什么用处了。用处就是可以在操作系统的各个目录下,都能访问到需要的工具目录内的内容,和Windows的桌面的思想十分相似,而且相当于在系统的各处都具有这个桌面的快捷方式。
mac 一般使用bash作为默认shell
Mac系统的环境变量:
a. /etc/profile
b. /etc/paths
c. ~/.bash_profile
d. ~/.bash_login
e. ~/.profile
f. ~/.bashrc
加载顺序为:
/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::::------:
下面的几个文件设置是全局的,修改时需要root权限
1)/etc/paths (全局建议修改这个文件 )
编辑 paths,将环境变量添加到 paths文件中 ,一行一个路径
Hint:输入环境变量时,不用一个一个地输入,只要拖动文件夹到 Terminal 里就可以了。
2)/etc/profile (建议不修改这个文件 )
全局(公有)配置,不管是哪个用户,登录时都会读取该文件。
3)/etc/bashrc (一般在这个文件中添加系统级环境变量)
全局(公有)配置,bash shell执行时,不管是何种方式,都会读取此文件。
4)
1.创建一个文件:
sudo touch /etc/paths.d/mysql
2.用 vim 打开这个文件(如果是以 open -t 的方式打开,则不允许编辑):
sudo vim /etc/paths.d/mysql
3.编辑该文件,键入路径并保存(关闭该 Terminal 窗口并重新打开一个,就能使用 mysql 命令了)
/usr/local/mysql/bin
据说,这样可以自己生成新的文件,不用把变量全都放到 paths 一个文件里,方便管理。
1)~/.profile 文件为系统的每个用户设置环境信息,当用户第一次登录时,该文件被执行.并从/etc/profile.d目录的配置文件中搜集shell的设置
使用注意:如果你有对/etc/profile有修改的话必须得重启你的修改才会生效,此修改对每个用户都生效。
2)~/.bashrc 每一个运行bash shell的用户执行此文件.当bash shell被打开时,该文件被读取.
使用注意 对所有的使用bash的用户修改某个配置并在以后打开的bash都生效的话可以修改这个文件,修改这个文件不用重启,重新打开一个bash即可生效。
3)~/.bash_profile 该文件包含专用于你的bash shell的bash信息,当登录时以及每次打开新的shell时,该文件被读取.(每个用户都有一个.bashrc文件,在用户目录下)
使用注意 需要需要重启才会生效,/etc/profile对所有用户生效,~/.bash_profile只对当前用户生效。
1)~/.bash_profile (任意一个文件中添加用户级环境变量)
(注:Linux 里面是 .bashrc 而 Mac 是 .bash_profile)
若bash shell是以login方式执行时,才会读取此文件。该文件仅仅执行一次!默认情况下,他设置一些环境变量
设置命令别名alias ll=’ls -la’
设置环境变量:
export PATH=/opt/local/bin:/opt/local/sbin:$PATH
2)~/.bashrc 同上
如果想立刻生效,则可执行下面的语句:
$ source ./.bash_profile
一般环境变量更改后,重启后生效。
注意:如果你是第一次配置环境变量,可以使用“touch .bash_profile” 创建一个.bash_profile的隐藏配置文件(如果你是为编辑已存在的配置文件,则使用"open -e .bash_profile"命令):
1)查询是否存在bash_profile文件,在终端中执行:
~/.bash_profile
No such file or directory
2)创建 .bash_profile文件
进入用户home目录,终端中执行:
cd ~
touch .bash_profile
3)输入vim ./.bash_profile 确定enter,然后就打开了bash_profile文件
科普一下(这段可跳过)在Mac中我们的环境是添加到PATH
路径下的,系统运行的时候会直接去找/usr/libexec/path_helper
这个文件,里面内容就是我们通过环境变量设置的PATH
,所以我们设置环境变量是通过PATH来设置的。
可以看到它里面加载了我们设置的环境变量。
4)从上图可以看到已经配置过的一些环境变量,以添加maven的环境变量为例:
export MAVEN_HOME=/usr/local/apache-maven-3.6.0
export PATH=$PATH:$MAVEN_HOME
点击i
建进入编 辑状态。首先export + 自定义名字(MAVEN_HOME) = 路径名称
,然后使用export PATH=$PATH:$+自定义名字(MAVEN_HOME)
。(在一个PATH下添加多个环境变量后面用:
号把路径拼接下来,就像我们在windows上那样,我这里就是这样做的)这样一个环境变量就添加上了,然后按esc
退出编辑状态,使用:wq
退出。(有时会因为权限问题提示:E45: 'readonly' option is set (add ! to override)错误,这时使用:wq!
强制保存退出就ok)
注意:先定义路径(MAVEN_HOME)
,后用path引入(PATH)
,是从上到下的顺序,要不然就读不出。
另外一点就是在bash_profile
图中我最后添加了$PATH:
这里通过它引用了一些系统基础的命令,如我们刚刚使用vim
,切记一定要加上否则连系统基础命令都会报command not found
的(我刚刚弄的时候忘了加,整得一脸懵逼)
5)使用source ./.bash_profile
使刚刚修改的文件生效。
6)这个时候我们就可以使用echo $PATH
(echo+自定义名字(MAVEN_HOME)查看单独设置的某一条环境变量)就可以看到刚刚添加的路径了,我常使用xx version的方式查看刚刚添加的是否神效比如上面添加的maven(直接使用mvn version):