Mac Yosemite os 变量在 bash Python 解释器中有效,运行 终端中的脚本,但在 Sublime Text 2 文本编辑器中无效
Mac Yosemite os variable works in bash Python interpreter, running the script in terminal, but not in Sublime Text 2 text editor
这对我来说很奇怪。我在 bash 中设置了一个变量并将其导出,如下所示:
export EMAIL="example@example.com"
我已使用命令 "source ~/.bash_profile" 重置 bash,甚至注销并重新登录,问题如下:
当我在 Python 3 解释器中执行此操作时,一切都很好:
>>> import os
>>> print(os.environ["EMAIL"])
example@example.com
当我将以上内容放入脚本并在终端中 运行 时,一切都很好。
Jeffreys-MacBook-Pro:jeff$ python3 check_var.py
example@example.com
然而,当我在我的文本编辑器 Sublime Text 2 中 运行 脚本时,我得到了这个:
raise KeyError(key) from None
KeyError: 'EMAIL'
我的所有脚本 运行 在文本编辑器中都很好,但是,当我尝试从环境中获取此变量时 运行 在文本编辑器中编辑脚本时,它会阻塞。关于如何解决此问题的任何想法?
原来这是一个 Mac 特定问题。或者,至少现在对我有用的是 Mac 特定答案。这是我为使这一切正常工作所做的工作:
首先在终端中 运行 这个(用你自己的替换 "variablename" 和 "value":
launchctl setenv variablename value
这会设置一个变量,以便所有应用程序(除了通过终端启动的图形应用程序之外,通过 Dock 或 Spotlight 启动的图形应用程序)都可以使用它。
当您注销或重新启动时,以上内容消失。如果您希望每次登录时都可以使用变量,请执行以下操作:
1) 启动 AppleScript 编辑器并输入如下命令:
do shell script "launchctl setenv variablename value"
(Use multiple lines if you want to set multiple variables)
2) 以任意名称保存,但必须保存为文件格式类型:Application.
3) 打开系统设置 → 用户和组 → 登录项并添加您的新应用程序。这样脚本将在您登录时被调用。
现在,这样做不会使您的变量在 bash 中可用。如果您希望 shell/terminal.
可用的变量,您仍然需要将它们添加到 .bash_profile 文件中
注意:我从对另一个类似问题的回答中提取了 much/most 内容,如果您想查看,请转到此处:
Setting environment variables via launchd.conf no longer works in OS X Yosemite/El Capitan/macOS Sierra?
这对我来说很奇怪。我在 bash 中设置了一个变量并将其导出,如下所示:
export EMAIL="example@example.com"
我已使用命令 "source ~/.bash_profile" 重置 bash,甚至注销并重新登录,问题如下:
当我在 Python 3 解释器中执行此操作时,一切都很好:
>>> import os
>>> print(os.environ["EMAIL"])
example@example.com
当我将以上内容放入脚本并在终端中 运行 时,一切都很好。
Jeffreys-MacBook-Pro:jeff$ python3 check_var.py
example@example.com
然而,当我在我的文本编辑器 Sublime Text 2 中 运行 脚本时,我得到了这个:
raise KeyError(key) from None
KeyError: 'EMAIL'
我的所有脚本 运行 在文本编辑器中都很好,但是,当我尝试从环境中获取此变量时 运行 在文本编辑器中编辑脚本时,它会阻塞。关于如何解决此问题的任何想法?
原来这是一个 Mac 特定问题。或者,至少现在对我有用的是 Mac 特定答案。这是我为使这一切正常工作所做的工作:
首先在终端中 运行 这个(用你自己的替换 "variablename" 和 "value":
launchctl setenv variablename value
这会设置一个变量,以便所有应用程序(除了通过终端启动的图形应用程序之外,通过 Dock 或 Spotlight 启动的图形应用程序)都可以使用它。
当您注销或重新启动时,以上内容消失。如果您希望每次登录时都可以使用变量,请执行以下操作:
1) 启动 AppleScript 编辑器并输入如下命令:
do shell script "launchctl setenv variablename value"
(Use multiple lines if you want to set multiple variables)
2) 以任意名称保存,但必须保存为文件格式类型:Application.
3) 打开系统设置 → 用户和组 → 登录项并添加您的新应用程序。这样脚本将在您登录时被调用。
现在,这样做不会使您的变量在 bash 中可用。如果您希望 shell/terminal.
可用的变量,您仍然需要将它们添加到 .bash_profile 文件中注意:我从对另一个类似问题的回答中提取了 much/most 内容,如果您想查看,请转到此处:
Setting environment variables via launchd.conf no longer works in OS X Yosemite/El Capitan/macOS Sierra?