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 次 |
最近记录: |