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

问题描述 投票:0回答:4

我想全局设置一个环境变量,所以我将其添加到

~/.bashrc

export MONGO_HOME=~/mongo

在这个命令控制台中可以工作,但是当我打开另一个命令控制台时,它不起作用;在我输入

source ~/.bashrc
后它就起作用了,所以我也将此代码添加到
~/.bash_profile
~/.profile
中,但结果相同。

谁能告诉我为什么会发生这种情况以及如何永久保存这个变量?我用的是 Mac。

macos bash
4个回答
3
投票

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,上面的内容也只会生效:

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

要让环境变量定义对所有用户生效,请将它们放在

/etc/profile
中,但不是那样,这只会对交互式 shell 生效。


2
投票

主目录中的

.bash_profile
文件应包含以下代码:

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

它会快速检查您的

~/.bashrc
文件是否存在,并且仅在文件存在时才获取该文件。确保该代码位存在,然后重新打开终端应用程序。 然后您的变量
MONGO_HOME
应该出现。


1
投票

在 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。变量将被设置。


0
投票

在 Mac Sonoma 14.5 上,这就是我所做的,

  • 打开终端

  • vi ~/.zshrc

  • 添加您的环境变量如下

    export KEY=VALUE

  • 保存退出:wq

  • 来源~/.zshrc

  • 关闭终端

  • 打开终端

  • 在终端上输入 printenv

检查新的键和值环境变量。

完成,享受吧

© www.soinside.com 2019 - 2024. All rights reserved.