Mac添加环境变量(详)

macOS 下环境变量的配置文件

a. /etc/paths

b. /etc/profile 

c. ~/.bash_profile

d. ~/.bash_login

e. ~/.profile

f. ~/.bashrc

/etc/profile 和 /etc/paths 是系统级别的配置文件,后面几个是用户级的配置文件。

文件加载顺序:

系统启动时会按上面罗列的配置文件从上到下的顺序加载。但是,如果 ~/.bash_profile 文件存在,那么 /.bash_login、/.profile、~/.bashrc 会被忽略,如果不存在 ~/.bash_profile 文件,才会按顺序读取后面的文件。另外,~/.bashrc 文件又比较特殊,这个文件是在 bash shell 打开时才加载的,并不是系统启动后就加载的。

解决环境变量在 zsh shell 无效的问题
以上的配置文件在 bash shell 环境下才有效,在 zsh shell 环境下无效。如果希望在 zsh shell 下可以使用上述配置文件中的环境变量,可以在 ~/.zshenv 或者 ~/.zshrc 文件中添加下面的命令语句:

source /etc/profile
source ~/.bash_profile

打开 zsh shell 时会顺序加载 /.zshenv、/.zshrc 文件,添加上面两条命令语句,则表示加载 ~/.zshenv 或 ~/.zshrc 时会去调用外部脚本文件 /etc/profile 和 ~/.bash_profiel,且被调用的脚本运行结束后,所拥有的环境变量和声明变量会被当前 zsh shell 保留,类似将调用脚本的内容复制过来直接执行,执行完毕后原主 shell 继续运行。所以通过这样的方式就可以使用在 bash shell 环境下配置的环境变量了。

当然你也可以直接将相关的环境变量配置在 ~/.zshrc 文件中,但是显然是多余而且繁琐了,每次你要新增一个环境变量的时候,你都要在 bash shell 有关的配置文件中添加,又要在 zsh shell 有关的配置文件中添加,显然是不合适的。而如果每次加载 ~/.zshrc 文件时会自动调用 bash shell 有关的配置文件,那么所有的环境变量只要在 bash shell 有关的配置文件中添加就可以了。

查看 macOS 全部环境变量

输入命令 export,查看全部的环境变量:

[~]$ export

AUTOJUMP_ERROR_PATH=/Users/liaowenxiong/Library/autojump/errors.log

AUTOJUMP_SOURCED=1

HOME=/Users/liaowenxiong

HOMEBREW_BOTTLE_DOMAIN=https://mirrors.ustc.edu.cn/homebrew-bottles

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home

LANG=zh_CN.UTF-8

LESS=-R

LOGNAME=liaowenxiong

LSCOLORS=Gxfxcxdxbxegedabagacad

NEXUS_HOME=/Users/liaowenxiong/Applications/nexus-3.20.1-01-mac/nexus-latest

OLDPWD=/Users/liaowenxiong

...

设置系统环境变量

系统环境变量在 /etc/profile 文件中配置,编辑该文件需要 root 权限:

sudo vim /etc/profile

新增环境变量 JAVA_HOME、CLASS_PATH,内容如下:

JAVA_HOME="/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home"

export JAVA_HOME

CLASS_PATH="$JAVA_HOME/lib"

PATH=".:.$PATH:$JAVA_HOME/bin"

上面的脚本内容解读:

声明定义了一个环境变量 JAVA_HOME,变量的值是 /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home,并且将该变量声明成可以输出,即可以复制给子进程。

声明定义了环境变量 CLASS_PATH,变量的值是$JAVA_HOME/lib,$JAVA_HOME 变量取值 /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home,所以最终 CLASS_PATH 变量的取值是 /Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home/lib。

声明定义了环境变量 PATH,变量的值是 .:.$PATH:$JAVA_HOME/bin,$PATH 的值来自于配置文件 /etc/paths 中,说明创建一个新进程时,首先加载的文件应该是 /etc/paths,最终变量 PATH 的值是 /usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Library/Apple/usr/bin:/Library/Java/JavaVirtualMachines/jdk1.8.0_261.jdk/Contents/Home/bin

要想马上生效,输入下面的命令:

source /etc/profile

查看环境变量 JAVA_HOME 的值:

echo $JAVA_HOME

设置用户环境变量

用户环境变量可以在 ~/.bash_profile 文件内配置。

你可以在命令终端使用 vim 编辑文件:

vim ~/.bash_profile

你也可以使用 macOS 内置的编辑器打开文件,在命令终端输入:

open -e ~/.bash_profile

如果不存在 ~/.bash_profile 文件,这需要自己创建该文件,在终端输入:

touch ~/.bash_profile

文件创建好之后再打开文件编辑内容。

配置内容可以按这样的格式写:

JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_40.jdk/Contents/Home

PATH=$JAVA_HOME/bin:$PATH:.

CLASSPATH=$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.

export JAVA_HOME

export PATH

export CLASSPATH

也可以是这样的格式写:

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk-11.0.2.jdk/Contents/Home

export PATH=$JAVA_HOME/bin:$PATH

export ANDROID_HOME=/Library/sdk

export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools/

export PATH=$PATH:/usr/local/bin:/usr/local/sbin:${PATH}

最后在命令终端输入 source ~/.bash_profile 使配置立即生效,这个时候我们就可以使用命令echo $PATH或者 echo $JAVA_HOME 查看变量的内容。

原文链接:https://blog.csdn.net/liaowenxiong/article/details/112180532

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,921评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,635评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,393评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,836评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,833评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,685评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,043评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,694评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 42,671评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,670评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,779评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,424评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,027评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,984评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,214评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,108评论 2 351
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,517评论 2 343