如何保存 eval $(other_comand) 命令的别名

如何保存 eval $(other_comand) 命令的别名

我已经使用了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 中),而单引号则不允许

相关内容