chpst
次の環境変数をロードするために使用する場合:
env BAR=baz chpst -e envdir mycommand
コンテンツを含むenvdir
ファイルがあります。envdir/FOO
foo$BAR
mycommand
代わりにis値を取得する方法はありますか?FOO
foobaz
foo$BAR
FOO
明らかに、上記のアプローチは機能しません。設定をそのままにしてくださいfoo$BAR
。ロードされた環境変数の値を置き換えるためにできることがあるかどうか疑問に思います。
完全なコンテキスト:ほとんどの場合、環境変数は環境を選択すると静的ですが、場合によってはホストごとに異なる必要があります。だから実生活では、実行環境に適切なホスト名を設定してHOST
からAPI_URL=http://$HOST:8080/
。chpst
ケース。
答え1
たぶんこんなことはありませんか? (envdirの内容を信頼できると仮定)
このファイルをenvdir / runに入れてください:
#!/bin/bash
for v in `dirname $0`/* ; do
if [[ "`basename $v`" = run ]]; then
continue;
fi
eval "export `basename $v`=`cat $v`"
done
exec "$@"
それから:
./envdir/run some command