我的GitHub
0%

无星的命令行与环境总结(一)-- 环境变量到底应该怎么配

背景

可能很多同学,看到环境变量就头痛,不知道怎么配,也不知道改什么

一旦要配置环境变量,就是上网到处翻,乱复制,出错了也不知道怎么排查

所以我打算就我的知识范畴,总结一下我在工作过程中,常用的环境配置和命令

如有不对,大佬们在评论区轻喷

我是用的是Mac,以下介绍大部分依据Mac和Linux,Windows老哥仅供参考

SHELL环境介绍

首先我们需要介绍一下SHELL环境

我们打开“终端”出现的黑框框里面的环境(也有的同学使用iterm2或者别的终端工具),管它叫SHELL环境

1.png

SHELL环境有很多种,比较常见的是bashzsh

bash和zsh

在早期的Mac中,默认的shell环境为bash

现在的新款mac中,默认的shell环境为zsh

当然,如果有同学不知道自己当前是什么SHELL环境,可以使用以下命令查看

1
echo $SHELL

而老款mac安装新系统用到现在,如果没有修改过zsh,也会提示你切换

2.png

所以在这里我们看到有命令提示,建议切换为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 ~就会到对应的用户名目录下

3.png

加载顺序

基本是先加载系统的,再加载用户的

(这里有一个完整的顺序,但是我也没验证,不敢随便就复制粘贴上来)

其实也不用那么关心加载顺序,因为一般情况下,我们都只会修改用户下的具体的某一个环境变量文件,什么冲突啊之类的,几乎都不会在日常工作中出现。

不同环境下的不同变量文件

下方指的文件均为用户文件,也就是~/.xxx

在我们上网查各种环境变量配置的时候,可以看到有不同的文件需要你去变更

有的会让你变更.bash_profile,有的会让你变更.bashrc,有的会让你变更.zshrc

首先,我们需要使用上面介绍过的echo $SHELL看当前是什么shell环境

bash的兄弟,一般而言是修改~/.bash_profile或者~/.bashrc任意一个即可

zsh的兄弟,一般而言是修改~/.zshrc文件

没有文件

什么?

你没有这些文件怎么办?

简单,手动创建一个即可

1
2
3
cd ~
# 手动创建文件
touch .bash_profile

这不就有了么

创建好以后终端会主动去读,不需要做什么额外的操作

环境变量

刚刚说完了环境变量配置文件,那么现在来说说环境变量

什么是环境变量

我们可以通过如下命令来查看当前的环境变量

1
echo $PATH

6.png

其实就是提前注入了一些path,让我们可以快速执行某些可执行文件,免得每次都得找到具体路径。

可能有些同学不是很理解这句话。

这里我们来举2个例子:

例子一:flutter环境变量的配置

在配置flutter环境的时候,我们可以看到,在git clone flutter项目以后

4.png

可以看到flutter/bin/目录下有个名为flutter的可执行文件


这里插一个额外的知识点,一般情况下,你下载的这种需要配置环境变量的东西,都会有个bin目录,可执行文件一般都放在bin目录下,这是一个约定俗成的规则。


一般咱们判断flutter环境是否安装成功,都是直接在终端执行flutter -v看看是否有反应

那如果咱们不配置环境变量,直接使用这个bin/flutter来执行这个命令,会怎么样?

5.png

答案当然是,可行。

也就是说,配置好以后的效果:

1
2
3
flutter -v
# 等价于
/Users/xing.wu/Documents/environment/flutter/bin/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
2
# 其他环境变量文件自行修改哈
source ~/.zshrc

例子二:npm全局安装的包

我这里是使用nvm安装的node环境,所以我加到path里的路径会带上nvm

1.首先,我们看下我全局安装了哪些包

7.png

可以看到我这有个全局的@vue/cli

所以我可以使用vue create project来创建项目

2.那么看看这个vue的路径在哪

which vue

8.png

可以看到,路径为/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目录

9.png

所有和npm库中相关的可用执行文件的快捷方式或本体,都在这了。

结尾

那么到此为止,Mac上当前是什么SHELL,配置文件是哪个文件,path如何配置,大家应该都知道了

相信以后的环境配置难不倒大家了~

这里留一个小问题:

以前mac系统中默认环境为bash,切到zsh以后,不会再读取~.bash_profile而是读取~/.zshrc了,那么怎么做,才能在更小改动的情况下,让以前的环境变量可以复用?

可以把答案写在评论区~

我是阿星,阿星的阿,阿星的星!