环境变量,简要的说,就是指定一个目录,运行软件的时候,相关的程序将会按照该目录寻找相关文件。设置变量对于一般人最实用的功能就是:不用拷贝某些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 。