コマンドとしてのソーススクリプト

コマンドとしてのソーススクリプト

何らかの理由で(?)スクリプトを書くとき、通常は機能しないか、部分的にのみ機能します。それから.orを使ってみるとsource完璧に動作します。スクリプトがさまざまな点で異なるため、スクリプト全体が機能するためにソースが必要なものを分離するのは難しいため、この問題の原因は何であるかわかりません。また、.bashrcエイリアスと関数からスクリプトに項目を移動すると、ほとんど常にこのようなことが起こることがわかりました。

しかし、実際の質問について、上記の場合、ソースポイントを「飲み込んで」毎回ポイントを打つ必要なく、スクリプトを単一の単語コマンドとして引き続き使用できるようにする最善の方法は何ですか?

答え1

ファイルを別のプロセスとして実行するのではなく、script実際にファイルをインポートするためにコマンドを呼び出すには、次の関数を生成します。script

script () { . /path/to/script; }

関数を永久に作成するには、その関数をシェルの関連するrcファイル(たとえば)に追加し~/.bashrcますbash

答え2

実用的な例を持つ方が良い(または「機能しない」ことを例に分けて)。

つまり、sourceファイルにアクセスすると、そのジョブが呼び出されたのと同じ環境(シェル)でその内容を実行します。 sourceingは複数のスクリプトに変数を含める優れた技術です。

実行したいスクリプトがディレクトリにない場合は、「PATHドット」、「スラッシュ」、「ファイル名」を入力して現在のパスを参照できます(スクリプトを実行するため)。これは「ソース」とは全く異なります。

関連情報