背景
可能很多同学,看到环境变量就头痛,不知道怎么配,也不知道改什么
一旦要配置环境变量,就是上网到处翻,乱复制,出错了也不知道怎么排查
所以我打算就我的知识范畴,总结一下我在工作过程中,常用的环境配置和命令
如有不对,大佬们在评论区轻喷
我是用的是Mac,以下介绍大部分依据Mac和Linux,Windows老哥仅供参考
SHELL环境介绍
首先我们需要介绍一下SHELL环境
我们打开“终端”出现的黑框框里面的环境(也有的同学使用iterm2或者别的终端工具),管它叫SHELL环境
SHELL环境
有很多种,比较常见的是bash
和zsh
bash和zsh
在早期的Mac中,默认的shell环境为bash
现在的新款mac中,默认的shell环境为zsh
当然,如果有同学不知道自己当前是什么
SHELL环境
,可以使用以下命令查看
1 | echo $SHELL |
而老款mac安装新系统用到现在,如果没有修改过zsh,也会提示你切换
所以在这里我们看到有命令提示,建议切换为zsh
切换命令
1 | chsh -s /bin/zsh |
那么怎么查看本机有哪些SHELL
呢
1 | cat /etc/shells |
环境变量的配置文件
那么接下来,我们来了解一下环境变量配置文件
什么是环境变量的配置文件?
我觉得摆概念,有些不太好理解,所以我想从作用来说。
我觉得说的通俗一点,环境变量配置文件,就是你打开“终端”工具,终端工具会默认加载的文件。
举个例子,假设你新建了一个a文件
每次终端打开的时候,都会默认加载a文件
那么,a文件中配置的环境变量,都会被加载到shell环境中
所以这时候,你将a文件认为是环境变量的配置文件,也没有什么不可以的
环境变量配置文件
系统配置文件和用户配置文件
配置文件分两种,一种是整个系统的,一种是用户的
系统 | 用户 |
---|---|
/etc/profile | ~/.bashrc |
/etc/bashrc | ~/.zshrc |
– | ~/.bash_profile |
/etc/
目录为系统主要配置目录
我们可以发现,系统级的都在/etc/
下面
而用户相关配置都在~
下面,因为实际上cd ~
就会到对应的用户名目录下
加载顺序
基本是先加载系统的,再加载用户的
(这里有一个完整的顺序,但是我也没验证,不敢随便就复制粘贴上来)
其实也不用那么关心加载顺序,因为一般情况下,我们都只会修改用户下的具体的某一个环境变量文件,什么冲突啊之类的,几乎都不会在日常工作中出现。
不同环境下的不同变量文件
下方指的文件均为用户文件,也就是~/.xxx
在我们上网查各种环境变量配置的时候,可以看到有不同的文件需要你去变更
有的会让你变更.bash_profile
,有的会让你变更.bashrc
,有的会让你变更.zshrc
首先,我们需要使用上面介绍过的echo $SHELL
看当前是什么shell环境
是bash
的兄弟,一般而言是修改~/.bash_profile
或者~/.bashrc
任意一个即可
是zsh
的兄弟,一般而言是修改~/.zshrc
文件
没有文件
什么?
你没有这些文件怎么办?
简单,手动创建一个即可
1 | cd ~ |
这不就有了么
创建好以后终端会主动去读,不需要做什么额外的操作
环境变量
刚刚说完了环境变量配置文件,那么现在来说说环境变量
什么是环境变量
我们可以通过如下命令来查看当前的环境变量
1 | echo $PATH |
其实就是提前注入了一些path
,让我们可以快速执行某些可执行文件,免得每次都得找到具体路径。
可能有些同学不是很理解这句话。
这里我们来举2个例子:
例子一:flutter环境变量的配置
在配置flutter环境的时候,我们可以看到,在git clone flutter
项目以后
可以看到flutter/bin/
目录下有个名为flutter
的可执行文件
这里插一个额外的知识点,一般情况下,你下载的这种需要配置环境变量的东西,都会有个bin
目录,可执行文件一般都放在bin
目录下,这是一个约定俗成的规则。
一般咱们判断flutter环境是否安装成功,都是直接在终端执行flutter -v
看看是否有反应
那如果咱们不配置环境变量,直接使用这个bin/flutter
来执行这个命令,会怎么样?
答案当然是,可行。
也就是说,配置好以后的效果:
1 | flutter -v |
因为所谓的配置环境变量,就是将flutter
前面的路径,配置到默认的shell的path中。
即将/Users/xing.wu/Documents/environment/flutter/bin/
配置到path
中
配置方法
找到环境变量配置文件,在其中添加
1 | export PATH=/Users/xing.wu/Documents/environment/flutter/bin:$PATH |
换而言之,其他的环境变量配置,在没有特殊命令的情况下,都可以通过这种方式配置
1 | export PATH=xxxx:$PATH |
改完以后,可以选择重新打开一个新的终端,或者使用source
命令来读取环境配置文件
source
命令是一个内置的shell命令,用于从当前shell会话中的文件读取和执行命令
1 | # 其他环境变量文件自行修改哈 |
例子二:npm全局安装的包
我这里是使用nvm
安装的node环境,所以我加到path里的路径会带上nvm
1.首先,我们看下我全局安装了哪些包
可以看到我这有个全局的@vue/cli
所以我可以使用vue create project
来创建项目
2.那么看看这个vue的路径在哪
which vue
可以看到,路径为/Users/xing.wu/.nvm/versions/node/v15.14.0/bin/vue
在往前翻,看看我们echo $PATH
的结果
1 | /Users/xing.wu/Documents/environment/flutter/bin:/Users/xing.wu/.nvm/versions/node/v15.14.0/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin |
可以看到/Users/xing.wu/.nvm/versions/node/v15.14.0/bin:
被我们加入到了环境变量中,因此才可以直接使用vue
相关的命令,其他库同理。
我们可以看看这个bin
目录
所有和npm库中相关的可用执行文件的快捷方式或本体,都在这了。
结尾
那么到此为止,Mac上当前是什么SHELL,配置文件是哪个文件,path
如何配置,大家应该都知道了
相信以后的环境配置难不倒大家了~
这里留一个小问题:
以前mac系统中默认环境为bash
,切到zsh
以后,不会再读取~.bash_profile
而是读取~/.zshrc
了,那么怎么做,才能在更小改动的情况下,让以前的环境变量可以复用?
可以把答案写在评论区~