Windows 是否有相当于 bash 的 export
的功能?我想设置一个环境变量,以便后续命令可以使用它。我不想想要setx
永久环境变量。
例如,这可以在 Windows 终端 PowerShell 命令提示符中与 Docker for Windows 正常工作。 FOO
环境变量值在容器中可用。
PS C:\Users\Owner> docker run -e FOO=bar centos env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=05b90a09d7fd
FOO=bar
HOME=/root
但是如何在 Windows 中设置一个相当于 bash 导出的 env 变量,以便它可以在不直接在每个 docker run 命令上设置值的情况下使用?
您可以在这里看到 set
没有将 FOO
的值传递给容器。
PS C:\Users\Owner> set FOO=bar
PS C:\Users\Owner> docker run -e FOO centos env
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
HOSTNAME=6642033b3753
HOME=/root
我知道我可以创建一个 env 文件并将其传递给 docker run
但我试图避免这种情况。
PS:我在这里问了这个问题,但没有得到答案: https://forums.docker.com/t/how-to-set-environment-variables-in-command-prompt-so-theyre-passed-in-docker-run-e-foo-e/106776/4
最佳答案
来自this answer ,您可以使用 Powershell 的 $env:VARIABLE_NAME
为 shell 设置本地环境变量。
如果我正确理解你的问题,如果你的目标是从当前终端 session 中获取变量名称/值,那么这应该对你有用。
PS C:\> $env:FOO = 'BAR'
PS C:\> docker run -it -e FOO alpine:3.9 /bin/sh
/ # env
HOSTNAME=e1ef1d7393b2
SHLVL=1
HOME=/root
TERM=xterm
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
FOO=BAR
PWD=/
/ # exit
PS C:\>
与 unset
等效的是以下之一(感谢 @mklement0 的建议):
Remove-Item env:\FOO
# suggested by mklement0
$env:FOO = $null
关于docker - 如何在 Windows 命令提示符中设置环境变量,以便它们像 bash 导出一样以 `docker run -e FOO -e …` 传递,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66994307/