【发布时间】:2020-07-01 15:01:14
【问题描述】:
我正在使用zsh,我在~/.zshrc中定义了新的全局环境变量
echo $0
-zsh
echo $PATH_TO_BINARY 来自控制台打印 /Users/user/some_path
但是,如果我创建带有内容 echo $PATH_TO_BINARY 的 run_me.sh,它不会打印任何内容。
在 python 中相同:
python -c "import os; print(os.environ['PATH_TO_BINARY'])"
Traceback (most recent call last):
File "<string>", line 1, in <module>
File "/usr/local/Cellar/python/3.7.6_1/Frameworks/Python.framework/Versions/3.7/lib/python3.7/os.py", line 679, in __getitem__
raise KeyError(key) from None
KeyError: 'PATH_TO_BINARY'
【问题讨论】:
-
所以我猜 Python 部分与问题无关,是吗?
-
我不明白应该在哪里定义
PATH_TO_BINARY。echo $0; -zsh应该这样做吗? -
你在
run_me.sh中使用的是哪个shell?你在shebang中使用zsh吗?或者只是/bin/bash? -
什么时候稳定
PATH_TO_BINARY环境变量?在调用 python 之前是否在 .sh 中?如果是这样,python 将无法识别它。 -
除非你在
.zshrc的某处有一个类似export PATH_TO_BINARY的命令(而这可能应该在.zprofile中),你没有有 一个环境变量名为PATH_TO_BINARY;你只有一个普通的 shell 变量,它不会被任何子进程看到,比如你的 Python 脚本。
标签: macos environment-variables zsh