我想全局设置一个环境变量,所以我将其添加到
~/.bashrc
:
export MONGO_HOME=~/mongo
在这个命令控制台中可以工作,但是当我打开另一个命令控制台时,它不起作用;在我输入
source ~/.bashrc
后它就起作用了,所以我也将此代码添加到 ~/.bash_profile
和 ~/.profile
中,但结果相同。
谁能告诉我为什么会发生这种情况以及如何永久保存这个变量?我用的是 Mac。
Scott Crook 的回答提供了有效的解决方案。
这是一些背景:
在 OS X 上,由
Terminal.app
创建的所有 Bash 实例都是 login shell(与大多数 Linux 系统上的终端创建的实例不同)。交互式 Bash 登录 shell,在用户级别,获取以下存在的文件中的 first:
~/.bash_profile
、~/.bash_login
、~/.profile
;然而,作为交互式 login shell,它们不也来源 ~/.bashrc
。因此,为了确保
~/.bashrc
加载到 all 交互式 shell 中,它应该源自 ~/.bash_profile
,正如 Scott Crook 的回答 建议的那样。将
export
语句添加到 ~/.bash_profile
should 已在此后打开的任何 shell 选项卡/窗口中生效。
要排除故障,只需将 echo "Loading <filename>"
语句添加到感兴趣的初始化文件的开头即可。
注意,即使你说globally,上面的内容也只会生效:
要让环境变量定义对所有用户生效,请将它们放在
/etc/profile
中,但不是那样,这只会对交互式 shell 生效。
主目录中的
.bash_profile
文件应包含以下代码:
#!/bin/bash
test -f ~/.bashrc && source ~/.bashrc
它会快速检查您的
~/.bashrc
文件是否存在,并且仅在文件存在时才获取该文件。确保该代码位存在,然后重新打开终端应用程序。 然后您的变量 MONGO_HOME
应该出现。
在 macOS Catalina 或更高版本中,zsh 是新用户的默认 shell。以下是如何为其永久设置环境变量。
TL;DR 将导出行添加到
~/.zprofile
的底部
首先打开
~/.zprofile
您的编辑器。在此示例中,我们将使用 vim
。
vim ~/.zprofile
在
vim
中,按住向下箭头直至到达文档底部。
按 i
进入插入模式,然后输入 export
行,即:
#.....
export JBOSS_HOME=/Applications/wildfly-27.0.1.Final
然后,按
escape
退出插入模式,键入 :wq
,然后重新启动 shell。变量将被设置。
在 Mac Sonoma 14.5 上,这就是我所做的,
打开终端
vi ~/.zshrc
添加您的环境变量如下
export KEY=VALUE
保存退出:wq
来源~/.zshrc
关闭终端
打开终端
在终端上输入 printenv
检查新的键和值环境变量。
完成,享受吧