导出无法在Mac上永久导出变量

时间:2016-01-27 03:11:31

标签: macos bash

我想全局设置一个env变量,所以我将其添加到~/.bashrc

export MONGO_HOME=~/mongo

它在这个命令控制台中工作,但是当我打开另一个命令控制台时,它不起作用;我输入source ~/.bashrc之后就可以了,所以我将此代码添加到~/.bash_profile~/.profile,但结果相同。

任何人都可以告诉我为什么会发生这种情况,我该如何永久保存这个变量?我在Mac上。

2 个答案:

答案 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_profileScott Crook's answer推荐。< / p>

export语句添加到~/.bash_profile 应该在之后打开的任何shell标签/窗口中生效。 要进行故障排除,只需将echo "Loading <filename>"语句添加到感兴趣的初始化文件的开头即可。

请注意,即使您说全局,上述内容也只会生效:

  • 用于交互式 shell实例(特别是不适用于幕后应用程序创建的shell)。
  • 为当前用户

要让环境变量定义对所有用户生效,请将它们放在/etc/profile中,但不是这样,这只会对交互式贝壳。

答案 1 :(得分:1)

主目录中的.bash_profile文件应包含以下代码:

#!/bin/bash
test -f ~/.bashrc && source ~/.bashrc

快速检查您的~/.bashrc文件是否存在,并仅在文件存在时获取文件。确保存在一些代码,然后重新打开终端应用程序。然后应该存在变量MONGO_HOME