1.环境变量的概念
通俗的讲,环境变量就是告诉电脑(实际是操作系统) 几个目录。
这几个目录下存储又可执行文件,如前面显示的/usr/bin目录,大部分的系统命令都在这个目录下。
当我们输入命令mkdir 时,系统就会在环境变量所代表的几个目录从前都厚去查找,哪个里面有mkdir 文件,然后去执行mkdir 命令。
系统中环境变量的名字是PATH,其内容可通过下面的命令显示(根据操作系统不同和配置不同,略有差别,但格式是统一的,: 分割的一堆路径)
# 查看环境变量
echo $PATH
# /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin
#新建一个文件
$ cat <<END >run.sh
-> echo " hello world ! "
-> END
#执行文件,发现失败
$ run.sh
-bash: run.sh: 未找到命令
所以如果我们想让自己的命令能被系统找到,就需要把命令所在的目录加到环境变量里面
# 加到环境变量的路径必须是全路径,全路径指以/开头或以~开头的路径
# 注意第一个PATH 不含$, 第二个PATH 有$ 符号
export PATH=$PATH:/home/ct
echo $PATH
# /usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/ct
再执行,成功
$ run.sh
hello world !
所以在以后安装了新的软件,或者写了新的脚本后,都把软件的可执行程序和可执行的脚本所在的目录,加到环境变量里面就可以了。
但是,在命令行中执行export,对环境变量所做的修改,只对当前终端有效,退出后就无效了。为了使得这一操作,长期有效,我们需要把这句话写入一个文件中,一个登陆服务器就会被自动读取的文件中。
对于普通用户,在远程登录终端时,家目录下的~/.bash_profile (不是~/.bashrc, 在本地登录时才会被读取) 会
自动被读取,所以我们需要把export 语句加入到这个文件中。
系统查找命令的顺序是从环境变量的第一个目录到最后一个目录,在第一次碰到查询的命令后,就调用执行。
假如系统存在一个python 命令,我们自己又安装了一个python (假如在/home/ct/anaconda/bin 目录下),如果我们想执行自己的python 程序,就需要把/home/ct/anaconda/bin 写在$PATH 前面,如下
# 注意$PATH 的顺序
$ export PATH=/home/ct/anaconda/bin:$PATH
环境变量设置的两种方式:1. 给
$PATH
后面新增目录;2. 建一个目录,放在$PATH 中,之后新安装的软件采
用软链方式。
至此,我们可以熟练使用环境变量来简化命令的输入过程了,因为如果没有环境变量,我们就得需要运行/home/ct/anaconda/bin/python 来运行python 命令了。