我想全局设置一个env变量,所以我将其添加到~/.bashrc
:
export MONGO_HOME=~/mongo
它在这个命令控制台中工作,但是当我打开另一个命令控制台时,它不起作用;我输入source ~/.bashrc
之后就可以了,所以我将此代码添加到~/.bash_profile
和~/.profile
,但结果相同。
任何人都可以告诉我为什么会发生这种情况,我该如何永久保存这个变量?我在Mac上。
答案 0 :(得分:3)
Scott Crook's answer提供了有效的解决方案。
以下是一些背景知识:
在OS X上,Terminal.app
创建的所有Bash实例都是 login shell(与大多数Linux系统上的终端创建的实例不同)。
交互式Bash登录shell,在用户级别,获取以下文件的 first :~/.bash_profile
,~/.bash_login
,~/.profile
;但是,作为交互式登录 shell,他们不也来源~/.bashrc
。
因此,为了确保在所有交互式shell中加载~/.bashrc
,它应该来自~/.bash_profile
,Scott Crook's answer推荐。< / p>
将export
语句添加到~/.bash_profile
应该在之后打开的任何shell标签/窗口中生效。
要进行故障排除,只需将echo "Loading <filename>"
语句添加到感兴趣的初始化文件的开头即可。
请注意,即使您说全局,上述内容也只会生效:
要让环境变量定义对所有用户生效,请将它们放在/etc/profile
中,但不是这样,这只会对交互式贝壳。
答案 1 :(得分:1)
主目录中的.bash_profile
文件应包含以下代码:
#!/bin/bash
test -f ~/.bashrc && source ~/.bashrc
快速检查您的~/.bashrc
文件是否存在,并仅在文件存在时获取文件。确保存在一些代码,然后重新打开终端应用程序。然后应该存在变量MONGO_HOME
。