サイト名変更・お引越しのお知らせ

【Linux/Unixコマンド】現在のシェル確認・一覧・変更などのシェルに関するコマンドを解説

シェルに関するコマンドを使えるようになるために、チュートリアル形式で解説していきます。

すぐに使いたい方はまとめを確認ください!

この記事でわかること
  • シェルに関する基本的なコマンドを使えるようになる

モグモグさん

実際に手を動かしながらやってみると理解が深まりますので

やってみてください。

実行

上記のマークの箇所は実際にコマンドを入力しましょう。

Linux(CentOS)環境を準備

まずは手元で試すための環境を作成します。

モグモグさん

環境がすでにある方や手元で試す必要がない方は、スキップしてください。

こちらの記事を参考に、CentOSの環境を作成しましょう。

DockerでCentOSの環境を構築する方法を解説

Bashを起動

下記コマンドを実行し、Bashを起動しましょう。

$ docker run -it --rm centos /bin/bash

モグモグさん

これで準備完了です!

exitと入力すれば、bashから抜けます。

現在使っているシェルを表示

まずは、現在使っているシェルを確認するためのコマンドを解説します。

echo $0

実行

$ echo $0

/bin/bash

$0には現在使っているシェルが入っているので、それを出力することができます。

echo $SHELL

実行

$ echo $SHELL

/bin/bash

SHELL という環境変数にも現在使っているシェルが入ってくるので、このコマンドでも確認可能です。

ただし、環境変数を設定しないシェルもあるので、echo $0 を使うことがおすすめです。

ps -p $$

実行

$ ps -p $$

PID TTY          TIME CMD
    1 pts/0    00:00:00 bash

このコマンドでは、シェルのプロセスの情報を表示します。

シェルの一覧を表示

続いて利用可能なシェルの一覧を確認するためのコマンドを紹介します。

cat /etc/shells

実行

$ cat /etc/shells

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash

/etc/shells の中に利用可能なシェルがあるので、

cat で中身を出力し確認することができます。

デフォルトシェルを変更

続いてデフォルトシェルを変更するコマンドを解説します。

今回は、zshをインストールしてデフォルトのシェルを変更してみましょう。

Dockerで立てたcetosにはいくつかコマンドが存在していないので、まずは必要なパッケージをインストールします。

モグモグさん

すでにchshコマンドが使えたり、zshを使える方は不要です。

実行

$ yum -y install util-linux-user ncurses-devel wget gcc make

次にzshをインストールしていきます。

メモ

最新のバージョンは公式サイトで確認できるので、必要があれば書き換えてください。

モグモグさん

下のコマンドは覚える必要もないので、コピペでOK!

実行

cd /usr/local/src && \
wget https://sourceforge.net/projects/zsh/files/zsh/5.8/zsh-5.8.tar.xz/download -O zsh-5.8.tar.xz && \
tar xvf zsh-5.8.tar.xz && \
cd zsh-5.8 && \
./configure --enable-multibyte && \
make && make install && \
echo /usr/local/bin/zsh >> /etc/shells

ダウンロードできているか確認しましょう!

実行

$ cat /etc/shells

/bin/sh
/bin/bash
/usr/bin/sh
/usr/bin/bash
/usr/local/bin/zsh // この記述があればOK!

一時的な切り替え

ちなみに、デフォルトのシェルではなく一時的に別のシェルを使いたい場合は、etc/shells にあるシェルを実行すれば切り替わります。

実行

$ /usr/local/bin/zsh

$ echo $0  

/usr/local/bin/zsh

もしくは、シェル名(PATHが通っていれば。)

$ bash
$ zsh

chsh -s

本題に戻ります。

zshをダウンロードしたことで準備が整ったので、chsh -s コマンドを使ってデフォルトのシェルを変更しましょう。

実行

$ chsh -s /usr/local/bin/zsh

-sオプションでシェルを指定できます。

あとは、ログアウトしてログインしなおせば切り替わります。

ただし、今回の記事ではDockerを使ってContainerを立てているだけなので別のやり方で確認します。

MacやWindowsのローカル環境を使っている方は、ここまでで切り替わっていると思いますので、スキップして大丈夫です。

確認

まずは、別のターミナルのウィンドウを開いてホストマシーンからCONTAINER IDを確認しましょう。

実行

$ docker ps

ddba74a05003   centos    "/bin/bash"   14 minutes ago   Up 14 minutes            

次にzshにそのContainerに入ります。

ここで直接、zshを起動します。

実行

$ docker exec -it ddba74a05003 /usr/local/bin/zsh

最後に確認コマンドを実行しましょう。

起動しているので当然ですが、zshが使われていることが確認できます。

実行

$ echo $0

/usr/local/bin/zsh

まとめ

モグモグさん

お疲れ様でした!

本記事で紹介しているコマンドは基本的なコマンドですが、シェルを操作する場合に役立ちます。

最後に紹介したコマンドをまとめておきます。

シェルに関する基本コマンドまとめ

現在使っているシェルを表示

  • echo $0
  • echo $SHELL
  • ps -p $$

シェル一覧

  • cat /etc/shells

デフォルトシェル切り替え

  • chsh -s {切り替えたいシェル名}