Linuxやってみる!

(67) 子プロセスの環境変数を親プロセスが引き継ぐ

15,658 views

この記事は最終更新から 2412日 が経過しています。

(1) 引き継げない例

以下のようなシェルスクリプト mysh.sh を作成する。

#!/bin/sh
export PATH=~/mybin:$PATH

これを実行してみる。

[user@linux]$ ./mysh.sh
[user@linux]$ echo $PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

あれっ? 設定が効いていない。
基本的に親プロセスは子プロセスが設定した環境変数を引き継げない。

(2) 引き継げる例

これを実行してみる。

[user@linux]$ source ./mysh.sh
[user@linux]$ echo $PATH
/home/user/mybin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

今度は設定が効いている!

sourceコマンドでスクリプトを実行すると、そのスクリプトはカレントシェル上で実行される。
すなわち、環境変数はカレントシェル上で設定されたものとなる。
 → 子プロセスの環境変数を親プロセスが引き継いだように見える。

ちなみに source の代わりに . でもよい。

[user@linux]$ su - user
Password:
[user@linux]$ . ./mysh.sh
[user@linux]$ echo $PATH
/home/user/mybin:/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin

これでも設定が効いている!


アクセス数(直近7日): ※試験運用中、BOT除外簡易実装済
  • 2026-05-31: 0回
  • 2026-05-30: 4回
  • 2026-05-29: 3回
  • 2026-05-28: 0回
  • 2026-05-27: 2回
  • 2026-05-26: 0回
  • 2026-05-25: 3回
  • モバイルバージョンを終了