小萝卜干的技术分享

15 object(s)
 

macOS Big Sur配置环境变量

前言

准备在mac上安装一个Android SDK来进行Android开发,结果发现在终端中找不到adb命令,echo $PATH之后发现adb并不在PATH中。
由于本人并不喜欢直接去改动全局的环境变量内容,关于如何设置系统全局的环境变量不在本文的讨论范围之内,有兴趣的可以自行搜索。接下来我将各处搜刮来的给当前用户设置环境变量的方法贴出来,各位看官自行选择

方法一:设置.bash_profile

见这位大佬的文章中,用户环境变量的配置一节 https://blog.csdn.net/listener51/article/details/72579075

实现方式

在当前用户的home目录下新建一个.bash_profile的文件来实现用户环境变量

vim ~/.bash_profile

内容如下:

if [ -f /etc/bash_profile ]; then
./etc/bash_profile
fi
export PATH=$PATH:你要配置的环境变量路径
#下面这行不知道是干嘛用的
#export PS1 ="\[\e[32;1m\]\u@\w:>\[\e[0m\]"

保存退出后,执行:
source ~/.bash_profile

存在的问题

此方法适用于临时用用的情况,并不是永久的、彻底的设置环境变量。举个例子,将终端关闭或者新开一个终端,你会发现PATH又变回去了,你需要每次都手动执行一遍source命令。即使能够做到让终端每次打开的时候都能先自动执行一遍source命令,这样的方法也着实丑陋了点

如何完善

完善方法上面已经提及,就是让终端自动执行source。参考这里 https://blog.csdn.net/nijun914/article/details/75808459
按照他的做法,系统为macOS Big Sur,默认使用zsh而不是bash,所以应该去修改.zshrc。加入如下代码:

if [ -f ~/.bash_profile ]; then
   source ~/.bash_profile
fi

这样应该就可以解决问题

方法二:修改.zshrc或者.zshenv

这个方法是针对使用zsh作为默认shell的mac系统。

如何创建

如果没有.zshrc或者.zshenv文件,则进行创建

nano ~/.zshenv

在其中可以添加环境变量设置

export PATH=$PATH:/xxxxxxxxxx

保存,退出或者新开一个shell,你会发现PATH不会再自动变回去了,这样就很好的解决了环境变量的配置问题。

如果想兼容原来的bash,则可以将文件内容修改成这样:

if [ -f ~/.bash_profile ]; then
   source ~/.bash_profile
fi

然后将配置环境变量的语句放在.bash_profile中即可,这样无论是使用zsh还是bash,都可以使用到这个环境变量配置

关于.zshrc和.zshenv的加载顺序

来做个简单测试:在.zshrc中输入alias ll='ls /dev/block',然后在.zshenv中输入alias ll='ls -la',保存后新开一个终端,执行ll,你会发现它输出了ls: /dev/block: No such file or directory。所以得出结论,加载顺序为:

  1. .zshenv
  2. .zshrc