bashコマンドライン完全入門|環境変数・シェル変数・履歴・man・パス【LinuC 1.03.1】

LinuC対策

この記事はLinuC Level1 副主題1.03.1「コマンドラインの操作」に対応した要点解説です。試験で問われる範囲に絞り、bashの基本・プロンプト記号・シェル変数と環境変数・履歴・引用符・コマンド連結・manセクションを整理しました。

📚 LinuC Level1 完全攻略マップ(全39サブ項目)へ戻る


目次

  1. この記事でできるようになること
  2. bashとプロンプト記号
  3. カレントディレクトリと特殊記号
  4. シェル変数と環境変数
  5. 変数一覧:set / env / printenv / declare / export
  6. 代表的な環境変数
  7. PATHと実行ファイル検索
  8. コマンド履歴とhistory関連の変数
  9. コマンド連結:; / && / ||
  10. 引用符:シングル/ダブル/バッククォート
  11. manコマンドとセクション番号
  12. よくある質問(FAQ)
  13. まとめ
  14. 模擬問題にチャレンジ(ランダム出題)

1. この記事でできるようになること

  • 多くのLinuxディストリビューションの標準シェルがbashであること
  • プロンプト末尾の記号:一般ユーザは$、rootは#
  • カレントディレクトリ.、親..、ホーム~、ルート/
  • シェル変数と環境変数の違い(子プロセスに継承されるか)
  • setenvprintenvdeclareexportunsetの使い分け
  • 代表的な環境変数:HOMEHOSTNAMELANGPWDUSERLOGNAMEEDITORPATHHISTSIZEHISTFILE
  • コマンド連結:;(常に)/&&(成功時のみ)/||(失敗時のみ)
  • 引用符の挙動:シングル(展開なし)/ダブル(変数展開)/バッククォート(コマンド置換)
  • manのセクション番号:1=ユーザコマンド、5=設定ファイル、8=システム管理

2. bashとプロンプト記号

bash(Bourne Again SHell)は多くのLinuxディストリビューションでデフォルトの対話シェルです。/bin/shbashへのシンボリックリンクになっている環境も多く、「Linuxの標準シェルは何か」と問われたらbashが答えになります。

bashのプロンプト末尾の記号は、ログインしているユーザの権限を示します。

記号 意味
$ 一般ユーザ
# rootユーザ(スーパーユーザ)

この記号はLinuC試験で頻出の基礎知識です。画面上の違いでコマンドの実行者を見分けられます。


3. カレントディレクトリと特殊記号

カレントディレクトリ(現在位置)のパスはpwd(print working directory)コマンドで絶対パス表示できます。シェルは同じ値を環境変数PWDにも保持しています。

$ pwd
/home/kei/work

パス指定に使われる主要な特殊記号は次のとおりです。

記号 意味
. カレントディレクトリ ./script.sh
.. 親ディレクトリ(1つ上) cd ..cd ../..
~ 自分のホームディレクトリ cd ~cd(引数なし)も同じ
/ ルートディレクトリ /etc/passwd

4. シェル変数と環境変数

bashが扱う変数は2種類あり、違いは「子プロセスに引き継がれるかどうか」の1点に集約されます。

種類 スコープ 子プロセスへの継承
シェル変数 定義した現在のシェル内のみ 引き継がれない
環境変数 現在のシェル+そこから起動した子プロセス 引き継がれ

4-1. 定義と昇格の書き方

シェル変数の定義は変数名=値という書式です。等号の前後にスペースを入れてはいけません。スペースを入れるとbashはコマンド名とその引数と解釈し、エラーになります。

# シェル変数として定義(スペース禁止)
$ LPIC=study_linux

# 間違った書き方(コマンドとして解釈されエラー)
$ LPIC = study_linux
bash: LPIC: command not found

シェル変数を環境変数に昇格する方法は2つあります。

# 方法1:export
$ export LPIC

# 方法2:declare -x(-xオプションで環境変数化)
$ declare -x LPIC

# 定義と昇格を同時に書くこともできる
$ export LPIC=study_linux

環境変数化されたあとは、bash -c 'echo $LPIC'のように子プロセスから実行しても値が見えます。シェル変数のままだと子プロセスでは空になります。

4-2. 変数の削除

変数を削除するにはunsetを使います。シェル変数・環境変数のどちらにも有効です。

$ unset LPIC

LPIC=(空を代入)は値を空にするだけで変数自体は残ります。完全に消すならunsetです。


5. 変数一覧:set / env / printenv / declare / export

定義済みの変数を一覧するコマンドは複数あり、どれが何を表示するのかが試験の定番引っかけポイントです。

コマンド 表示対象
set(引数なし) シェル変数+環境変数+関数のすべて
declare(引数なし) setとほぼ同等(シェル変数+環境変数)
env 環境変数のみ
printenv 環境変数のみenvとほぼ同義、単一変数表示も可)
export(引数なし) 現在エクスポート中の環境変数一覧
declare -x 現在エクスポート中の環境変数一覧exportと同等)
⚠️ 違いの要点
・シェル変数を含めた全体を見るのはsetdeclare
環境変数だけを見るのはenvprintenvexportdeclare -x
・新規作成・昇格の役割はexportdeclare -xの2つだけ(envprintenvは表示のみ)

6. 代表的な環境変数

LinuCで名前そのものが問われる定番の環境変数です。値の意味と合わせて覚えます。

変数名 格納される内容
HOME ログイン中ユーザのホームディレクトリ /home/kei
HOSTNAME ホスト名 server01
LANG ロケール(言語・地域) ja_JP.UTF-8
PWD カレントディレクトリのパス /home/kei/work
USER ログイン中ユーザ名(bash系由来) kei
LOGNAME ログイン中ユーザ名(POSIX標準) kei
EDITOR デフォルトで起動するエディタ vim
PATH コマンド検索ディレクトリのリスト /usr/local/bin:/usr/bin:/bin
SHELL ログインシェル /bin/bash
HISTSIZE メモリ上に保持するコマンド履歴数 1000
HISTFILE コマンド履歴ファイルのパス ~/.bash_history
⚠️ 紛らわしい名前に注意
・ホスト名はHOSTNAMEHOSTではない)
・ユーザ名はUSERLOGNAME両方が正解(多くの環境で同じ値)
・カレントディレクトリはPWDCWDCURDIRではない)
・エディタ指定はEDITORDEFAULT_EDITなどは誤り。VISUALはフルスクリーンエディタ用の別変数)
・履歴件数はHISTSIZE、履歴ファイルはHISTFILE

7. PATHと実行ファイル検索

PATHは、コマンド名を入力したときにbashが実行ファイルを探すディレクトリのリストです。各エントリは:(コロン)で区切られます。

$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

PATHにディレクトリを追加すれば、そのディレクトリにある実行ファイルをフルパスを打たずにコマンド名だけで起動できるようになります。

# /usr/local/test を PATH の末尾に追加
$ export PATH=$PATH:/usr/local/test

# 先頭に追加したい場合
$ export PATH=/usr/local/test:$PATH
⚠️ コロン区切りを忘れない
export PATH=$PATH/usr/local/testのようにコロンを入れ忘れると、既存のPATHと新規パスが1つの巨大文字列として連結され、どのディレクトリも検索できなくなります。

注意点:PATHに含まれないディレクトリにある実行ファイルは、絶対パスまたは相対パス(./script.shなど)で明示すれば実行可能です。「絶対に実行できない」わけではありません。また、PATHは通常exportされているため子プロセスに引き継がれます。


8. コマンド履歴とhistory関連の変数

bashは実行したコマンドを履歴として記録します。履歴はメモリ上に保持されつつ、通常はシェル終了時に~/.bash_historyHISTFILEで定義)へ追記されます。

8-1. historyコマンドと再実行

操作 書式 動作
履歴一覧表示 history 過去に実行したコマンドを番号付きで表示
番号指定で再実行 !N(例:!124 履歴番号Nのコマンドを再実行
接頭辞で再実行 !文字列(例:!cat その文字列で始まる最新の履歴を再実行
直前コマンドを再実行 !! 直前に実行したコマンドを再実行
$ history
...
 123  ls -l
 124  cat hoge.txt
 125  pwd

# 再実行(番号指定)
$ !124
cat hoge.txt

# 再実行(接頭辞マッチ:直近の cat で始まるコマンドが再実行される)
$ !cat

8-2. 履歴関連の環境変数

変数 意味
HISTFILE 履歴を保存するファイルのパス(通常~/.bash_history
HISTSIZE 現在のシェルのメモリに保持する履歴件数
HISTFILESIZE 履歴ファイルに保存する最大件数

「履歴の件数」はHISTSIZE、「履歴の場所(ファイル)」はHISTFILEです。混同しやすいので注意してください。


9. コマンド連結:; / && / ||

複数のコマンドを1行でつなげる演算子は、前のコマンドの終了ステータスにどう反応するかが異なります。

演算子 次のコマンドを実行する条件
; 前のコマンドの成否に関係なく常に実行
&& 前のコマンドが成功(終了ステータス0)のときだけ実行
|| 前のコマンドが失敗(終了ステータス0以外)のときだけ実行
# 3つのコマンドを結果問わず順に実行
$ command1 ; command2 ; command3

# ビルド成功時のみデプロイ
$ make && ./deploy.sh

# ping失敗時のみエラーログ
$ ping -c1 server || echo "NG" >> error.log

なお|はパイプ(前のコマンドの標準出力を次のコマンドの標準入力へ渡す)、&はバックグラウンド実行で、連結演算子とは役割が異なります。


10. 引用符:シングル/ダブル/バッククォート

bashで文字列を囲む引用符は3種類あり、変数展開とコマンド置換の挙動が異なります。

引用符 変数展開($VAR コマンド置換(`cmd`
'...'(シングル) されない されない
"..."(ダブル) される される
`...`(バッククォート) 囲んだ文字列をコマンドとして実行し、結果で置き換える

違いをDATE=date(変数DATEに文字列dateを格納)の例で確認します。

$ DATE=date

# シングルクォート:何も展開されない。そのまま出力
$ echo '$DATE'
$DATE

# ダブルクォート:変数展開される。DATEの値「date」が出力される(実行はされない)
$ echo "$DATE"
date

# バッククォート:$DATEが「date」に展開されたうえで、dateコマンドとして実行される
$ echo `$DATE`
2026年  4月 23日 木曜日 ...

バッククォートはコマンド置換の古い書式です。現在は$(...)の方が推奨されますが、LinuCでは両方の書式が登場します。


11. manコマンドとセクション番号

manはLinuxの標準オンラインマニュアル参照コマンドです。lsの使い方を調べたければman lsと入力します。

$ man ls

マニュアルは内容の種類ごとにセクションに分けられています。同じ名前の項目が複数セクションに存在する場合(例:crontabはコマンドと設定ファイルの両方にある)、セクション番号を指定して目的のページを開きます。

セクション 内容 代表例
1 ユーザコマンド lscpcat
2 システムコール openread
3 ライブラリ関数 printf(3)
4 スペシャルファイル(デバイス) null(4)
5 ファイル形式・設定ファイル crontab(5)passwd(5)
6 ゲーム
7 その他(マクロ、慣習、プロトコル) regex(7)
8 システム管理コマンド mount(8)shutdown(8)
# 設定ファイル /etc/crontab の書式を見たい → セクション5
$ man 5 crontab

# システム管理コマンド shutdown → セクション8
$ man 8 shutdown
⚠️ 頻出の割り振り
/etc/crontab/etc/passwdなどの設定ファイル→ セクション5
shutdownmountuseraddなどのシステム管理コマンド→ セクション8
lscpcatなどの一般ユーザ向けコマンド→ セクション1

12. よくある質問(FAQ)

Q. シェル変数と環境変数を見分ける簡単な方法は?

setにはあるがenvにはない変数はシェル変数、どちらにもある変数は環境変数です。あるいはbash -c 'echo $VAR'のように子プロセスを起動して値が見えれば環境変数、空なら(未エクスポートの)シェル変数です。

Q. exportを付けなくても変数は作れるの?

作れます。LPIC=study_linuxのように変数=値の書式だけでシェル変数は作成されます。exportはそのシェル変数を「子プロセスからも見える環境変数へ昇格」させる操作です。

Q. envprintenvの違いは?

どちらも環境変数を一覧表示する用途ではほぼ同じ動作をします。printenv VARのように引数を1つ指定すると単一変数の値だけを表示できる点が特徴的です。

Q. !!!Nはどう違う?

!!直前のコマンドを再実行、!NhistoryN番のコマンドを再実行します。!catのように文字列を続けると、その文字列で始まる最新履歴が再実行されます。

Q. /etc/crontabのmanを開くと違う内容が表示されるのはなぜ?

セクション指定なしのman crontabは、最初に見つかったセクション(多くの場合セクション1のcrontabコマンド)を開きます。設定ファイルとしての書式を知りたい場合はman 5 crontabと明示します。


13. まとめ

  • 多くのディストリビューションの標準シェルはbash。プロンプト末尾は一般ユーザ$、root#
  • 特殊記号:.(カレント)/..(親)/~(ホーム)//(ルート)。カレントパスはpwdで表示、環境変数PWDにも格納
  • シェル変数=現在のシェル内のみ/環境変数=子プロセスにも継承
  • 変数作成は変数=値(スペース禁止)、環境変数化はexportまたはdeclare -x、削除はunset
  • 一覧:setdeclare=全変数、envprintenvexportdeclare -x=環境変数のみ
  • 代表的な環境変数:HOMEHOSTNAMELANGPWDUSERLOGNAMEEDITORPATHHISTSIZEHISTFILE
  • PATHは実行ファイル検索のコロン区切りディレクトリリスト。追加はexport PATH=$PATH:/追加先
  • 履歴:history!!!N!文字列、保存先は~/.bash_historyHISTFILE
  • 連結:;(常に)/&&(成功時のみ)/||(失敗時のみ)
  • 引用符:シングル=リテラル、ダブル=変数展開、バッククォート=コマンド置換
  • manセクション:1=ユーザコマンド/5=設定ファイル/8=システム管理。man 5 crontabは設定ファイルとしての書式

📚 次の主題:フィルタを使ったテキストストリームの処理(LinuC 1.03.2)


14. 模擬問題にチャレンジ(ランダム出題)

ここまでの内容を本試験に近い形で確認できます。問題数を選んで「出題スタート」を押すと、主題1.03.1の問題プールからランダムに出題されます。選択肢をクリック/タップすると、正誤と解説がその場で表示されます。

合格ライン目安:75%以上。もっと幅広く解きたい場合はLinuC 模擬問題ポータルから他の分野にも挑戦できます。


おすすめの教材


Linux教科書 LPICレベル1

Linux教科書 LPICレベル1 Version 5.0対応(あずき本)

LinuC/LPIC Level1 の定番参考書。出題範囲全体を網羅。


Amazonで見る →

【ウズカレ式】1週間でLinuxの基本操作と管理・運用スキルが学べる講座

累計80,000人以上受講。LinuC Level1を1週間で網羅。コマンドライン操作の基礎も丁寧に解説。


Udemyで講座を見る →


関連記事

📚 LinuC Level1 完全攻略マップへ戻る
全39サブ項目のシラバス準拠マップから他の記事を探せます

Dockerの基礎を動画で体系的に学びませんか?

実務で使う基礎だけを3時間に凝縮。環境構築から丁寧に解説しています。

Udemy Docker入門講座 クーポン割引で講座を見る →

コメント

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