当サイトの記事にはプロモーションが含まれています。

Windows PowerShellで「source」コマンドを使う方法

パソコンパソコン・スマホ教室
スポンサーリンク

PowerShellを使っていると、「source」コマンドがLinuxやMacのように使えたら便利だなと思うことがありますよね。特に、環境設定ファイル(例えば`.env`)を読み込んで、設定を反映させたい場面では、Bashのような「source」コマンドが役立ちます。しかし、PowerShellにはそのまま使える「source」コマンドは存在しません。では、どうすれば同じようなことができるのでしょうか?

スポンサーリンク

PowerShellで「source」コマンドの代わりに使える方法

Windowsのイメージ

Windowsのイメージ

PowerShellでは、Bashの「source」コマンドに相当する機能として、「ドットソース(dot sourcing)」という方法があります。これは、スクリプトファイルを現在のセッションで実行することで、そのスクリプト内で定義された関数や変数を現在のセッションに読み込むことができる機能です。

例えば、`myScript.ps1`というスクリプトがあるとします。このスクリプト内で関数や変数が定義されている場合、それらを現在のセッションで使用したいときに、以下のように入力します

powershell
. .\myScript.ps1

最初の「.」は、ドットソースを示す記号で、2番目の「.\myScript.ps1」は実行するスクリプトのパスです。これにより、`myScript.ps1`内で定義された関数や変数が、現在のPowerShellセッションに読み込まれ、他のコマンドと同じように使用できるようになります。

環境設定ファイル(.env)を読み込む方法

開発環境では、環境変数を設定するために`.env`ファイルを使用することがあります。LinuxやMacでは、`source .env`のようにして簡単に読み込むことができますが、WindowsのPowerShellでは直接的な方法がありません。

この場合、`.env`ファイルの内容をPowerShellで読み込むためには、以下のような方法があります

1. `.env`ファイルの内容をPowerShellスクリプトに変換する
2. PowerShellスクリプト内で、`Set-Item`や`::SetEnvironmentVariable`を使って環境変数を設定する

例えば、`.env`ファイルに以下のような内容があるとします


DATABASE_URL=localhost
API_KEY=your_api_key

これをPowerShellで読み込んで環境変数として設定するには、以下のようなスクリプトを作成します

powershell
$envVars = Get-Content .\.env
foreach ($line in $envVars) {
if ($line -match '^(.*?)=(.*)$') {
::SetEnvironmentVariable($matches, $matches, ::Process)
}
}

このスクリプトは、`.env`ファイルの各行を読み込み、`=`で分割して環境変数を設定します。これにより、`.env`ファイルの内容をPowerShellのセッションに反映させることができます。

まとめ

PowerShellでは、Bashの「source」コマンドと同様の機能を実現するために、ドットソース(`. .\script.ps1`)を使用します。これにより、スクリプト内で定義された関数や変数を現在のセッションに読み込むことができます。

また、`.env`ファイルの内容をPowerShellで読み込むためには、`.env`ファイルをPowerShellスクリプトに変換し、環境変数を設定する方法があります。これにより、開発環境で必要な設定をPowerShellでも反映させることができます。

PowerShellは、LinuxやMacのシェルとは異なる部分もありますが、柔軟なスクリプト機能を活用することで、さまざまな環境設定や自動化を実現できます。ぜひ、ドットソースや環境変数の設定方法を活用して、効率的な作業環境を構築してみてください。

よくある質問や疑問

Q1: PowerShellで「source」コマンドは使えませんか?

はい、PowerShellにはBashの「source」コマンドは存在しませんが、ドットソース(`. .\script.ps1`)を使用することで、同様の機能を実現できます。

Q2: `.env`ファイルの内容をPowerShellで読み込むにはどうすればよいですか?

`.env`ファイルの内容をPowerShellで読み込むには、`.env`ファイルをPowerShellスクリプトに変換し、`::SetEnvironmentVariable`を使用して環境変数を設定する方法があります。

Q3: ドットソースと呼び出し演算子(`&`)の違いは何ですか?

ドットソースは、スクリプト内で定義された関数や変数を現在のセッションに読み込むのに対し、呼び出し演算子(`&`)は、スクリプトを新しいセッションで実行し、その結果を現在のセッションに反映させません。

この記事を書いた人
この記事を書いた人

企業の情報システム部門で10年以上、PC・アカウント・社内ネットワーク・Microsoft 365/Google Workspace運用を担当。年間数百件の問い合わせ対応(PC不調、メール送受信、Excel/Word資料、Teams会議、スマホ連携など)を通じて、初心者がつまずくポイントを「再現→原因切り分け→最短解決」の手順に落とし込んできました

現場や身近で実際に起きたトラブルをベースに、手順だけでなく「なぜそうなるか」「失敗しやすい落とし穴」「安全な設定(セキュリティ)」まで含めて解説します。

uri uriをフォローする
スポンサーリンク
よかったらシェアしてね! /
uri uriをフォローする

コメント

タイトルとURLをコピーしました