[英]Environment variables not showing up on mac
在 shell 之外通過 ~/.bash_profile 或 ~/.bashrc 設置的環境變量不會出現在 docker 或 env 中,盡管可以在 Z2591C98B70119FE624898B1E424BE.5 中訪問
Bash_profile 包含TEST_ENV_VAR=123
行,重啟終端后,可以通過$TEST_ENV_VAR
訪問該變量,但是 docker 和 env 無法訪問此環境變量。
Henrys-MacBook-Pro:~ henry$ echo $TEST_ENV_VAR
123
Henrys-MacBook-Pro:~ henry$ docker run -it -e TEST_ENV_VAR ubuntu env | grep TEST_ENV_VAR
Henrys-MacBook-Pro:~ henry$ env | grep TEST_ENV_VAR
然而終端可以訪問它,甚至將它傳遞給 docker:
Henrys-MacBook-Pro:~ henry$ docker run -it -e TEST_ENV_VAR=${TEST_ENV_VAR} ubuntu env | grep TEST_ENV_VAR
TEST_ENV_VAR=123
而且這個問題通常不是環境變量的問題,因為終端中設置的變量按預期工作:
Henrys-MacBook-Pro:~ henry$ export TEST_ENV_VAR=1234
Henrys-MacBook-Pro:~ henry$ docker run -it -e TEST_ENV_VAR ubuntu env | grep TEST_ENV_VAR
TEST_ENV_VAR=1234
我正在運行 macOS Mojave,10.14.5,經典終端,docker 19.03.4,ls -al ~ 的 output:
-rw-r--r-- 1 henry staff 455 Nov 12 11:50 .bash_profile
docker
實際上並沒有啟動容器。 相反,它會向 Docker 引擎(在與執行docker
的環境無關的單獨環境中運行)發送一條消息,請求它為您啟動一個容器。 因此,新容器不會繼承您當前 shell 環境中的任何變量。
通過您的TEST_ENV_VAR=${TEST_ENV_VAR}
嘗試,您明確告訴docker
創建一個名為TEST_ENV_VAR
的環境變量,其值是通過在新容器中擴展TEST_ENV_VAR
now產生的,而不是嘗試從適當的環境繼承變量。
即使忽略這一點,您實際上並沒有使用TEST_ENV_VAR=123
創建環境變量; 您只創建了一個普通的 shell 變量。 要讓env
看到它,您需要先導出它。
$ TEST_ENV_VAR=123
$ env | grep TEST_ENV_VAR
$ export TEST_ENV_VAR
$ env | grep TEST_ENV_VAR
TEST_ENV_VAR=123
.bash_profile 適用於您的用戶。 Docker 在其自己的環境中運行(而不是在用戶生成的子shell 中運行)。 導出僅將信息向下發送到子 shell。 您需要使變量在更高級別可用。
/etc/environment
里面小心點。
或者,您可以考慮要求 Docker 自行進行這些更改。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.