シェルに関するコマンドを使えるようになるために、チュートリアル形式で解説していきます。
すぐに使いたい方はまとめを確認ください!
- シェルに関する基本的なコマンドを使えるようになる
モグモグさん
実際に手を動かしながらやってみると理解が深まりますので
やってみてください。
実行
上記のマークの箇所は実際にコマンドを入力しましょう。
Linux(CentOS)環境を準備
まずは手元で試すための環境を作成します。
モグモグさん
環境がすでにある方や手元で試す必要がない方は、スキップしてください。
こちらの記事を参考に、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 {切り替えたいシェル名}