linge.sh
私の使用から.bashrc
呼び出すbashスクリプトがあります。
source ${HOME}/Opstk/bin/linge/linge.sh
linge.sh
次に、bashファイルを呼び出してオプションで有効になったアドインを含めたいと思います。
${HOME}/Opstk/bin/linge/edvart/edvart.sh
ただ使用
source ${HOME}/Opstk/bin/linge/edvart/edvart.sh
存在する
${HOME}/Opstk/bin/linge/linge.sh
?
ユーザーが端末を起動するたびに関数呼び出しを使用できるようにしたいです。
関数は次のように定義されます。
linge-environ-texinfo
{
...
}
export -f linge-environ-texinfo
端末にいるときに好きなように関数を呼び出したいです。
linge-environ-texinfo -opt1 --opt2=val param1 param2
ベストアンサー1
ファイルにアクセスすると、source
現在シェルのファイルにあるコマンドを実行します。これは本質的に、ファイルの内容を端末に直接1行ずつ入力することと変わりません。あなたのファイルにも同じことが当てはまります.bashrc
。インポートすると現在のシェルからすべてのコマンドを実行し、別のファイルをインポートすると現在のシェルでも実行されます。調達ファイルは、さまざまな部分を複数のモジュールに分割して.bashrc
何かを調整するたびに巨大なファイルを見る必要がないようにするためのきちんとした方法です。
export
一方、エクスポートされたシェルで実行されたコマンドに指定された名前/変数を指定します。たとえば、FOO=bar
変数をエクスポートせずにシェルで変数を定義し、そのスクリプトのFOO
コンテキストで変数が「bar」に等しいと予想してスクリプトを実行する場合は、誤った操作を実行します。追加のコンテキストがサブシェルを実行するためのスクリプトがまだ提供されていないため、そこから設定が解除FOO
されます。この問題は、その名前を指定し、スクリプトによって生成されたexport
すべてのプロセス(スクリプトを含む)に対してその名前を指定された値(提供されている場合)に設定するようにシェルに指示することによって解決されます。
したがって、元の質問に対して - 新しいシェルを実行するとすぐに使用できる機能を定義する場合は、必要に応じてその機能を含む.bashrc
ファイルをインポートすることをお勧めします。同様に、一部の機能セットをその機能を使用したい他のファイルに効果的にインポートしたい場合は、その機能を使用したいファイルにその機能を含むファイルをインポートするだけです。これが必要な唯一のexport
ケースは、定義した名前にアクセスする必要があるいくつかのサブプロセスを実行することです。
しかし、今後このような問題が発生した場合は、まず確認することを忘れないでください。help
そうでなければ、man
長期的に多くの問題を減らすことができます。