環境變量和全局的變量有什麼用呢?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軟鏈接和硬連接