sourceコマンドで設定ファイルを即時反映する方法|bashrcの読み込みとドットコマンドコマンド

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxコマンド, LinuxコマンドP-T, システム管理コマンド > sourceコマンドで設定ファイルを即時反映する方法|bashrcの読み込みとドットコマンドコマンド
「.bashrcを編集したのに、設定が反映されない」
「ログアウトしてログインし直さないと、変更したPATHが有効にならない」
Linuxの設定ファイルを編集した後、変更を即座に反映させるのが source コマンドです。いちいちログインし直す必要がなくなるため、サーバー運用では日常的に使います。

この記事では、sourceコマンド(ドットコマンド)の使い方から、.bashrc.bash_profile の違い、シェルスクリプトでの活用方法まで実践的に解説します。
【この記事でわかること】
・sourceコマンドで設定ファイルをログアウトなしで即時反映できる
・ドットコマンド(.)はsourceと同じ動作で、sh環境でも使える
・source実行と./実行の違いを理解しないと、環境変数の設定ミスにハマる

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

sourceコマンドとは?~設定変更を即座に反映する

source コマンドは、指定したファイルを現在のシェル環境で読み込んで実行するコマンドです。

通常、.bashrc などの設定ファイルはログイン時に自動で読み込まれます。しかし、設定を変更した場合、そのままでは変更が反映されません。source を使えば、ログアウトせずに変更を即座に反映できます。

# 基本書式 # source ファイル名 # .bashrc の変更を即座に反映する $ source ~/.bashrc

ドットコマンド(.)でも同じことができる

source コマンドは、ドット(.)で代用できます。動作は完全に同じです。

# source コマンドで読み込む $ source ~/.bashrc # ドットコマンドで読み込む(同じ動作) $ . ~/.bashrc

.(ドット)は POSIX 標準で定義されている書き方で、sh(Bourneシェル)でも使えます。一方、sourcebash の拡張コマンドのため、sh では使えない場合があります。

迷ったら source を使えば問題ありませんが、シェルスクリプトの先頭が #!/bin/sh の場合はドットコマンドを使ってください。

主な設定ファイルと読み込みタイミング

source で読み込む代表的な設定ファイルと、それぞれの自動読み込みタイミングは以下の通りです。

.bash_profile:ログイン時に1回だけ読み込まれる。環境変数(PATH等)の設定に使う
.bashrc:bash起動のたびに読み込まれる。エイリアスやプロンプト設定に使う
.bash_logout:ログアウト時に読み込まれる。一時ファイルの削除などに使う
/etc/profile:全ユーザー共通の設定。ログイン時に読み込まれる
/etc/bashrc:全ユーザー共通のbash設定。bash起動時に読み込まれる

.bashrcを編集してsourceで反映する手順

実際の作業例として、aliasを追加する手順を見てみましょう。

1. .bashrcを編集する

# .bashrc をviで開く $ vi ~/.bashrc # 以下の行を追記して保存する alias ll='ls -la'

2. sourceコマンドで反映する

$ source ~/.bashrc

3. 設定が反映されたか確認する

# alias が有効になっているか確認 $ alias ll alias ll='ls -la' # 実行してみる $ ll

環境変数PATHを追加してsourceで反映する

.bash_profile にPATHを追加した場合も、source で即座に反映できます。

# .bash_profile に PATH を追記 $ echo 'export PATH=$PATH:/opt/myapp/bin' >> ~/.bash_profile # source で反映 $ source ~/.bash_profile # 反映されたか確認 $ echo $PATH /usr/local/bin:/usr/bin:/bin:/opt/myapp/bin

sourceとスクリプト実行(./)の違い

これは非常に重要なポイントです。source./script.sh はまったく異なる動作をします。

source script.sh現在のシェルでスクリプトを実行する。スクリプト内で設定した変数や環境変数が、現在のシェルに残る
./script.shサブシェル(子プロセス)で実行する。スクリプト内の変数は、実行後に消える

実際に確認してみましょう。

# テスト用スクリプトを作成 $ echo 'export MY_VAR="hello"' > /tmp/test_env.sh # ./で実行した場合(サブシェル) $ bash /tmp/test_env.sh $ echo $MY_VAR # 何も表示されない(変数はサブシェルで消えた) # source で実行した場合(現在のシェル) $ source /tmp/test_env.sh $ echo $MY_VAR hello # 変数が現在のシェルに反映されている

この違いを理解していないと、「スクリプトでPATHを設定したのに反映されない」という問題にハマります。環境変数を設定するスクリプトは、必ず source で実行してください。

Python仮想環境のactivateもsource

Pythonの仮想環境(venv)を有効にする activate コマンドも、実は source で読み込んでいます。

# Python仮想環境を作成 $ python3 -m venv myenv # 仮想環境を有効にする(source で読み込む) $ source myenv/bin/activate # プロンプトが変わり、仮想環境が有効になる (myenv) $

source で現在のシェルに環境変数を読み込むからこそ、仮想環境内のPythonやpipが優先的に使われるようになります。

「source: command not found」の対処法

sourcebash の組み込みコマンドです。shdash で実行するとエラーになります。

# sh で source を使おうとするとエラーになる場合がある $ sh -c 'source ~/.bashrc' sh: source: not found # sh ではドットコマンドを使う $ sh -c '. ~/.bashrc'

現在使っているシェルは echo $SHELL で確認できます。

sourceでエラーが出る場合の対処法

source で設定ファイルを読み込んだときにエラーが出る場合、そのファイルに構文エラーがある可能性が高いです。

$ source ~/.bashrc -bash: /home/user/.bashrc: line 15: syntax error near unexpected token # 該当行を確認して修正する $ vi ~/.bashrc

設定ファイルを編集する際は、編集前にバックアップを取っておくと安心です。

# 編集前にバックアップ $ cp ~/.bashrc ~/.bashrc.bak # 編集後に問題があれば復元 $ cp ~/.bashrc.bak ~/.bashrc $ source ~/.bashrc

本記事のまとめ(sourceコマンド早見表)

やりたいこと コマンド
.bashrcの変更を即座に反映する source ~/.bashrc
.bash_profileの変更を反映する source ~/.bash_profile
ドットコマンドで読み込む(sh互換) . ~/.bashrc
全ユーザー共通設定を反映する source /etc/profile
環境変数設定スクリプトを反映する source スクリプトファイル名
Python仮想環境を有効にする source venv/bin/activate
現在のシェルを確認する echo $SHELL

sourceコマンドを使いこなして、設定変更を即座に反映させたいですか?

シェルの設定ファイルを安全に管理し、サーバー運用の現場で困らないスキルを体系的に学びましょう。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。

無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録
宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。