.envrcでbash関数を作成する方法は?

.envrcでbash関数を作成する方法は?

使いたい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

~からよくある質問、ハイライト内:

  1. .envrcdirenvは現在シェルにロードされていません。 stdlib、direnvrcをロードし.envrc、環境の違いを元のシェルに再エクスポートする新しいbashサブプロセスを作成します。これにより、direnvは環境の変化を正確に記録し、さまざまなシェルで使用できます。これもエイリアスと 関数は現在エクスポートできません。

エクスポートされた関数を使用することもexport -f seqchartおそらく機能しません。なぜなら、bashはエクスポートされた関数()と同じ形式で環境変数を設定する方法を提供しないからですBASH_FUNC_foo%%。そして、たとえそうであっても、その変数だけを読むことができると思います。スタート。

関連情報