OS Xでは、以下を試してみました。リンゴン起動時にシェルスクリプトを実行します。 ~/desktop/_admin/boot/bootdocker.sh ファイルがあります。
#!/bin/bash
boot2docker up
export DOCKER_HOST=tcp://192.177.59.103:2475
私の質問は、次のいずれかを使用してコマンドラインからスクリプトを実行する場合です。
$bash bootdocker.sh
$./bootdocker.sh
$sh bootdocker.sh
最初のコマンドは実行しますが、DOCKER_HOST変数をエクスポートする2番目のコマンドは実行しません。
私が犯している間違いを誰が見ることができますか?
答え1
作成するすべてのシェルに対してこれを設定するには、それをまたは$DOCKER_HOST
にマージする必要があります。.bashrc
.bash_profile
メモ:子プロセスが親プロセスの環境を向上させることができないため、あなたがしたいことは決して機能しません。
boot2docker
次のように使用できます。
$ eval $(boot2docker shellinit)
shellinit
to動詞はboot2docker
v1.2.0の新しい動詞であり、セットアップに使用されます$DOCKER_HOST
。これをそのまま実行すると、次のような出力が生成されます。
$ boot2docker shellinit
export DOCKER_HOST=tcp://192.168.59.103:2375
答え2
2番目のコマンドは正しく実行されますが、スクリプトはサブシェル(サブプロセス)で実行されるため、実行後に返される親シェルは環境変数を継承しません。
答え3
varを取得するには、$DOCKER_HOST
以下を実行する必要があります。
。 ./bootdocker.sh
それは
.
「入力時にこのファイルを使用する」という意味./bootdocker.sh
ファイルはローカルで検索されます。