[轉載] mac開發者,你不得不知道的環境變更設定方法(如Java的環境變更 source命令 )

ld909發表於2020-11-30

參考連結: 設定Java環境

Mac是基於Unix的,所有先來幾個常識與命令: 

 

Unix中雙引號單引號反引號(" ' `)的區別 

 

  

  Unix中雙引號起到“弱引用”的作用:被引用的字元大部分被按照字元字面的意思解釋執行,除了了$,\,`字元除外。 

  [因為弱,所以要“雙”引號]  

  Unix中單引號起到“強引用”的作用:被引用的字元全部被按照字元字面的意思解釋執行。 

  [因為強,所以要“單”引號就夠了]  

  Unix中反引號起到“反引用”的作用:被引用的字元全部被按照字元代表的命解釋執行,通常用於命令替換。 

  [因為要反過來解釋,所以要“反”引號]  

  例子: 

  echo “$HOME” 

  output:列印HOME變數代表的值。 

  echo ’$HOME‘ 

  output:列印$HOME。 

  echo "the date today is `date`" 

  output: the date today is +date 命令的結果 

  命令替換:`date`先於echo執行,結果替換到echo中。  

   

  echo 'the date today is `date`‘ 

  output: the date today is `date` 

  

 source命令  

 

  一、首先檢視shell版本 使用命令echo $SHELL 如果輸出的是:csh或者是tcsh,就是C Shell。 如果輸出的是:bash,sh,zsh,就是Bourne Shell的一個變種。 Mac OS X 10.3之後預設的是Bourne Shell。 Mac OS X 10.2之前預設的是C Shell,使用的命令是setev。 二、針對Bourne Shell新增環境變數 1.建立並以 TextEdit 的方式開啟 ~/.bash_profile 檔案 touch ~/.bash_profile; open -t ~/.bash_profile 2.新增環境變數 export PATH="$HOME/.rbenv/bin:$PATH" 3.讓以上所做的配置生效 source ~/.bash_profile 4.檢視是否生效(有時可能需要關閉當前 Terminal 視窗重新開啟一個) echo $PATH 需要注意的一點(冒號乃環境變數的分隔符): $HOME/.rbenv/bin:$PATH 中的 $PATH 特指 /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 如果要新增多個環境變數的話,需按照如下的方式來書寫: export PATH="$PATH:/Applications/MacVim-snapshot-68" export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)"  三、針對Bourne Shell刪除環境變數 若要刪除環境變數:unset DYLD_LIBRARY_PATH,其中DYLD_LIBRARY_PATH(環境變數名) 刪除環境變數之後需要先logout,關閉terminal,再重新開啟terminal  四、針對Bourne Shell恢復環境變數 PATH=$(getconf PATH),執行此命令將環境變數恢復到系統初始值 source命令(從 C Shell 而來)是bash shell的內建命令。點命令,就是一個點符號,(從Bourne Shell而來)是source的另一名稱。同樣的,當前指令碼中設定的變數也將作為指令碼的環境,source(或點)命令通常用於重新執行剛修改的初始化檔案,如 .bash_profile 和 .profile 等等。例如,如果在登入後對 .bash_profile 中的 EDITER 和 TERM 變數做了修改,則可以用source命令重新執行 .bash_profile 中的命令而不用登出並重新登入。把兩個命令用&&聯接起來,如 make mrproper &&make menuconfig ,表示要第一個命令執行成功才能執行第二個命令。 在編譯核心時,常常要反覆輸入一長串命令,如 make mrproper make menuconfig make dep make clean make bzImage ....... 

  

 Mac OS增刪環境變數 

 

  一、首先檢視shell版本 使用命令echo $SHELL 如果輸出的是:csh或者是tcsh,就是C Shell。 如果輸出的是:bash,sh,zsh,就是Bourne Shell的一個變種。 Mac OS X 10.3之後預設的是Bourne Shell。 Mac OS X 10.2之前預設的是C Shell,使用的命令是setev。 二、針對Bourne Shell新增環境變數 1.建立並以 TextEdit 的方式開啟 ~/.bash_profile 檔案 touch ~/.bash_profile; open -t ~/.bash_profile 2.新增環境變數 export PATH="$HOME/.rbenv/bin:$PATH" 3.讓以上所做的配置生效 source ~/.bash_profile 4.檢視是否生效(有時可能需要關閉當前 Terminal 視窗重新開啟一個) echo $PATH 需要注意的一點(冒號乃環境變數的分隔符): $HOME/.rbenv/bin:$PATH 中的 $PATH 特指 /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 如果要新增多個環境變數的話,需按照如下的方式來書寫: export PATH="$PATH:/Applications/MacVim-snapshot-68" export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" 三、針對Bourne Shell刪除環境變數 若要刪除環境變數:unset DYLD_LIBRARY_PATH,其中DYLD_LIBRARY_PATH(環境變數名) 刪除環境變數之後需要先logout,關閉terminal,再重新開啟terminal 四、針對Bourne Shell恢復環境變數 PATH=$(getconf PATH),執行此命令將環境變數恢復到系統初始值 

  

  

  Mac新增環境變數的三種方法 

  

   法一: sudo vi /etc/paths 來編輯 paths,將環境變數新增到 paths 中。 vim 是一個編輯器,另外還有幾個,如:Pico,Emacs。 Hint:輸入環境變數時,不用一個一個地輸入,只要拖動資料夾到 Terminal 裡就可以了。 法二: 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.建立並以 TextEdit 的方式開啟 ~/.bash_profile 檔案 touch ~/.bash_profile; open -t ~/.bash_profile 2.新增環境變數 export PATH="$HOME/.rbenv/bin:$PATH" 3.讓以上所做的配置生效 source ~/.bash_profile 4.檢視是否生效(有時可能需要關閉當前 Terminal 視窗重新開啟一個) echo $PATH 需要注意的一點(冒號乃環境變數的分隔符): $HOME/.rbenv/bin:$PATH 中的 $PATH 特指 /usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin 如果要新增多個環境變數的話,需按照如下的方式來書寫: export PATH="$PATH:/Applications/MacVim-snapshot-68" export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" export PATH="$HOME/.rbenv/bin:$PATH" eval "$(rbenv init -)" 

   

  

  

  Mac上的Java究竟在哪兒 

  

   習慣了在Windows下開發的朋友,初次在Mac下進行Java程式設計開發對其安裝位置都要糾結半天。這裡作如下說明 1. Mac下當你在【終端】輸入java -version時,是執行的哪裡的java呢,which java命令可以看到,就是【/usr/bin/java】 2. 【/usr/bin/java】只是個替身,實際指向【/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java】,如圖,ls -l java就可以看到  3. 第2點提到的【/System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java】其實也不是真正的java,因為Current資料夾是替身,它指向了同目錄下的某個版本,例如A資料夾,如下圖:(這樣的好處是裝了多個版本java後,可以方便地調整Current指向,使得不同版本java變成系統預設的,通常在【實用工具】->【Java偏好設定】裡可以調整)

   

  

    4.第3點提到的A資料夾是安裝java後系統生成的。它裡面的Commands資料夾下有個java可執行檔案,這個java其實呼叫了真真正正的java原身–>【/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Home/bin/java】(你試試把這個java改個名,再在終端裡輸入java就明白了哦) PS:這裡的版本號(1.6.0_37-b06-434)不同的機器可能不一樣,也可能會存在多個版本,這就看你機器上裝了多少個版本的java了 5. 歸根到底,【/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Home/bin/java】才是真正的工作者啊,繞吧 

   

  $JAVA_HOME環境變數在Mac OS X中設定的問題 

   

    Mac OSX新版本(10.5+)之後,已經建議$JAVA_HOME的設定用 /usr/libexec/java_home,因為java_home 可以根據你的需要返回指定的版本。 

    1、預設是檢視當前版本: 

    

    

     

      

       1 $ /usr/libexec/java_home 

      

      

       2 /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home 

      

     

    

    2、-V (大寫)引數可以列出所有的版本: 

    

     

      

       1 $ /usr/libexec/java_home -V 

      

      

       2 Matching Java Virtual Machines (5): 

      

      

       3     1.7.0_25, x86_64:   "Java SE 7"/Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home 

      

      

       4     1.6.0_65-b14-462, x86_64:   "Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 

      

      

       5     1.6.0_65-b14-462, i386: "Java SE 6"/System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 

      

      

       6     1.6.0_37-b06-434, x86_64:   "Java SE 6"/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Home 

      

      

       7     1.6.0_37-b06-434, i386: "Java SE 6"/Library/Java/JavaVirtualMachines/1.6.0_37-b06-434.jdk/Contents/Home 

      

      

       8   

      

      

       9 /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home 

      

     

    

    3、-a 引數可以根據CPU的型別過濾 

    

     

      

       1 $ /usr/libexec/java_home -a i386 

      

      

       2 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 

      

      

       3 $ /usr/libexec/java_home -a x86_64 

      

      

       4 /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home 

      

     

    

    4、-d 引數可以過濾 32位、64位 

    

     

      

       1 $ /usr/libexec/java_home -d 32 

      

      

       2 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 

      

      

       3 $ /usr/libexec/java_home -d 64 

      

      

       4 /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home 

      

     

    

    5、-v (小寫)引數可以過濾版本: 

    

     

      

       1 micmiu-mbp:~ micmiu$ /usr/libexec/java_home -v 1.6 

      

      

       2 /System/Library/Java/JavaVirtualMachines/1.6.0.jdk/Contents/Home 

      

      

       3 micmiu-mbp:~ micmiu$ /usr/libexec/java_home -v 1.7 

      

      

       4 /Library/Java/JavaVirtualMachines/jdk1.7.0_25.jdk/Contents/Home 

      

     

    

    以後就可以在~/.profile  中按照如下方法自定義$JAVA_HOME: 

    

     

      

       1 #指定預設版本 

      

      

       2 export JAVA_HOME=`/usr/libexec/java_home` 

      

      

       3 export JAVA_HOME=$(/usr/libexec/java_home) 

      

      

       4 #指定自定義版本 

      

      

       5 export JAVA_HOME=`/usr/libexec/java_home -d 64 -v 1.6` 

      

      

       6 export JAVA_HOME=$(/usr/libexec/java_home -d 64 -v 1.6)

相關文章