環境變量,簡要的說,就是指定一個目錄,運行軟件的時候,相關的程序將會按照該目錄尋找相關文件。設置變量對於一般人最實用的功能就是:不用拷貝某些dll文件到系統目錄中了,而path這一系統變量就是系統搜索dll文件的一系列路徑。
在linux系統下,如果你下載並安裝了應用程序,很有可能在鍵入它的名稱時出現“command not found”的提示內容。如果每次都到安裝目標文件夾內,找到可執行文件來進行操作就太繁瑣了。這涉及到環境變量 PATH 的設置問題,而 PATH的設置也是在linux下定制環境變量的一個組成部分。linux 查看環境變量與設置環境變量在使用過程中很常見,本文整理了一些常用的與環境變量相關的命令。
$PATH:決定了shell將到哪些目錄中尋找命令或程序,PATH的值是一系列目錄,當您運行一個程序時,Linux在這些目錄下進行搜尋編譯鏈接。
編輯你的 PATH 聲明,其格式為:
PATH=$PATH:<PATH 1>:<PATH 2>:<PATH 3>:…:<PATH N>
你可以自己加上指定的路徑,中間用冒號隔開。環境變量更改后,在用戶下次登陸時生效,如果想立刻生效,則可執行下面的語句:$ source .bash_profile
需要注意的是,最好不要把當前路徑 “./” 放到 PATH 里,這樣可能會受到意想不到的攻擊。完成后,可以通過 $ echo $PATH 查看當前的搜索路徑。這樣定制后,就可以避免頻繁的啟動位於 shell 搜索的路徑之外的程序了。
一、查看環境變量
(1)用 export 命令查看PATH值
1 bogon:~ a1$ export 2 declare -x HOME="/Users/a1" 3 declare -x LOGNAME="a1" 4 declare -x MAIL="/var/mail/a1" 5 declare -x OBJC_DISABLE_INITIALIZE_FORK_SAFETY="YES" 6 declare -x OLDPWD 7 declare -x PATH="/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mysql/bin" 8 declare -x PWD="/Users/a1" 9 declare -x SHELL="/bin/bash" 10 declare -x SHLVL="1" 11 declare -x SSH_CLIENT="10.144.33.72 60090 22" 12 declare -x SSH_CONNECTION="10.144.33.72 60090 10.144.24.130 22" 13 declare -x SSH_TTY="/dev/ttys001" 14 declare -x TERM="xterm" 15 declare -x TMPDIR="/var/folders/ny/n3gm1zvn43q_6cc900xdc59c0000gn/T/" 16 declare -x USER="a1"
(2)單獨查看PATH環境變量,可用echo $PATH
1 bogon:~ a1$ echo $PATH 2 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mysql/bin
(3)用env命令顯示所有的環境變量
1 bogon:~ a1$ env 2 TERM=xterm 3 SHELL=/bin/bash 4 TMPDIR=/var/folders/ny/n3gm1zvn43q_6cc900xdc59c0000gn/T/ 5 SSH_CLIENT=10.144.33.72 60090 22 6 SSH_TTY=/dev/ttys001 7 OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES 8 USER=a1 9 MAIL=/var/mail/a1 10 PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mysql/bin 11 PWD=/Users/a1 12 SHLVL=1 13 HOME=/Users/a1 14 LOGNAME=a1 15 SSH_CONNECTION=10.144.33.72 60090 10.144.24.130 22 16 _=/usr/bin/env
(4)用set命令顯示所有本地定義的Shell變量
1 bogon:~ a1$ set 2 BASH=/bin/bash 3 BASH_ARGC=() 4 BASH_ARGV=() 5 BASH_LINENO=() 6 BASH_SOURCE=() 7 BASH_VERSINFO=([0]="3" [1]="2" [2]="57" [3]="1" [4]="release" [5]="x86_64-apple-darwin17") 8 BASH_VERSION='3.2.57(1)-release' 9 COLUMNS=236 10 DIRSTACK=() 11 EUID=501 12 GROUPS=() 13 HISTFILE=/Users/a1/.bash_history 14 HISTFILESIZE=500 15 HISTSIZE=500 16 HOME=/Users/a1 17 HOSTNAME=bogon 18 HOSTTYPE=x86_64 19 IFS=$' \t\n' 20 LINES=56 21 LOGNAME=a1 22 MACHTYPE=x86_64-apple-darwin17 23 MAIL=/var/mail/a1 24 MAILCHECK=60 25 OBJC_DISABLE_INITIALIZE_FORK_SAFETY=YES 26 OPTERR=1 27 OPTIND=1 28 OSTYPE=darwin17 29 PATH=/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/mysql/bin 30 PIPESTATUS=([0]="0") 31 PPID=40148 32 PS1='\h:\W \u\$ ' 33 PS2='> ' 34 PS4='+ ' 35 PWD=/Users/a1 36 SHELL=/bin/bash 37 SHELLOPTS=braceexpand:emacs:hashall:histexpand:history:interactive-comments:monitor 38 SHLVL=1 39 SSH_CLIENT='10.144.33.72 60090 22' 40 SSH_CONNECTION='10.144.33.72 60090 10.144.24.130 22' 41 SSH_TTY=/dev/ttys001 42 TERM=xterm 43 TMPDIR=/var/folders/ny/n3gm1zvn43q_6cc900xdc59c0000gn/T/ 44 UID=501 45 USER=a1 46 _=env
二、設置環境變量
(1)添加PATH環境變量(臨時有效),在終端直接運行export命令定義變量
在shell的命令行下直接使用如下格式[export 變量名=變量值] 定義變量
1 [root@localhost u-boot-sh4]#export PATH=/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH 2 3 再次查看: 4 5 [root@localhost u-boot-sh4]# echo $PATH 6 /opt/STM/STLinux-2.3/devkit/sh4/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin
說明添加PATH成功。
上述方法的PATH 在終端關閉 后就會消失。
(2)在用戶目錄下的.bash_profile文件中增加變量【對單一用戶生效(永久的)】
用vi在用戶目錄下的.bash_profile文件中增加變量,改變量僅會對當前用戶有效,並且是“永久的”。 這種方法更為安全,它可以把使用這些環境變量的權限控制到用戶級別,這里是針對某一個特定的用戶,如果你需要給某個用戶權限使用這些環境變量,你只需要修改其個人用戶主目錄下的.bash_profile文件就可以了。通常.bash_profile和.bashrc認為效果一樣,也就是此處在.bashrc中增加環境變量也行。
例如:編輯guok用戶目錄(/home/guok)下的.bash_profile
1 $ vi /home/guok/.bash.profile 2 添加如下內容: 3 export PATH="/opt/STM/STLinux-2.3/devkit/sh4/bin:$PATH"
或者
#vim ~/.bashrc
注:修改文件后要想馬上生效還要運行$ source /home/guok/.bash_profile不然只能在下次重進此用戶時生效。
(3)在/etc/profile文件中添加變量【對所有用戶生效(永久的)】
用VI在文件/etc/profile文件中增加變量,該變量將會對Linux下所有用戶有效,並且是“永久的”。
例如:編輯/etc/profile文件,添加CLASSPATH變量
1 $ vi /etc/profile 2 export CLASSPATH=./JAVA_HOME/lib;$JAVA_HOME/jre/lib
注:修改文件后要想馬上生效還要運行# source /etc/profile不然只能在下次重進此用戶時生效。
三、系統啟動讀取順序
/etc/profile,/etc/bashrc 是系統全局環境變量設定
~/.profile,~/.bashrc 用戶家目錄下的私有環境變量設定
當登入系統時候獲得一個shell進程時,其讀取環境設定檔有三步 :
1)、首先讀入的是全局環境變量設定檔/etc/profile,然后根據其內容讀取額外的設定的文檔,如 /etc/profile.d和/etc/inputrc 。
2)、然后根據不同使用者帳號,去其根目錄讀取~/.bash_profile,如果這讀取不了就讀取~/.bash_login,這個也讀取不了才會讀取 ~/.profile,這三個文檔設定基本上是一樣的,讀取有優先關系 。其中,Unbutu默認沒有~/.bash_profile文件,可新建。
3)、最后在根據用戶帳號讀取~/.bashrc 。