簡體   English   中英

Docker-machine中的Eval:終端vs shell腳本

[英]Eval in docker-machine: terminal vs shell script

我正在嘗試運行一個簡單的shell腳本來自動更改docker-machine環境。 問題是,當我直接在Mac終端中運行以下命令時,輸出以下內容:

eval $(docker-machine env default)
docker-machine ls
NAME    ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
default *        digitalocean   Running   tcp://***.**.***.***:****            v1.12.0   

所以基本上你會期望,但是當我運行以下.sh腳本時:

#!/usr/bin/env bash
eval $(docker-machine env default)

輸出是:

./run.sh
docker-machine ls
NAME    ACTIVE   DRIVER         STATE     URL                         SWARM   DOCKER    ERRORS
default          digitalocean   Running   tcp://***.**.***.***:****           v1.12.0   

所以基本上,它沒有將其設置為活動,我無法訪問它。

有沒有人遇到過這個問題,並知道如何解決它? 對我來說似乎很奇怪,除了這個方面之外,還有其他一切都在運行和自動化。

干杯,亞倫

我認為您需要獲取shell腳本

source ./myscript.sh

當eval中的導出返回到進程時,您開始運行shell然后被處理掉。 這些需要轉到父級,例如登錄shell

考慮a.sh

#!/bin/bash
eval $(echo 'export a=123')
export b=234

當以兩種方式運行時

$ ./a.sh
$ echo $a

$ echo $b


$ source a.sh
$ echo $a
123
$ echo $b
234
$

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM