「ログアウトしてログインし直さないと、変更したPATHが有効にならない」
Linuxの設定ファイルを編集した後、変更を即座に反映させるのが
source コマンドです。いちいちログインし直す必要がなくなるため、サーバー運用では日常的に使います。この記事では、
sourceコマンド(ドットコマンド)の使い方から、.bashrc と .bash_profile の違い、シェルスクリプトでの活用方法まで実践的に解説します。・sourceコマンドで設定ファイルをログアウトなしで即時反映できる
・ドットコマンド(.)はsourceと同じ動作で、sh環境でも使える
・source実行と./実行の違いを理解しないと、環境変数の設定ミスにハマる
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
sourceコマンドとは?~設定変更を即座に反映する
source コマンドは、指定したファイルを現在のシェル環境で読み込んで実行するコマンドです。通常、
.bashrc などの設定ファイルはログイン時に自動で読み込まれます。しかし、設定を変更した場合、そのままでは変更が反映されません。source を使えば、ログアウトせずに変更を即座に反映できます。# 基本書式 # source ファイル名 # .bashrc の変更を即座に反映する $ source ~/.bashrc
ドットコマンド(.)でも同じことができる
source コマンドは、ドット(.)で代用できます。動作は完全に同じです。# source コマンドで読み込む $ source ~/.bashrc # ドットコマンドで読み込む(同じ動作) $ . ~/.bashrc
.(ドット)は POSIX 標準で定義されている書き方で、sh(Bourneシェル)でも使えます。一方、source は bash の拡張コマンドのため、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 # 変数が現在のシェルに反映されている
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」の対処法
source は bash の組み込みコマンドです。sh や dash で実行するとエラーになります。# 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日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。
3,100名以上が実践した「型」を無料で公開中
プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。
登録10秒/合わなければ解除3秒 / 詳細はこちら
- 次のページへ:teeコマンドの使い方|画面表示とファイル保存を同時に行う方法
- 前のページへ:envコマンドで環境変数を確認・設定する方法|export・printenvとの違いも
- この記事の属するカテゴリ:Linuxコマンド・LinuxコマンドP-T・システム管理コマンドへ戻る

無料メルマガで学習を続ける
Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。
登録無料・いつでも解除できます