通过〜/ .bash_profile或〜/ .bashrc在shell外部设置的环境变量,尽管可以在shell中访问,但它们对docker或env都不会出现。
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〜:输出
-rw-r--r-- 1 henry staff 455 Nov 12 11:50 .bash_profile