Mac OS Xで起動時に実行されるシェルスクリプトは、すべてのコマンドを実行しません。

Mac OS Xで起動時に実行されるシェルスクリプトは、すべてのコマンドを実行しません。

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)

shellinitto動詞はboot2dockerv1.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ファイルはローカルで検索されます。

関連情報