/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/bash
source /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
実行する前にこの変数が指すファイルを取得します。