はじめに
この実験では、Linux 環境で現在使用中のシェルを判定する方法を学びます。アクティブなシェルを確認するためのさまざまな方法を探索します。具体的には、echo $SHELL コマンドを使用して現在のセッションのシェルを表示し、/etc/passwd ファイルを調べてユーザーのデフォルトのログインシェルを確認し、ps コマンドで実行中のプロセスを調べてシェルプロセスを特定します。
これらの手順を完了することで、シェル環境の特定と理解に関する実践的なスキルを身につけます。これは、Linux での効果的なコマンドライン操作とスクリプト作成に不可欠な基礎知識です。
echo $SHELL で現在のシェルを確認する
このステップでは、ターミナルで現在使用しているシェルを特定する方法を学びます。シェルは、コマンドを処理するコマンドラインインタープリターです。さまざまなシェルには異なる機能と構文がありますが、多くの基本的なコマンドはどのシェルでも同じように動作します。
LabEx 環境では、デフォルトのシェルとして zsh が使用されています。これは、$SHELL 環境変数の値を確認することで検証できます。環境変数は、コンピュータ上のプロセスの動作に影響を与える動的な値です。$SHELL 変数には、ユーザーのデフォルトのシェルへのパスが格納されています。
$SHELL 変数の値を表示するには、echo コマンドの後にドルル記号 ($) を付けた変数名を入力します。
ターミナルに以下のコマンドを入力し、Enter キーを押します。
echo $SHELL
現在のシェルが zsh であることを示す、次のような出力が表示されるはずです。
/usr/bin/zsh
これにより、ターミナルが現在 zsh シェルを実行していることが確認されます。これは、LabEx 環境のデフォルト設定です。使用しているシェルを理解することは、Linux の学習を進める上で重要です。なぜなら、一部の高度な機能やスクリプトは特定のシェルに固有のものである場合があるからです。
続ける をクリックして次のステップに進みます。
/etc/passwd でユーザーのシェルを確認する
前のステップでは、echo $SHELL を使用して現在使用しているシェルを確認しました。これは現在のターミナルセッションで起動されたシェルです。ただし、システムは各ユーザーの デフォルト のログインシェルを設定ファイルに記録しています。
この設定ファイルは /etc/passwd です。このファイルには、システム上のすべてのユーザーに関する情報が含まれています。/etc/passwd の各行はユーザーアカウントを表し、コロン (:) で区切られたフィールドに分割されています。各行の最後のフィールドは、ユーザーのデフォルトのログインシェルを指定しています。
/etc/passwd の内容を表示するには、cat コマンドを使用できます。labex ユーザーの行のみに関心があるので、cat と grep コマンドを組み合わせて出力をフィルタリングすることができます。grep は、ファイル内のテキストパターンを検索するための強力なツールです。
ターミナルに以下のコマンドを入力し、Enter キーを押します。
cat /etc/passwd | grep labex
このコマンドを分解してみましょう。
cat /etc/passwd: このコマンドは/etc/passwdファイルの内容を読み取り、標準出力に出力します。|: これはパイプです。左側のコマンド (cat /etc/passwd) の出力を受け取り、右側のコマンド (grep labex) の入力として送ります。grep labex: このコマンドは、受け取った入力から "labex" という文字列を含む行を検索し、それらの行を出力します。
次のような 1 行の出力が表示されるはずです。
labex:x:5000:5000:LabEx user,,,:/home/labex:/usr/bin/zsh
この行には、コロンで区切られた labex ユーザーに関するいくつかの情報が含まれています。フィールドは(順番に)次のとおりです。
- ユーザー名 (
labex) - パスワード(
xで表され、実際のパスワードハッシュはセキュリティ上の理由で別の場所に保存されています) - ユーザー ID (UID) (
5000) - グループ ID (GID) (
5000) - ユーザー情報 (GECOS フィールド) (
LabEx user,,,) - ホームディレクトリ (
/home/labex) - デフォルトのログインシェル (
/usr/bin/zsh)
最後のフィールド /usr/bin/zsh は、labex ユーザーのデフォルトのログインシェルが実際に zsh であることを確認しており、echo $SHELL で見た結果と一致しています。
続ける をクリックして次に進みます。
ps でシェルプロセスを調査する
前のステップでは、echo $SHELL を使って現在のシェルを特定し、/etc/passwd でデフォルトのログインシェルを確認しました。次に、システム上で実行中のプロセスを見て、シェルプロセス自体を確認しましょう。
Linux では、実行中のすべてのプログラムがプロセスです。ps コマンド("process status" の略)は、現在実行中のプロセスに関する情報を表示するために使用されます。
現在のターミナルセッションに関連するプロセスを表示するには、ps コマンドに -f オプションを付けて使用します。このオプションは、完全な形式のリストを提供します。
ターミナルに以下のコマンドを入力し、Enter キーを押します。
ps -f
次のような出力が表示されるはずです。
UID PID PPID C STIME TTY TIME CMD
labex XXXX XXXX 0 HH:MM pts/0 00:00:00 zsh
labex YYYY XXXX 0 HH:MM pts/0 00:00:00 ps -f
各列を見てみましょう。
UID: プロセスの所有者のユーザー ID (labex)。PID: プロセス ID。各プロセスに固有の番号です。PPID: 親プロセス ID。これは、このプロセスを起動したプロセスの PID です。C: CPU 使用率。STIME: プロセスが開始された時間。TTY: プロセスに関連付けられたターミナル (pts/0は、使用しているような擬似ターミナルを示します)。TIME: プロセスが使用した累積 CPU 時間。CMD: プロセスを起動したコマンド。
出力では、CMD が zsh の行があるはずです。この行は、現在のターミナルセッションを実行している zsh シェルプロセスを表しています。また、ps -f コマンド自体の行も表示されます。なぜなら、このコマンドを実行するときにも実行中のプロセスとなるからです。
このステップでは、ps を使って実行中のプロセスを調べ、シェルがシステム上でプロセスとして実行されていることを確認する方法を学びました。
続ける をクリックしてこの実験を完了します。
まとめ
この実験では、Linux で現在使用しているシェルを確認する方法を学びました。まず、echo $SHELL コマンドを使用して、現在のターミナルセッションで実行されているシェルのパスを表示しました。これにより、LabEx 環境ではデフォルトで zsh が使用されていることがわかりました。
次に、システムユーザーに関する情報(デフォルトのログインシェルを含む)を格納している /etc/passwd ファイルを調べました。このファイル内の自分のユーザーエントリの最後のフィールドを調べることで、ログイン時に自分のアカウントに割り当てられているシェルを確認することができます。これらの方法は、現在のセッションで使用されているシェル、またはユーザーのデフォルトのシェルを判断するための異なる方法を提供します。



