简单来说就是系统中,可以全局运行的变量。
基础知识:
- 了解环境变量加载的配置文件 的顺序,分为系统级别+用户级别+用户级别的终端的:
- 系统级别:为/etc/开头,每个文件都会运行,所有用户登录都会加载。
- 用户级别:为~/ 开头,当且仅当该用户登录时会加载。有了排名前面的,后面的不再运行
- 用户级别的终端:用户实际使用的终端,没有排名挤掉的规则。查看终端类别:
$ echo $SHELL- 默认是bash,对应
~/.bashrc - 如果使用zsh,对应的配置文件
~/.zshrc - 如果使用其他终端,对应XXXX
- 默认是bash,对应
- 明确自己安装的命令是否在环境变量中。
- 查看 实际加载的PATH路径。
echo $PATH
- 查看 实际加载的PATH路径。
1.了解环境变量加载的配置文件 的顺序
配置文件加载顺序,以OS X系统为例:配置文件加载顺序为:
/etc/profile
/etc/paths
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
/etc/profile和/etc/paths是系统级别的,系统启动就会加载, 后面几个是当前用户级的环境变量。
~/.bash_profile,~/.bash_login,~/.profile按照从前往后的顺序读取,
如果~/.bash_profile文件存在,则后面的几个文件就会被忽略不读了,
如果~/.bash_profile文件不存在,才会以此类推读取后面的文件。
比如:我新建了~/.bash_profile文件,使用RVM安装Ruby的环境变量配置在~/.profile文件中,这样就会导致打开的其他终端窗口Ruby升级失效,只要把配置代码拷贝到~/.bash_profile文件即可。 如果需要立即生效,执行:
> source ~/.bash_profile
~/.bashrc没有上述规则,它是bash shell打开的时候载入的。
PATH变量 设置PATH的语法为:
export PATH="$PATH:<PATH 1>:<PATH 2>:<PATH 3>:...:<PATH N>"
注: 1)环境变量更改后,重启后才可生效。如果想立刻生效,则可执行下面的语句:
$ source 相应的配置文件
2)如果默认shell是bash,那么shell启动时会触发.bashrc, 如果默认shell是zsh,那么shell启动时会触发.zshrc。
以下命令可以得到系统的默认shell:
$ echo $SHELL
/bin/zsh
2. 明确自己安装的命令是否在环境变量中
$ echo $PATH
/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin
3. 案例: NPM 安装一个全局变量 nos-cli
npm安装该包的说明:www.npmjs.com/package/@xg…
1.首先确认npm全局安装包放的路径
使用 npm config list查看,prefix的路径。也就是说npm全局安装的就会放到这各文件(放到 /opt/homebrew/bin )
安装以后,也可以查看是否在这个目录下:
2. 查看系统环境变量是否包含“/opt/homebrew”
如果有,那就ok了。
4.案例:新增 add环境变量
1. 如果系统PATH没有“/opt/homebrew”,把它加入环境变量的配置文件
从第一点 “了解环境变量加载的配置文件的顺序”,我们可以看到 文件加载的顺序为:
/etc/profile
/etc/paths
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
~/.zshrc
~/.zprofile
我通过echo $SHELL 知道目前使用的是zsh终端,对应的是 /.zshrc 、/.zprofile 等配置文件。让我们先看看这些文件中是否配置了:
- 直接 export PATH = xxxx
- source 指定路径
我们看下~/.zshrc文件,注意到下面这行:
这里说明 oh-my-zsh.sh 里面也可以配置一些环境变量
扯远了,其实在~/.zshrc 文件头部,就有对PATH的描述:
我们只要把
export PATH="/opt/homebrew/bin:$PATH" 加入在此处即可。
5.案例:M1芯片的homebrew,是如何把变量加入环境变量的?
我在官网成功安装homebrew后,brew.sh/index_zh-cn,只要使用brew安装的,都可以在终端顺利调用。
查看了 echo $PATH ,发现
说明它确实已经加到PATH中,但是它是在哪里加入的呢?
我查了
/etc/profile
/etc/paths
~/.bash_profile
~/.bash_login
~/.profile
~/.bashrc
~/.zshrc
发现没有任何踪迹,网上有种说法是,homebrew自己创建了软连接,放到了/usr/local/bin ,显然这是错误的(以目前来看)。那么是在哪里配置了?
突然发现还有这个一个文件 ~/.zprofile,这应该和
~/.bash_profile
~/.bashrc
是一样的,zsh终端提供了多种配置文件(同样起到配置效果),我在 ~/.zprofile中看到了:
将这一行注释以后:就发现原来brew安装的命令都用不了了,$PATH也被除去了:
终于找到配置的地方。