chshはログイン時のシェルを変更するコマンドだ。
このページではログイン時のシェルを変更する方法を解説する。
目次
chshコマンドの基本
コマンドの基本動作
使い方は、次のとおりだ。
$ chsh ユーザー
testのログイン時のシェルを変更するが現在の状況を確認しておこう。
/etc/passwdファイルでユーザーtest詳細情報を確認する。
$ grep test /etc/passwd
ユーザーtestのログインシェルは/bin/shだ。
実際にユーザーtestでログインしてみる。
$ su test
現在、ユーザーtestでログインすると、このようなログインプロンプトとなっている。
このログインシェルは/bin/shのログインプロンプトはこのログインプロンプトなのだ。
ここで一旦ユーザーtestをログアウトする。
$ exit
ユーザーtestをログアウトした。
では、実際にシェルを変更する。
testのログイン時のシェルを変更する場合は、次のコマンドだ。
$ chsh test
変更するシェルの入力が要求される。
testのログイン時のシェルが変更できた。
/etc/passwdファイルのユーザーtest詳細情報を確認し、ログインシェルが指定したものになっているか確認する。
$ grep test /etc/passwd
ユーザーtestのログインシェルが/bin/bashに変更になっている。
実際にユーザーtestでログインしてみる。
$ su test
ユーザーtestの、ログインプロンプトも変更になっている。
ユーザー名を指定しない場合は、現在ログインしているユーザーのシェルを変更する。
ユーザーvagrantでログイン中にchshコマンドのコマンド名のみを指定すると、シェルを変更するユーザーはvagrantとなる。
現在のログインしているユーザーvagrantのシェルを変更する場合は、次のコマンドだ。
$ chsh
ユーザーvagrantのパスワードが要求される。
変更するシェルの入力が要求される。
現在のログインしているユーザーvagrantのシェルが変更できた。
/etc/passwdファイルでユーザーvagrant詳細情報を確認し、ログインシェルが指定したものになっているか確認する。
$ grep vagrant /etc/passwd
ユーザーvagrantのログインシェルが/bin/shに変更になっている。
この時点ではシェルは変更になっていない。
再度ユーザーvagrantでログインしてみる。
$ su vagrant
ユーザーvagrantの、ログインプロンプトも変更になっている。
chshコマンドのオプションたち
オプションの一覧
後から詳細をご紹介するが、まずは一覧で見てみよう。
オプション -s(オプション--shell)
シェルを指定する
-sオプション(--shellオプション):シェルを指定する
シェルを指定する書式は次のとおりだ。
$ chsh -s シェル ユーザー
testのログイン時のシェルを/bin/shに指定して変更する場合は、次のコマンドだ。
$ chsh -s /bin/sh test
testのログイン時のシェルを/bin/shに指定し変更した。シェルの指定をする要求はない。
chsh関連コマンド
最後にchshコマンドに関連して、基本的なログイン時のシェルを変更するコマンドも紹介しておく
usermodコマンド
ユーザー情報を変更する。
まとめ
chshコマンドは、usermodコマンドの-sオプションと同じ動作だ。
chshコマンドは(Change Shell)の略なので暗記してもよいだろう。
ユーザー名を指定しないで、ログイン中のユーザーのシェルを変更する場合、パスワードが要求される。