使いたいdirenv
特定のディレクトリに切り替えると、bash機能が自動的に定義されます。これが関数定義です。
seqchart () {
# Create a sequence diagram creation shorthand
f=$1
target_f=${f%.*}.svg
if [ -f "$f" ]; then
diagrams sequence $f ${target_f}
open -a firefox ${target_f}
else
echo "$0: No file specified"
fi
}
上記のコードをに入れました.envrc
。
フォルダに入るとcd
見えます。
$ cd sequence_diagrams/
direnv: loading .envrc
ただし、bash機能は生成されません。
すべてを一緒に保ちながら、どのようにこれを達成できますか.envrc
?
答え1
~からよくある質問、ハイライト内:
.envrc
direnvは現在シェルにロードされていません。 stdlib、direnvrcをロードし.envrc
、環境の違いを元のシェルに再エクスポートする新しいbashサブプロセスを作成します。これにより、direnvは環境の変化を正確に記録し、さまざまなシェルで使用できます。これもエイリアスと 関数は現在エクスポートできません。
エクスポートされた関数を使用することもexport -f seqchart
おそらく機能しません。なぜなら、bashはエクスポートされた関数()と同じ形式で環境変数を設定する方法を提供しないからですBASH_FUNC_foo%%
。そして、たとえそうであっても、その変数だけを読むことができると思います。スタート。