Environment-Variables
如何保存 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`"
但沒有一個起作用。第二個可能是因為它在不同的會話中執行,第三個和
$()
我猜的一樣還有其他方法可以使用別名載入這些環境變數嗎?
用單引號而不是雙引號將您的別名括起來。
alias dockereval='eval $(docker-machine env)'
雙引號允許擴展變數(至少在 bash 中),而單引號不允許