引:在使用ubuntu和mac这么久之后,环境变量的几个文件还弄不清楚,真是汗颜,这里记录一下,下次不会乱改。
环境变量的作用
- 使用场景
在命令行直接通过命令执行程序,这些程序就多了,最常见就有java,npm,maven,git,如果我们不配置环境变量的话,就需要到程序的安装目录去执行相关命令,大家都会感觉超级麻烦,加入要使用多个程序的话,要么去切换目录,要么就多开几个命令行窗口。顿时就会感觉超级无奈有么有? - 具体作用
配置完程序的环境变量之后就可以无所欲为了,可以在任何目录下直接执行我们所要的程序了,是不是顿时感觉方便许多,基本上所有人都知道吧。
环境变量的配置
单次环境变量配置
假如你出了个意外,在命令行中突然不能使用各种命令了,也没事,至少接下来可以让你短暂的使用一些命令,命令行窗口关闭之后就失效了,我们要做的只是直接在命令行中输入:
export PATH=/usr/bin:/usr/sbin:/bin:/sbin
当然后面你也能够添加一些你自己想要使用的程序命令。
环境变量文件配置
环境变量的写法
export PATH=$JAVA_HOME/bin:$PATH
环境变量文件优先级
/etc/profile /etc/bashrc /etc/paths ~/.bash_profile ~/.bash_login ~/.profile ~/.bashrc
其实后三个文件我也没怎么看到过,主要讲一下前面三个- 环境变量文件详解
- /etc/profile:全局配置文件,不管是哪一个用户登录,都会读取该文件(但是超级不建议修改,容易出现大问题,想试试什么大问题,自己体会)
- /etc/bashrc 全局配置文件,bash shell执行时,不管是何种方式,都会读取此文件(一般在这个文件中添加系统级环境变量)
- ~/.bash_profile:每个用户都可使用该文件输入专用于自己使用的shell信息,当用户登录时,该文件仅仅执行一次!(一般在这个文件中添加用户级环境变量)
立即生效环境变量配置
source ~/.bash_profile
软连接
自己一开始也会特别的惊讶,自己在mac上没有设置环境变量有的时候也可以直接就访问到了某些文件。这个是为什么呢?答案是用了软连接。
查看加载文件
rexdeMacBook-Pro:etc rex$ cat /etc/paths
/usr/local/bin
/usr/bin
/bin
/usr/sbin
/sbin
然后就可以去看这些文件夹下面的东西了,弄不清楚也没关系,其实就是软链接。开机后,mac会自动加载paths文件下面的这些目录。在这些文件夹下面建立软连接,可以达到同样的效果(日后学习)。
软连接查看
在拥有软连接的目录下使用下面命令
ls -li
406876 lrwxr-xr-x 1 root wheel 73 7 9 2016 jar -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jar
406877 lrwxr-xr-x 1 root wheel 79 7 9 2016 jarsigner -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/jarsigner
406878 lrwxr-xr-x 1 root wheel 74 7 9 2016 java -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/java
406879 lrwxr-xr-x 1 root wheel 75 7 9 2016 javac -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javac
406880 lrwxr-xr-x 1 root wheel 77 7 9 2016 javadoc -> /System/Library/Frameworks/JavaVM.framework/Versions/Current/Commands/javadoc
建立软连接
等自己看了linux的相关知识再来说吧。
总结
希望下次自己再也不要因为环境变量配置错出各种问题了,thanks god!