ubuntu-設定系統環境變數
作者:運動小爽
連結:https://www.jianshu.com/p/12fbfa8c7489
來源:簡書
著作權歸作者所有。商業轉載請聯絡作者獲得授權,非商業轉載請註明出處。
環境變數簡介
bash shell用一個叫做環境變數(environment variable)的特性來儲存有關shell會話和工作環境的資訊.環境變數的使用大大方便了程式或者shell中執行的指令碼查詢和訪問記憶體中儲存的資料和系統資訊.
環境變數分為全域性環境變數和區域性環境變數,標準的命名方式是:全域性變數名用大寫字母命名,區域性變數用小寫字母命名.
這裡主要介紹全域性環境變數.
bash shell中操作環境變數
宣告:在bash shell中對環境變數所做的所有操作只對當前shell有效,退出後再開啟,之前的所有設定全部消失.
這裡介紹如何在bash shell中檢視/新增/刪除環境變數.
檢視所有全域性環境變數有兩個命令:env
和printenv
.
yan@yanubuntu:~$ env
XDG_VTNR=7
XDG_SESSION_ID=c2
...
LESSCLOSE=/usr/bin/lesspipe %s %s
XAUTHORITY=/home/yan/.Xauthority
_=/usr/bin/env
yan@yanubuntu:~$
或者
yan@yanubuntu:~$ printenv
XDG_VTNR=7
XDG_SESSION_ID=c2
...
LESSCLOSE=/usr/bin/lesspipe %s %s
XAUTHORITY=/home/yan/.Xauthority
_=/usr/bin/printenv
yan@yanubuntu:~$
全域性變數有很多,上面用了...
表示省略.
檢視某個環境變數,常用兩種方式:printenv 環境變數名
或者echo $環境變數名
.比如檢視環境變數HOME
的值:
yan@yanubuntu:~$ printenv HOME
/home/yan
或者
yan@yanubuntu:~$ echo $HOME
/home/yan
新增全域性環境變數使用export
命令:
假設我想新增一個環境變數DOWNLOAD,用它來表示預設的下載資料夾/home/yan/download.
檢驗一下,原來環境變數中不包含DOWNLOAD變數:
yan@yanubuntu:~$ printenv DOWNLOAD
yan@yanubuntu:~$
現在新增DOWNLOAD環境變數:
yan@yanubuntu:~$ DOWNLOAD=/home/yan/download
yan@yanubuntu:~$ export DOWNLOAD
yan@yanubuntu:~$ printenv DOWNLOAD
/home/yan/download
yan@yanubuntu:~$
DOWNLOAD環境變數新增成功.可以看出,新增過程包含兩步:首先使用DOWNLOAD=/home/yan/download
建立一個區域性變數;再用export DOWNLOAD
將其匯出成為全域性環境變數.
當然,這兩步可以用下面一條命令代替:
export DOWNLOAD=/home/yan/download
以上是建立一個之前沒有的環境變數.如果某個環境變數已經存在,我們要為這個環境變數新增值怎麼處理?
比如最經常用到的PATH環境變數,先檢視PATH變數的值:
yan@yanubuntu:~$ echo $PATH
/usr/local/cuda-8.0/bin:/home/yan/anaconda2/bin:/home/yan/bin:/home/yan/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
yan@yanubuntu:~$
可以看到,PATH變數包含了多個值/路徑,每個值之間用冒號:
隔開(注意windows下面用的是分號;
隔開).
現在我們想新新增一條路徑/home/yan/anaconda2到PATH變數,採用以下命令:
export PATH=/home/yan/anaconda2:$PATH
或者
export PATH=$PATH:/home/yan/anaconda2
實際演示:
yan@yanubuntu:~$ echo $PATH
/usr/local/cuda-8.0/bin:/home/yan/anaconda2/bin:/home/yan/bin:/home/yan/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
yan@yanubuntu:~$ export PATH=/home/yan/anaconda2:$PATH
yan@yanubuntu:~$ echo $PATH
/home/yan/anaconda2:/usr/local/cuda-8.0/bin:/home/yan/anaconda2/bin:/home/yan/bin:/home/yan/.local/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap/bin
yan@yanubuntu:~$
可以看到,新路徑已經被新增進去了.
在某個環境變數新增新的值和新增一個新的環境變數相比(以PATH為例),多了一個$PATH
和:
.
網上有人說的不錯,這個有點類似於i=i+1
的味道.
刪除全域性變數名使用unset
命令,比如想要刪除掉剛才新增的DOWNLOAD
變數:
yan@yanubuntu:~$ printenv DOWNLOAD
/home/yan/download
yan@yanubuntu:~$ unset DOWNLOAD
yan@yanubuntu:~$ printenv DOWNLOAD
yan@yanubuntu:~$
如果想要刪除PATH變數中的某個路徑怎麼辦?直接把當前shell關掉重開一個吧.
永久設定環境變數的幾種方法
前面提到了,在bash shell中對環境變數的所有操作都是暫時性的,退出當前shell就無效了.如何使得對環境變數的設定永久有效?首先得認識以下幾個檔案:
-
/etc/profile
-
/etc/environment
-
~/.profile
-
~/.bashrc
設定/etc/profile
實際上,當我們登入Linux系統時,bash作為預設的shell,它會在幾個檔案中查詢命令.這些檔案稱為啟動檔案或者環境檔案.其中,/etc/profile檔案就是系統預設的bash shell的第一啟動檔案.其中就涉及到了系統環境變數的讀取檔案.所以,可以直接開啟/etc/profile檔案,使用export命令在檔案中新增系統環境變數.
這個檔案的特點是:系統中所有使用者登入時都會執行這個啟動檔案.所以,裡面新增的所有環境變數都系統中的所有使用者有效.
舉個例子,我要將新安裝的anaconda2中的python直譯器作為系統預設的python直譯器,為此,我需要將路徑/home/yan/anaconda2/bin
新增到PATH環境變數中.可以使用以下命令開啟/etc/profile檔案:
yan@yanubuntu:~$ sudo gedit /etc/profile
開啟後在檔案最後面新增以下語句:
export PATH=/home/yan/anaconda2/bin:$PATH
儲存退出,然後在bash中執行source /etc/profile
命令使其生效:
yan@yanubuntu:~$ source /etc/profile
或者重啟系統使其生效.
設定/etc/environment
參考Ubuntu環境變數——新增與刪除,/etc/environment檔案是登入Linux系統時的第二啟動檔案.
使用以下命令開啟/etc/environment檔案:
yan@yanubuntu:~$ sudo gedit /etc/environment
發現裡面只有一行內容:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games"
也就是隻定義了PATH環境變數的值,同樣的例子,我們可以將/etc/environment檔案內容改為:
PATH="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/home/yan/anaconda2/bin"
也就同樣新增了anaconda2路徑到PATH環境變數.同樣需執行source命令或者重啟系統使其生效.
同樣,修改/etc/environment檔案也是對所有登入使用者有效.
設定~/.profile
設定~/.profile檔案同樣可以達到永久設定環境變數的目的,但是它只是對當前使用者有效.
我們知道,Linux中的~
就代表了當前使用者的主目錄,比如此時,~/.profile就相當於/home/yan/.profile.
其中yan是我的登入使用者名稱.因此,當前Linux系統中建立了幾個使用者,就有幾個~/.profile檔案.當然,對於個人筆記本而言,一般只有一個登入使用者.
既然搞清楚了,同樣的例子,使用以下命令開啟~/.profile檔案:
yan@yanubuntu:~$ sudo gedit ~/.profile
同樣在/.profile檔案最後新增export命令,下面是/.profile檔案內容,很短:
# ~/.profile: executed by the command interpreter for login shells.
# This file is not read by bash(1), if ~/.bash_profile or ~/.bash_login
# exists.
# see /usr/share/doc/bash/examples/startup-files for examples.
# the files are located in the bash-doc package.
# the default umask is set in /etc/profile; for setting the umask
# for ssh logins, install and configure the libpam-umask package.
#umask 022
# if running bash
if [ -n "$BASH_VERSION" ]; then
# include .bashrc if it exists
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
fi
fi
# set PATH so it includes user's private bin directories
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
export PATH=/home/yan/anaconda2/bin:$PATH
同樣儲存後執行source命令或者重啟系統使其生效.
設定~/.bashrc檔案
最後還有一個/.bashrc檔案,修改這個檔案同樣可以達到永久設定環境變數的目的,實際上,這個檔案是被上面的/.profile檔案執行的,以上~/.profile檔案中有這兩句:
if [ -f "$HOME/.bashrc" ]; then
. "$HOME/.bashrc"
好了,同樣的,使用gedit編輯器開啟~/.bashrc檔案並在檔案末尾加入export命令,儲存後執行source命令或者重啟系統使其生效.
同樣,設定~/.bashrc檔案修改的環境變數也只對當前使用者有效.
永久設定ubuntu(我用的ubuntu16.04),修改以上任意一個檔案都可以(其實還沒總結完,好像還可以修改/etc/bash.bashrc,/root/bashrc等目錄等可以,沒去試,就試了以上幾個,夠用就行).當為了不影響系統上的其他使用者,最好還是修改自己的~/.profile檔案或者~/.bashrc檔案吧.
相關文章
- linux系統設定環境變數Linux變數
- 系統預設環境變數PATH設定變數
- 設定環境變數變數
- 設定的系統環境變數不成功 MAC變數Mac
- export 設定環境變數Export變數
- oracle環境變數設定Oracle變數
- CentOS環境變數設定CentOS變數
- redhatas 設定環境變數Redhat變數
- rman 設定環境變數變數
- JAVA環境變數設定Java變數
- 設定環境變數(轉)變數
- Linux系統設定環境變數是怎樣的Linux變數
- win7系統怎麼設定環境變數pathWin7變數
- Linux設定環境變數Linux變數
- c#環境變數設定C#變數
- XMLBeans 環境變數設定XMLBean變數
- Linux 環境變數設定Linux變數
- java JDK環境變數設定JavaJDK變數
- RMAN環境變數的設定變數
- java jdk 設定環境變數JavaJDK變數
- ansible 設定環境變數變數
- ansible設定環境變數變數
- 1.3.3.3. 步驟2:設定作業系統環境變數作業系統變數
- w10系統怎麼設定tomcat環境變數 w10電腦tomcat環境變數設定步驟Tomcat變數
- 什麼是環境變數?Python中如何設定環境變數?變數Python
- win10系統adb環境變數配置怎麼設定_win10系統adb環境變數配置的方法Win10變數
- win10環境變數怎麼設定 win10設定環境變數的方法Win10變數
- 如何設定與檢視Linux系統中的環境變數?Linux變數
- 針對10G UNIX系統環境變數的設定變數
- Golang環境變數設定詳解Golang變數
- JDK1.8環境變數設定JDK變數
- 環境變數的設定方法(轉)~變數
- Centos7環境變數設定CentOS變數
- Vue 設定環境變數和模式Vue變數模式
- Mac上設定Java環境變數MacJava變數
- CentOS 6.5 Oracle 環境變數設定CentOSOracle變數
- npm scripts設定環境變數方法NPM變數
- JDK 1.6環境變數如何設定?JDK變數