Bash用のロード可能な組み込み機能を構築する方法

Bash用のロード可能な組み込み機能を構築する方法

最近学んだように、カスタム組み込み機能をBashに動的にロードすることができます(参照enableマニュアルにこの回答)。しかし、この機能をどのように活用するのかわかりません。

リンクされた質問は以下を指します。https://mywiki.wooledge.org/BashLoadableBuiltinsいくつかのコンパイル手順を提供しますが、Bash 5.0では再現できません。

$ git clone https://git.savannah.gnu.org/git/bash.git
$ cd bash/
$ ./configure
$ make
$ exec ./bash
$ cd examples/loadables/
$ make
$ enable -f finfo finfo
bash: enable: cannot open shared object finfo: finfo: cannot open shared object file: No such file or directory

(これはフル出力もし役に立つなら)

Runがファイルを探している間にファイルを生成するmakeようです。適切な成果物を作成する手順を見逃しましたか?カスタム組み込み関数を構築するより簡単で一般的な方法はありますか?examples/loadables.oenable.so

ベストアンサー1

ファイル名は次のとおりです。「絶対」パス(この場合、これはスラッシュのあるパスにすぎません。)またはから検索メカニズムBASH_LOADABLES_PATHに戻ります(dlopen(3)たとえば、Linuxのマンページを参照してください。)。コメントにもかかわらずそうです。enable.def、これには現在のディレクトリは含まれていません(IMO、これは良いことです)。

次のパスを使用してください。

bash-5.0$ enable -f print print
bash: enable: cannot open shared object print: print: cannot open shared object file: No such file or directory
bash-5.0$ enable -f ./print print
bash-5.0$ help print
print: print [-Rnprs] [-u unit] [-f format] [arguments]
    Display arguments.

    Output the arguments.  The -f option means to use the argument as a
    format string as would be supplied to printf(1).  The rest of the
    options are as in ksh.

おすすめ記事