Coloque seu alias entre aspas simples, em vez de aspas duplas.
alias dockereval='eval $(docker-machine env)'
As aspas duplas permitem a expansão da variável (no bash pelo menos) enquanto as aspas simples não
Estou usando docker
há algum tempo e há um comando que escrevo sempre que inicializo minha janela de encaixe:
eval $(docker-machine env)
Eu sei que eval
não deve ser usado a menos que seja necessário, mas é mencionado pelo seguinte:
docker-machine env
gera variáveis de ambiente como esta:
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
agarra-os e carrega-os na minha sessão atual.
Agora, e se eu quiser ter um alias como este:
alias dockereval="eval $(docker-machine env)"
A sintaxe é boa, mas o problema é quando um dotfile (digamos .zshrc
como exemplo), bem o conteúdo do $()
é avaliado ao registrar o alias quando você source
desse arquivo.
which dockereval
Resultados em
dockerenv: aliased to eval
Eu tentei algumas coisas como:
alias dockereval="docker-machine env | eval"
alias dockereval="docker-machine env | /bin/bash"
alias dockereval="eval 'docker-machine env'"
mas nenhum funcionou. O segundo é provavelmente porque ele está sendo executado em uma sessão diferente, o terceiro faz o mesmo que $()
, eu acho
Existe outra maneira de carregar essas variáveis de ambiente com um alias?