最初はエイリアスでシェルアプリケーションを作成しましたが、余裕がなくなりました。
'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/bin
をmain
見つけることができます$PATH
。デフォルトでは、これは$PREFIX/bin
Termuxと同様に、すべてのTermuxインストールに適用されます。$PATH