环境变量和全局的变量有什么用呢?javascript
咱们先来看这样的一个使用场景1,咱们有一个程序Java,须要读取某个文件(/data/file.txt)。
那么咱们在运行的时候是否是须要作以下的步骤:html
执行Java命令;java
可是,当咱们须要同时使用多个工具的时候,好比又有java、maven、git等等,并且是多台机器的时候,咱们一般须要不少繁琐的cd操做。而配置环境变量 就可使咱们能够快速的运行这些脚本了。mysql
若是咱们又有JDK1.7,又有JDK1.8,并且须要常常的切换,那么怎么办?
能够配置局部变量好比:linux
export JDK1.7=/usr/apps/jdk1.7 export JDK1.8=/usr/apps/jdk1.8 export PATH=$JDK1.7/bin
这样,在改变的时候,就不须要所有的改变,而改变部分就能够了。git
ok,有了上面的介绍,咱们大概就能够知道环境变量到底有什么用处了。用处就是能够在操做系统的各个目录下,都能访问到须要的工具目录内的内容,和Windows的桌面的思想十分类似,并且至关于在系统的各处都具备这个桌面的快捷方式。sql
在讲解Mac环境变量配置以前,你们能够打开dos框,输入
“echo $PATH” 查看当前的path下有什么东西。
我的的结果是这样的:shell
localhost:/ Sean$ echo $PATH /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/Sean/Software/hadoop/hadoop-2.2.0/bin:/Users/Sean/Software/Scala/scala-2.11.8/bin:/Users/Sean/Software/Spark/spark-2.0.2-bin-hadoop2.7/bin
能够看出,个人目录下有”/usr/local/bin、/usr/bin、/Users/Sean/Software/hadoop/hadoop-2.2.0/bin”都被做为环境变量进行加载了。
那么下面我就讲解下,这个东西到底应当如何配置。vim
其配置文件的优先级以下所示:ruby
/etc/profile
/etc/paths
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
1)/etc/paths (全局建议修改这个文件 )
编辑 paths,将环境变量添加到 paths文件中 ,一行一个路径
Hint:输入环境变量时,不用一个一个地输入,只要拖动文件夹到 Terminal 里就能够了。
2)/etc/profile (建议不修改这个文件 )
全局(公有)配置,不论是哪一个用户,登陆时都会读取该文件。
3)/etc/bashrc (通常在这个文件中添加系统级环境变量)
全局(公有)配置,bash shell执行时,不论是何种方式,都会读取此文件。
4)~/.bash_profile (通常在这个文件中添加用户级环境变量)
每一个用户均可使用该文件输入专用于本身使用的shell信息,当用户登陆时,该文件仅仅执行一次!
5)
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 一个文件里,方便管理。
sudo vi /etc/hosts
PATH的格式为:
PATH=$PATH::::——: ,中间用冒号隔开。
[root@localhost u-boot-sh4]#export PATH=/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH
[root@localhost u-boot-sh4]#echo $PATH
/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
# vim /etc/profile
export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"
保存,退出。
#source /etc/profile
不报错则成功。
若是想马上生效,则可执行下面的语句:$ source .bash_profile(这是文件名)。
环境变量更改后,在用户下次登录时生效。
另外有不少小伙伴可能发现了,在mac上不设置环境变量有的时候也能够直接就访问到了某些文件。这个是为何呢?答案是用了软链接。
可使用cat命令查看paths文件
localhost:/ Sean$ cat etc/paths /usr/local/bin /usr/bin /bin /usr/sbin /sbin
答案就是mac会自动加载paths目录,自动加载这些文件夹下的文件.因此使用软链接,在这些文件夹下创建软链接,可能达到相同的效果。
ls -li
406876 lrwxr-xr-x 1 root wheel 73 7 9 2016 jar -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jar 406877 lrwxr-xr-x 1 root wheel 79 7 9 2016 jarsigner -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jarsigner 406878 lrwxr-xr-x 1 root wheel 74 7 9 2016 java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java 406879 lrwxr-xr-x 1 root wheel 75 7 9 2016 javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac 406880 lrwxr-xr-x 1 root wheel 77 7 9 2016 javadoc -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javadoc 406881 lrwxr-xr-x 1 root wheel 75 7 9 2016 javah -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javah 406882 lrwxr-xr-x 1 root wheel 75 7 9 2016 javap -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javap 406883 lrwxr-xr-x 1 root wheel 76 7 9 2016 javaws -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javaws 406884 lrwxr-xr-x 1 root wheel 74 7 9 2016 jcmd -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jcmd 406885 lrwxr-xr-x 1 root wheel 78 7 9 2016 jconsole -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jconsole 406886 lrwxr-xr-x 1 root wheel 73 7 9 2016 jdb -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jdb 406887 lrwxr-xr-x 1 root wheel 75 7 9 2016 jdeps -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jdeps 406888 lrwxr-xr-x 1 root wheel 74 7 9 2016 jhat -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jhat 406889 lrwxr-xr-x 1 root wheel 75 7 9 2016 jinfo -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jinfo 406890 lrwxr-xr-x 1 root wheel 73 7 9 2016 jjs -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jjs 406891 lrwxr-xr-x 1 root wheel 74 7 9 2016 jmap -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jmap 406892 lrwxr-xr-x 1 root wheel 73 7 9 2016 jmc -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jmc
ln -s /data/kafka /kafka
ls -li 11373698 lrwxr-xr-x 1 root wheel 11 1 19 18:09 kafka -> /data/kafka
[1]. Mac 可设置环境变量的位置、查看和添加PATH环境变量
[2]. Mac 的环境变量设置
[3]. Linux下创建软链接
[4]. Linux软链接和硬连接