Linuxのシェルとコマンドプロンプトを理解しよう“応用力”をつけるためのLinux再入門(4)

今回のテーマは「シェル」です。リモートでサーバを操作したり、GUIではできない操作をしたり、よく行う処理を自動化したり……と、Linuxではシェルを使う機会がとても多く、また、シェルを使いこなせるようになることで活用の幅が大きく広がります。これから何回かに分けてシェルの使い方を紹介していきます。

» 2016年03月02日 05時00分 公開
[西村めぐみ@IT]
「“応用力”をつけるためのLinux再入門」のインデックス

連載目次

シェルでコマンドを入力してみよう

 まずは、シェルのおさらいです。本連載第3回で簡単に触れましたが、ユーザーからのコマンド入力を受け取り、実行結果を表示するのが「シェル」です。実際にやってみましょう。

 LinuxをCUI(Character User Interface)ベースで起動しているならば、ログインするとシェルがコマンド入力待ちの状態となります(画面1)。GUI(Graphical User Interface)ベースであれば「端末」や「rxvt」、あるいは「Xterm」など「 ~term」という名前のアイコンからシェルを起動することができます(画面2)。

画面1 画面1 CUIのログイン画面
画面2 画面2 「端末」アイコンからもシェルを起動できる(CentOS7)

 ここでコマンドを入力して[Enter]キーを押すと、実行結果が表示されます(画面3)。

画面3 画面3 シェルでのコマンド実行例

Linuxで使えるシェルの種類

 Linuxで使えるシェルにはさまざまなものがあり、自分の好きなものを選ぶことができます。主なシェルには以下のものがあります。

  • sh(Bourneシェル、Bシェル)
  • bash
  • csh(Cシェル)
  • tcsh
  • zsh

 「sh(Bourneシェル、Bシェル)」は、この中では最も古くからあるシェルで、UNIX系システムには必ず入っています。現在は、Bシェルを発展させ、より使いやすくしたシェルである「bash(Bourne Again Shell)」が広く使われています。

 「csh(Cシェル)」はバークレイ版UNIXの標準シェルで、C言語と同じような文法のシェルスクリプトを書けることが特徴です。現在は、Cシェルと完全な互換性を持ち、かつ機能が強化された「tcsh」がよく使われています。

 「zsh」はBシェル系ですが、bashやtcshの機能が盛り込まれ、さらに独自の機能も追加された多機能シェルです。

 これらのシェルの中でも、主に使われているのがbashとtcshです。ほとんどのLinuxディストリビューションでは、インストール後にデフォルトでbashが起動するようになっているでしょう。本連載でも、シェルについてはbashを中心にして解説していきます。

 なお、単にコマンドを実行するだけであれば、どのシェルを使ってもほとんど変わりはありません。コマンドとコマンドを組み合わせたり、コマンドの入力を補助したりする機能で違いが出てくることがあります。

現在使っているシェルを確認するには?

 今、自分が使っているシェルが何なのかを確認してみましょう。今回は「ps」コマンドを使って確認します。psコマンドは、現在動作しているプロセスを表示するコマンドです。

 それでは、何もオプションを指定しないで「ps」だけで実行してみましょう。画面4のように「bash」と表示されれば、現在bashが動作していることが分かります。

画面4 画面4 コマンドラインで「ps」コマンドを実行して、動作しているシェルを確認する

別のシェルを試すにはどうする?

 それでは、今度はtcshを起動してみましょう。コマンドラインで「tcsh」と入力すれば起動しますが、シェルの場合は「exec tcsh」と入力します(※)。bashに戻るには、「exec bash」と入力します。

【※】「exec」は“現在のプロセスを新しいプロセスで置き換える”というコマンドです。例えば、bashが動いているところで「exec tcsh」を実行すると、tcshがbashに置き換わって動作します。execなしでシェルを起動した場合は、元のシェルの子プロセスとして別のシェルが起動します。このような起動をした場合は、「exit」で元のシェルに戻ります。プロセスについては今後の本連載で取り上げます。


 ただし、特に設定ファイルが用意されているわけではないので、見た目は何も変わりません。コマンドラインでの入力方法も同じで、psコマンドの結果が変わることが確認できる程度です(画面5)。

画面5 画面5 「exec」コマンドでtcshを起動して、psコマンドで確認する

インストールされているシェルを確認するには?

 インストールされているシェルは、設定ファイルの「/etc/shells」にリストアップされています(※)。「/etc/shells」は「/etcという場所にあるshellsというファイル」という意味で、GUI環境では「コンピューター」下の「etc」フォルダにある「shells」というアイコンで確認できます。

【※】「/etc/shells」は、“ログインシェルとして使用できるコマンドの一覧”が記述された設定ファイルです。「ログインシェル」はログインして最初に起動するコマンドなので、この設定ファイルに記述されているものだけが許可されています。「shells」ファイルは一般ユーザーの権限では書き換えることができません。


 「shells」ファイルはテキストファイルなので、例えばデスクトップで「etc」フォルダを開いて「shells」をダブルクリックすれば、テキストエディタが起動します(画面6)。

画面6 画面6 「etc」ディレクトリにある「shells」ファイルをダブルクリックして、テキストエディタで開く

 しかし、せっかくコマンドラインを使っているのですから、「cat」コマンドで「/etc/shells」の内容を表示してみましょう。「cat /etc/shells」と入力して[Enter]キーを押します(画面7)。これは、「cat」コマンドを、「/etc/shells」というファイル名を指定して実行する、という意味です。

画面7 画面7 「cat /etc/shells」コマンドでインストールされているシェルを確認する

コマンドプロンプトの“読み方”

 コマンドプロンプトにはさまざまな情報が表示されています。例えば、今回使用している画面では「[study@localhost ~]$」と表示されています。この[]の中に書かれている内容は、「ユーザー名@ホスト名 カレントディレクトリ」という意味になります。「~(チルダ)」記号は、ホームディレクトリという意味です。

 最後の記号は、いわばコマンドプロンプトの“目印”のようなもので、一般ユーザーで実行している場合は「$」記号が表示されるように設定されています(※)。rootユーザーという特別なユーザーで実行している場合は「#」という記号が表示されます。

【※】シェルの種類を示したい場合、Bシェル系は「$」記号、tcshなどのCシェル系は「%」を使います。


 つまり、「[study@localhost ~]$」というプロンプトからは「現在、一般ユーザーとしてコマンドラインを使っており、studyという名前でlocalhostというホストにログインしている。カレントディレクトリはホームディレクトリ」ということが分かります。

 コマンドプロンプトに何を表示するかは、最後の「$」記号も含め、シェルの設定ファイルに記述します。

 コマンドラインのサンプルなどでは、一般ユーザーで実行できるコマンドならば「$」を使って「$ cat /etc/shells」のように示します。「$」はプロンプトを示しているので、コマンドラインで「cat /etc/shells」と入力して[Enter]キーを押すのだな、ということが分かります。「# shutdown」のように示されていれば、rootユーザーで「shutdown」と入力して[Enter]キーを押すのだな、ということが分かります(※)。

【※】「shutdown」コマンドは、その名の通り、システムをシャットダウンするコマンドで、rootユーザーで実行する必要があります。ただし、デスクトップ環境に「終了」ボタンがあることからも分かるように、個人利用のPCでは一般ユーザーのままでシャットダウンや再起動を行えるように設定されています。CentOS 7でコマンドラインから再起動したい場合は、「shutdown -r now」(直ちに再起動)、あるいは「reboot」を実行します。


[オマケ]zshのインストールとログインシェルの変更

CentOS 7にzshをインストールしてみよう

 シェルに興味を持ち始めると、「zsh」というシェルを使ってみたくなるかもしれません。ここでは、CentOS 7環境にzshをインストールする方法と、ログインシェル(デフォルトの起動シェル)を変更する方法を紹介しましょう。

 (1)「アプリケーション」→「システムツール」→「ソフトウェア」で「ソフトウェア」を起動し、zshを検索します(画面8)。

画面8 画面8 ソフトウェアを起動して、「zsh」を検索する

 (2)zshのパッケージにチェックマークを入れて、「変更を適用」をクリックします(画面9)。

画面9 画面9 zshのパッケージにチェックマークを入れて「変更を適用」をクリックする

 (3)認証が要求されるので、管理者のパスワードを入力します(画面10)。確認メッセージは数回表示されます。

画面10 画面10 認証が要求されたらパスワードを入力する

 以上の操作でzshをインストールできました。「cat /etc/shells」コマンドをもう一度実行してみましょう(画面11)。

画面11 画面11 「cat」コマンドで、あらためて「/etc/shells」を確認する

ログインシェルを変更してみよう

 システムに不慣れな状態でシェルを変更するのはあまりお勧めしませんが、もし操作に慣れてきて「このシェルが自分に合っているのでずっと使いたい」と思ったら、ログインシェルを変更してみるのも面白いでしょう。

 ログインシェルは「chsh」コマンドで変更できます。実行すると新しいシェルを入力するよう求められるので、「/bin/zsh」のように、zshがどこにあるかも含めて指定します(画面12)。

画面12 画面12 「chsh」コマンドでログインシェルを変更する

 このように、ファイルやコマンドを場所(ディレクトリ)も含めて指定することを、“パス付きで指定”あるいは“フルパスで指定”のように表現します。「パス(PATH)」については今後の連載で説明します。

 続いて、パスワードの入力が求められるので、入力して[Enter]キーを押します。シェルのパスが分からないなどで操作を止めたい場合は、[Ctrl]+[C]キーを押して中断してください。

 変更したログインシェルは、次回のログインから有効になります。また、元に戻したい場合は、再度chshコマンドを実行して以前のシェルを指定し直してください。本連載も含め、Linux関連の情報ではbashを使っているケースが多いです。

 なお、インストールされているシェルのパスは先ほどの「cat /etc/shells」や、chshコマンドを使って「chsh -l」で確認できます(※)。また、chshコマンドで使用できるオプションは「chsh --help」で調べることができます。この「--help」オプションは今回使用したpsやcatの他、多くのコマンドで使用できるのでぜひ試してみてください。

【※】chshコマンドは「/etc/shells」を参照しています。


筆者紹介

西村 めぐみ(にしむら めぐみ)

PC-9801N・PC-486DXからのDOSユーザー。1992年より生産管理のパッケージソフトウェアの開発およびサポート業務を担当。のち退社し、専業ライターとして活動を開始。著書に『図解でわかるLinux』『らぶらぶLinuxシリーズ』『はじめてでもわかるSQLとデータ設計』『シェルの基本テクニック』など。2011年より、地方自治体の在宅就業支援事業にてPC基礎およびMicrosoft Office関連の教材作成およびeラーニング指導を担当。

Copyright © ITmedia, Inc. All Rights Reserved.

スポンサーからのお知らせPR

Linux & OSS 記事ランキング

本日月間

注目のテーマ

4AI by @IT - AIを作り、動かし、守り、生かす
Microsoft & Windows最前線2025
AI for エンジニアリング
ローコード/ノーコード セントラル by @IT - ITエンジニアがビジネスの中心で活躍する組織へ
Cloud Native Central by @IT - スケーラブルな能力を組織に
システム開発ノウハウ 【発注ナビ】PR
あなたにおすすめの記事PR

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。