Como salvar um alias de um comando eval $ (other_comand)

4

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?

    
por GabLeRoux 08.06.2016 / 20:18

1 resposta

6

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

    
por 08.06.2016 / 20:53