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

관련 정보