~/.bashrc にループを使用して ~/Shell ディレクトリ内のすべてのスクリプトを実行させるにはどうすればよいですか?

~/.bashrc にループを使用して ~/Shell ディレクトリ内のすべてのスクリプトを実行させるにはどうすればよいですか?

~/ShellBashが通常のユーザーアカウントで起動されるたびに、実行したいディレクトリにシェルスクリプトがあります。だから私がしたことは以下を追加することでした~/.bashrc

for i in `find ~/Shell/ -name "*.sh"`
do
    sh $i
done

.shただし、何らかの理由で、私のディレクトリにあるファイル拡張子を持つファイルに含まれる関数は~/Shell自動的にロードされません。たとえば、ファイルの関数を呼び出したときに新しいユーザー端末で関数を実行したabashときにコマンドが見つからないというエラーが発生しました。~/Shell/bash.shabash

私はディレクトリ内のすべてのファイルを手動でリストし~/Shell、Bashが起動したときに実行されるようにドットを前に追加できることを知っています。たとえば、私のファイルに次の内容があったことがあります~/.bashrc

. ~/Shell/bash.sh
. ~/Shell/cd.sh
. ~/Shell/emerge.sh
...

うまく動作しますが、新しいシェルスクリプトをfor追加すると。~/Shell~/.bashrc

私も今試してみました:

for i in `find -name "~/Shell/*.sh"`
do
        sh $i
done

そして:

for i in "~/Shell/*.sh"
do
        sh $i
done

そして:

for i in `find -name '~/Shell/*.sh'`
do
        sh $i
done

成功しませんでした。

ベストアンサー1

これをあなたの.bashrc

for rc in ~/Shell/*.sh
do
    . "$rc"
done

それからレースに出発してください!

いくつかの注意:

bash(およびzshその他)コマンドは読み取ることができますが、普遍的ではなく、私が知っている最も正確なシェルsourceには存在しません。dash現時点では、同じコードを使用してほぼすべてのBourne-Shell派生プログラムにコードをロードできます。

シェルから直接生成されたファイルの伝統的な命名規則は、サフィックスまたはrc.rcたとえば.bashrc)を使用することです。 rc「実行コマンド」を示します。この.sh拡張は通常、実行可能なスクリプトプログラムで使用されます。 (これらはすべてただルールではなくルールです。 )

おすすめ記事