0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

# AWS学習ログ Day12(2026-03-02)

0
Posted at

教材

  • CloudTech

学習時間

  • 25分 × 1セット

学んだこと

シェル変数とは

シェル変数は、現在使用しているシェル(bashなど)の中で一時的にテキスト文字列などの値を保存できる仕組み。そのシェルのセッション内でのみ有効で、子プロセス(新しく起動したシェル)には引き継がれない。

変数の宣言と参照

# 変数の宣言(= の前後にスペースを入れないこと)
shell_var=test123

# 変数の参照($ をつける)
echo $shell_var
# 出力: test123

注意: shell_var = test123 のように = の前後にスペースを入れるとエラーになる。これはシェルが shell_var をコマンド名、=test123 をその引数として解釈してしまうため。

現在のシェル変数を確認する

# 設定されているシェル変数の一覧を表示
set

# 変数が大量に存在するため、grepで絞り込むと便利
set | grep shell_var

代表的なシェル変数

PS1(プロンプト表示の定義)

PS1 はコマンドプロンプトの表示内容を定義するシェル変数。

PS1='[\u@\h \W]\$ '
記号 意味 表示例
\u 現在のユーザー名 ec2-user
\h ホスト名(最初の . まで) ip-172-31-0-1
\W 現在のディレクトリ名(ベース名のみ) ~
\$ 一般ユーザーなら $、rootなら # $

補足: \H を使うとFQDN(完全修飾ドメイン名)が表示され、\w を使うとカレントディレクトリがホームディレクトリからの相対パスではなくフルパスで表示される。

シェルの切り替えと変数のスコープ

sh コマンドで子シェルを起動する

# 新しいシェル(子シェル)を起動
sh

# 元のシェル(親シェル)に戻る
exit

sh コマンドを実行すると、現在のシェルの中で新しいシェルプロセス(子シェル)が起動する。この子シェルはあくまで別のプロセスであるため、親シェルで定義したシェル変数は子シェルには引き継がれない

# 親シェルで変数を定義
my_var=hello
echo $my_var
# 出力: hello

# 子シェルを起動
sh

# 子シェルでは変数が存在しない
echo $my_var
# 出力: (空)

# 親シェルに戻る
exit

環境変数とは

シェルを切り替えても変数の値を引き継ぎたい場合は、環境変数を使用する。環境変数は export コマンドで宣言し、子プロセスに自動的に引き継がれる。

環境変数の宣言方法

# 方法1: 既存のシェル変数を環境変数に昇格させる
shell_var=test123
export shell_var

# 方法2: 宣言と同時にexportする(こちらの方が一般的)
export shell_var=test123

環境変数の確認

# 環境変数の一覧を表示(シェル変数は含まれない)
printenv

# 特定の環境変数を確認
printenv shell_var

# envコマンドでも確認できる
env | grep shell_var

シェル変数と環境変数の違いまとめ:

項目 シェル変数 環境変数
有効範囲 現在のシェルのみ 現在のシェル+子プロセス
宣言方法 VAR=value export VAR=value
確認コマンド set printenv / env
子シェルへの引き継ぎ されない される

環境変数の活用例:コマンドのデフォルトオプション

一部のコマンドは、特定の環境変数を参照してデフォルトの動作を変更する。

LESS 環境変数の例

# lessコマンドのデフォルトオプションを設定
export LESS="-N"

この設定により、以降 less コマンドを実行すると、-N(行番号表示)オプションが自動的に適用される。毎回 less -N filename と入力する必要がなくなる。

補足: 同様の仕組みを持つ環境変数の例として、EDITOR(デフォルトのテキストエディタを指定)、PAGER(デフォルトのページャを指定)、LANG(ロケール設定)などがある。

注意点

  • export で設定した環境変数は、現在のセッション内でのみ有効。ターミナルを閉じると消える。
  • 永続化するには、~/.bashrc~/.bash_profile に記述する必要がある。
  • 環境変数は子プロセスに引き継がれるが、子プロセスで変更しても親プロセスには反映されない(一方通行)。

感想

徐々に業務で使用したことのあるようなコマンドが出てきて楽しくなってきた。シェル変数と環境変数の違いは、実務でもスクリプトを書くときに重要な知識なので、しっかり理解しておきたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?