docker execで「エクスポート」が機能しないのはなぜですか?

docker execで「エクスポート」が機能しないのはなぜですか?

/etc/profile.d/custom.shとから変数をエクスポートしました~/.bashrc。実行すると環境で使用できますdocker exec -i CONT_ID /bin/bash。ただし、他のコマンドを実行すると、コマンド環境では使用できません。はい、だからこれを試しました:

docker exec -i "$MYCONTNAME" /bin/bash -c "source /etc/profile.d/custom.sh; echo $MYVAR"

これはうまくいきません。私も試しました:

docker exec -i "$MYCONTNAME" /bin/bash -c "export Y=123; echo Y=$Y"
docker exec -i "$MYCONTNAME" /bin/bash -c "export Y=123 && echo Y=$Y"

しかし、それらも動作しません。追加することはできますが、ing変数を持つシェルスクリプトファイルに-e VARi=VALiあるので()exportを使って動作させる方法はありますか?/bin/bashsource /etc/profile.d/custom.sh

ベストアンサー1

$MYVAR指揮中

docker exec -i "$MYCONTNAME" /bin/bash -c "source /etc/profile.d/custom.sh; echo $MYVAR"

実行前に展開されます/bin/bash -c(二重引用符で囲まれているため)。

代わりに一重引用符を使用してください。

docker exec -i "$MYCONTNAME" /bin/bash -c 'source /etc/profile.d/custom.sh; echo $MYVAR'

または(テストされていない)、

docker exec -i "$MYCONTNAME" /usr/bin/env BASH_ENV=/etc/profile.d/custom.sh /bin/bash -c 'echo $MYVAR'

BASH_ENV非対話型シェル(例:)を起動したときに設定すると、シェルはコマンドをbash -c実行する前にこの変数が指すファイルを取得します。

おすすめ記事