シェルアプリケーションをロードする方法は?

シェルアプリケーションをロードする方法は?

最初はエイリアスでシェルアプリケーションを作成しましたが、余裕がなくなりました。

'app'はyt-dlp(ビデオダウンローダ)を呼び出し、ダウンロードしたコンテンツを安定したディレクトリ構造に整理するシェル機能を提供します。

現在、Termux(Android端末エミュレータ)で1行を使用してアプリケーションをロードしていますbash.bashrc.bashrc

行の1つがbash.bashrcシェルアプリケーションをロードします。

. /path/to/main

main残りをロードすると、内容は次のようになります。

. "$bin_dir/vars"
. "$bin_dir/common"
. "$bin_dir/logger"
. "$bin_dir/history"
. "$bin_dir/files"
. "$bin_dir/dlv"
. "$bin_dir/fvid"

これは、ユーザーが使用できるように関数と変数を端末に公開するbashスクリプトです。読み込み順序は重要であり、たとえば内容dlvによって異なります。common

では、プロジェクトをオープンソースにして簡単にインストールできるようにしたいと思います。 NETで実行せずにシェルアプリケーションをロードできるかどうか疑問に思いますbash.bashrc

スクリプトを入れるかと思いましたが、$PREFIX/bin/誰かが呼び出すと、他dlvのすべての依存関係はまだロードされません。

すべてを1つのファイルに入れることもできますが、私の意図はコードをきれいに保つためにこれらのモジュールを作成することです。

よりエレガントな解決策がなければinstall.sh...echo ". /path/to/main" >> ~/bash.bashrcアイデアを書くことができると思います。

編集:main(loader)を入れ$PREFIX/binましたが、コマンドを実行したときに私のシェルで使用できる関数と変数はありません。私はそれを期待していませんでした。

ベストアンサー1

私が思いついた解決策は、main実行して実行できる必要性を排除することでしたsource main

main含まれているコマンドを実行するだけでは機能しない理由はわかりませんが、sourceこの回避策はそれほど悪くありません。

と入力すると、オペレーティングmainシステム$PREFIX/binmain見つけることができます$PATH。デフォルトでは、これは$PREFIX/binTermuxと同様に、すべてのTermuxインストールに適用されます。$PATH

おすすめ記事