source コマンドジェネレーター
現在のシェル内でスクリプトを実行する(source file [args])
ソースの使い方入門
## ソースとは?
`source`コマンド(`.`とも表記)は、サブシェルではなく**現在のシェル内**でスクリプトを読み込み実行します。そのため、スクリプトで定義された変数や関数、エイリアスは実行終了後も引き続き利用可能です。これはシェル設定を再読み込んだり、環境設定ファイルを読み込んだりするための標準的な方法です。
## 使用方法
1. **ファイルの指定**: スクリプトのパスを入力します(例: `~/.bashrc`、`./setup.sh`)。 2. **引数の追加**(任意): スクリプトが必要とする位置引数を渡します(例: `arg1 arg2`)。 3. **コピー&実行**: 生成されたコマンドをターミナルに貼り付けます。変更は現在のシェル内で即座に適用されます。
一般的なオプション
### 位置付きファイル引数
`source`は、最初の引数としてスクリプトのパス、つまり`source ~/.bashrc`を受け取ります。
### 位置付き引数
残りの引数は、スクリプト内で`$1`、`$2`、...として扱われます。`source ./setup.sh dev`により、`$1=dev`が`setup.sh`内で利用可能になります。
### `.`の同義語
POSIXシェルでは、`.`は同じコマンドです。`. ~/.bashrc`は`source ~/.bashrc`と同一です。可読性を高めるためにBash/Zshでは`source`を、移植性のためには`.`を使用してください。
▶スクリプトをソースとして扱う場合と、直接実行する場合の違いは何ですか?
\`./script.sh\`を実行すると、別のサブシェルで処理が行われるため、終了時にはエクスポートされた変数や関数は消失します。一方、\`source script.sh\`を実行すると現在のシェル内で処理が行われるため、変更内容(変数、エイリアス、\`cd\`)は処理終了後も保持されます。
▶なぜ\`source .env\`は自動的に私の変数を環境に読み込まないのでしょうか?
\`.env\`ファイルで\`export\`を使わずに\`KEY=value\`を使用している場合、変数はシェル内で設定されますが子プロセスにはエクスポートされません。各行の先頭に\`export\`を付けるか、すべての代入を自動的にエクスポートするために\`set -a; source .env; set +a\`を実行してください。
▶~/.bashrcを編集した後、シェル設定をどうやって再読み込みしますか?
\`source ~/.bashrc\`(または\`. ~/.bashrc\`)を実行してください。これにより、現在のシェル内でファイルが再読み込まれ、新しいエイリアス、関数、およびexport設定が新しいターミナルを開かずに適用されます。
このツールがあなたに役立ったなら、私にコーヒーをご馳走することをお勧めします。
私にコーヒーを買ってください。