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에서는) 작은따옴표는 허용하지 않습니다.