どのようにあなたはあなたの分割する必要があります.BASHRCまたは.zshrcファイル
スケーラブルなbash/zsh起動スクリプトだけでいくつかの行
割る
しかし、これは様々なフレームワーク、ユーティリティ、またはプロジェクトと一緒に時間をかけて簡単に厄介になる可能性があります.仕事でさえ、我々は生産性/効率を押し上げるために繰り返しのタスク/コマンドを自動化する必要があるかもしれません.したがって、我々は時々これらのファイルを更新します.最初に小さな庭は、それから維持するのが難しい濃い森に進化することができました.
私は長い間持っていた
同様に、私は1500以上の線を私の
モジュールの設定をすることは、以下の理由により良い実行です. 関連コンテンツは、懸念のより良い分離を意味するグループ化されます. 将来の分割ファイルも更新せずに自動ロードされるので、システムはよりスケーラブルになります 最初にコンテンツを分割すると、すべての設定を1つずつ確認し、古い、未使用、または重複したものを検出することを強制します.これはシェルスクリプトの詳細については、繰り返しパターンがあることに気づくでしょうし、より良いコードの再利用のために抽出することができるように強制的になります.最終結果はleanerシステムです.シェルスクリプトはtop paying tech as per the latest StackOverflow survey .
ここでのコマンドは主に
分割ファイルを含むターゲットフォルダを作成する必要があります.簡単にするために、我々は
コンテンツの見直しを始めることができました
では、
現在、スケーラブルなシステムがあります.将来の変更 新しいalias/command/envvarが一般的な分割ファイルに入れられるかどうかを調べます(例えば それがどこに属しないならば、ちょっとそれを入れてください 一度、関連するものの重要な数がすでにあります この美しさは
上記のコマンドで問題がない場合、他の人はこの時点で停止することがあります
これを解決するための様々な戦略がありますが、最も簡単な方法は以下の通りです. 最初に読み込む 次に、他のスクリプトを読み込みます
こうすることができました.
あなたがファンであるならばfd 私のように、それは現代の/より速いバージョンの
シェルの起動スクリプトは非常に効率/生産性を向上させるために便利です. 単一のソースからの間のパフォーマンスには、観測可能な違いはありません ファイルの分割は、より良いモジュラリティ、懸念の分離、スケーラビリティを意味します.今後のアップデートは、より簡単に管理されます. 各々のファイルのより小さな範囲は時代遅れで未使用のものを検出するのがより簡単であることを意味します.その後、プロセスはシェルスクリプトのスキルを強化することができます. 重要なファイルを最初にロードすることができます.私たちは お読みありがとうございます.いくつかの値を見つけた場合は、親切に従って、または記事にコメント/コメントを与えるかbuy me a coffee . これは私に多くのことを意味し、私はより高品質のコンテンツを作成することをお勧めします.
目的
.bashrc
/.zshrc
複数のファイルにzshrc
古いものを一つずつロードします.for FILE in ~/zshrc/*; do
source $FILE
done
背景
.bashrc
/.zshrc
は主に端末アプリケーションを起動するときに実行される.通常、私たちのワークフローを助けるために、カスタムエイリアス/ショートカット、関数/コマンド、シェル変数、および環境変数が含まれます.しかし、これは様々なフレームワーク、ユーティリティ、またはプロジェクトと一緒に時間をかけて簡単に厄介になる可能性があります.仕事でさえ、我々は生産性/効率を押し上げるために繰り返しのタスク/コマンドを自動化する必要があるかもしれません.したがって、我々は時々これらのファイルを更新します.最初に小さな庭は、それから維持するのが難しい濃い森に進化することができました.
VIM設定の分割
私は長い間持っていた
.vimrc
/init.vim
設定前に、私はよりモジュラーであるため、それを分割し、メインローダは、新しいファイルでも自動検出/ロードすることができます.メイキングmy settings よりスケーラブルruntime settings.vim
runtime plugins.vim
runtime mappings.vim
" `!` is needed to load all files in the folder.
runtime! themes/*.vim
runtime! plugins-config/*.vim
ZSH設定の分割
同様に、私は1500以上の線を私の
.zshrc
前と今it just have a few lines . 以下、簡略化した版について説明する.ほとんどの人にも簡単なユースケースがあります.CONFIGS=$HOME/dev/configs
source $CONFIGS/zshrc/init.sh
FILES_STR=$(fd --glob '*.sh' --exclude 'init.sh' $CONFIGS/zshrc)
FILES=($(echo $FILES_STR | tr '\n' ' '))
for FILE in $FILES; do
source $FILE
done
利益
モジュールの設定をすることは、以下の理由により良い実行です.
.zshrc
. 分散ソース
ここでのコマンドは主に
zsh
( .zshrc
), しかし、アイデアはあなたが使用しても同じですbash
( .bashrc
/.bash_profile
) その他のシェル.1 .スクリプトフォルダの作成
分割ファイルを含むターゲットフォルダを作成する必要があります.簡単にするために、我々は
~/zshrc
フォルダ(すなわち、それをメインから区別する点なしで)~/.zshrc
ファイル).2 .スクリプトファイルの作成
コンテンツの見直しを始めることができました
.zshrc
ファイル.次に、以下のファイルのようなトピックごとに関連する内容をグループ化します.ファイル拡張子は問題ではないことに注意してくださいsource
シェルコマンドはファイルの内容を気にかけます.私はちょうど.sh
の一般/傘用語としてzsh
and bash
シェル~/zshrc
├── git.sh
├── js.sh
├── python.sh
├── django.sh
├── docker.sh
├── general.sh
├── init.sh
それから、2つの特別なファイルを持つことができました.init.sh
シェルが必要とするものを含みます(zsh
) 初期化子、プラグイン、テーマなど.general.sh
は、現在の分割ファイルに属していないすべてのものが含まれており、あまりにも少数の専用ファイルを警告する.これは簡単に分類することができなかったもののためのデフォルトのファイルになります.メインローダの更新
では、
~/.zshrc
これを単にロード/ソースにすることができます.sh
フォルダ内のファイルを分割します.あなたは*.sh
代わりに*
具体的にはfor FILE in ~/zshrc/*; do
source $FILE
done
したがって、この論理構造を持ちます.~/.zshrc
~/zshrc
├── git.sh
├── js.sh
├── python.sh
├── django.sh
├── docker.sh
├── general.sh
├── init.sh
将来更新
現在、スケーラブルなシステムがあります.将来の変更
git.sh
, python.sh
, などを入れてgeneral.sh
デフォルト先general.sh
, あなたは、新しい専用/分割ファイルにそれらを置くことができます.~/.zshrc
ウィルオートも新しく追加されたファイルをロードします.したがって、その内容を更新する必要はありません.クリティカルソース
上記のコマンドで問題がない場合、他の人はこの時点で停止することがあります
~/.zshrc
. しかし、時々、他のスクリプトの前に最初にロードされる必要があるスクリプトがありますinit.sh
.これを解決するための様々な戦略がありますが、最も簡単な方法は以下の通りです.
init.sh
ユーティリティの使用
こうすることができました.
# Load the 'init.sh'.
source ~/zshrc/init.sh
# Find all '.sh' files in ~/zshrc, exclude 'init.sh'.
FILES_STR=$(find ~/zshrc -name '*.sh' -not -name 'init.sh')
# `tr` is a find-and-replace utility.
# Outer () will convert the output of $() to array.
FILES=($(echo $FILES_STR | tr '\n' ' '))
for FILE in $FILES; do
source $FILE
done
fdユーティリティの使用
あなたがファンであるならばfd 私のように、それは現代の/より速いバージョンの
find
, あなただけを変更する必要がありますFILES_STR
値# Load the 'init.sh'.
source ~/zshrc/init.sh
# Find all .sh files in ~/zshrc, exclude 'init.sh'.
FILES_STR=$(fd --glob '*.sh' --exclude 'init.sh' ~/zshrc)
# 'tr' is a find-and-replace utility.
# Outer () will convert the output of $() to array.
FILES=($(echo $FILES_STR | tr '\n' ' '))
for FILE in $FILES; do
source $FILE
done
キーテイクアウト
.zshrc
/.bashrc
またはスプリットファイルからソーシングする.find
/fd
CLIユーティリティを見つける/ファイルを除外します.Reference
この問題について(どのようにあなたはあなたの分割する必要があります.BASHRCまたは.zshrcファイル), 我々は、より多くの情報をここで見つけました https://dev.to/ranelpadon/how-and-why-you-should-split-your-bashrc-or-zshrc-files-4f22テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol