计算机系统自己就有不少内部命令,好比cd、ls这样的shell命令,本质上这些命令都是一些存放在系统特定目录下的程序文件,系统找到这些文件后去执行这些程序,那么在shell中使用这些命令时系统如何去寻找这些命令的位置呢 ?系统也不是神,它必须得知道哪些地方是它须要去搜索寻找这些shell命令程序文件的地方,因此有一些默认的位置是肯定下来的系统会寻找的位置,好比说/bin, /usr/bin,系统会在这些目录里寻找shell里出现的命令,找到后就会执行文件中写的程序。java
那么对于第三方的程序呢,好比java,在安装这些程序以后若是想要在shell中使用这些程序呢?咱们就得告诉系统咱们的shell命令对应放在哪些目录里,这样系统就能够根据咱们的提示去这些目录下寻找相应的文件、执行其中的程序,那么,咱们完成这种提示的方法就是在系统特定位置加入文件来做为环境变量的存放文件,系统会在加载环境变量文件后知晓咱们输入的shell命令对应的文件位置,实现第三方程序shell命令的寻找。mysql
不管是OS X,仍是Windows和Linux,环境变量起到的做用都是相似。sql
咱们以mysql为例来讲明一下Mac下环境变量的配置方法。shell
下载mysql的包解压(或者安装)并将其根目录命名为mysql,最终移动到/usr/local目录下(或者安装到这个路径下)。
这个路径下的程序文件是不为系统shell所知的,由于咱们系统的默认几个路径并不包括这个路径,所以若是这时在shell里输入mysql命令是无效的:bash
Jinhao-Mac:~ jinhao$ mysql -bash: mysql: command not found
所以,咱们得先个办法来让系统知晓咱们想要加入shell的命令的存放位置,亦即建立咱们环境变量的文件:.bash_profile(.表示隐藏文件):app
Jinhao-Mac:~ jinhao$ touch .bash_profile
向其中加入咱们的环境变量,也就是咱们shell命令所处的路径:code
export PATH="/usr/local/mysql/bin:$PATH"
意思是导入一个环境变量路径"/usr/local/mysql/bin:$PATH"到PATH变量中去,shell搜索的时候会去这个变量中保护的路径下面搜寻mysql文件是否存在,若是存在就执行mysql指令,这样就完成了这个第三方程序的shell命令执行过程。io
除此之外,想要配置某些程序在终端中打开也能够作相似的配置,只要让shell知晓咱们的命令所在的位置就好,好比设置Sublime Text在终端中直接打开的环境变量:变量
export PATH="/Applications/Sublime Text.app/Contents/SharedSupport/bin:$PATH"