我已经使用了docker
一段时间了,每次启动 docker 时我都会编写一个命令:
eval $(docker-machine env)
我知道eval
除非必要否则不应使用,但以下内容提到了它:
docker-machine env
输出环境变量如下:
docker-machine env
export DOCKER_TLS_VERIFY="1"
export DOCKER_HOST="tcp://<some_ip>:<some_port>"
export DOCKER_CERT_PATH="/home/gableroux/.docker/machine/machines/default"
export DOCKER_MACHINE_NAME="default"
# Run this command to configure your shell:
# eval $(docker-machine env)
eval
抓住这些并将它们加载到我当前的会话中。
现在,如果我想要一个像这样的别名怎么办:
alias dockereval="eval $(docker-machine env)"
语法很好,但问题是当您在该文件中注册别名时.zshrc
,会评估点文件(例如)的内容。$()
source
which dockereval
结果是
dockerenv: aliased to eval
我尝试了一些事情,例如:
alias dockereval="docker-machine env | eval"
alias dockereval="docker-machine env | /bin/bash"
alias dockereval="eval `docker-machine env`"
但没有一个起作用。第二个可能是因为它在不同的会话中运行,第三个与$()
我猜测的相同
还有其他方法可以使用别名加载这些环境变量吗?
答案1
将别名括在单引号而不是双引号中。
alias dockereval='eval $(docker-machine env)'
双引号允许变量扩展(至少在 bash 中),而单引号则不允许