Gab*_*oux 9 alias environment-variables eval
我已经使用docker了一段时间,每次启动 docker 时都会写一个命令:
eval $(docker-machine env)
Run Code Online (Sandbox Code Playgroud)
我知道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)
Run Code Online (Sandbox Code Playgroud)
eval 抓住这些并将它们加载到我当前的会话中。
现在如果我想要一个这样的别名怎么办:
alias dockereval="eval $(docker-machine env)"
Run Code Online (Sandbox Code Playgroud)
语法很好,但问题是当一个 dotfile(让我们.zshrc举个例子)时,$()当你注册source那个文件的别名时,它的内容会被评估。
which dockereval
Run Code Online (Sandbox Code Playgroud)
结果是
dockerenv: aliased to eval
Run Code Online (Sandbox Code Playgroud)
我尝试了一些事情,例如:
alias dockereval="docker-machine env | eval"
alias dockereval="docker-machine env | /bin/bash"
alias dockereval="eval `docker-machine env`"
Run Code Online (Sandbox Code Playgroud)
但没有一个工作。第二个可能是因为它在不同的会话中运行,第三个和$()我猜的一样
还有其他方法可以使用别名加载这些环境变量吗?
小智 15
将您的别名用单引号而不是双引号括起来。
alias dockereval='eval $(docker-machine env)'
Run Code Online (Sandbox Code Playgroud)
双引号允许扩展变量(至少在 bash 中)而单引号不允许
| 归档时间: |
|
| 查看次数: |
6166 次 |
| 最近记录: |