Linuxでデフォルトシェルを変更する方法

Linuxでデフォルトシェルを変更する機能画像

シェルは、Linuxシステムと通信するためのインターフェースです。コマンドを入力してコンピュータを制御することができます。すべてのLinuxユーザーにはデフォルトシェルがあり、ほとんどの場合はbashです。他にもZsh、ksh、rc、fishなど多くのオプションがあります。ここでは、Linuxでデフォルトシェルを変更するさまざまな方法を紹介します。

目次

  • 現在のシェル名を見つける方法
  • インストールされているシェルの一覧
  • Chshを使用してLinuxでデフォルトシェルを変更する
  • 別のユーザーのシェルを変更する
  • Usermodを使用してLinuxでデフォルトシェルを変更する
  • Linuxでデフォルトシェルを手動で変更する
  • デフォルトシェルの代替

現在のシェル名を見つける方法

デフォルトシェルを変更する前に、現在使用しているシェルを知っておくことが重要です。次のechoコマンドを使用して、システム環境変数を確認することでこれを見つけることができます:

echo $SHELL

このコマンドは、現在のシェルのパス(例:/bin/bash/bin/zsh)を出力します。

/etc/passwdファイルには重要なユーザーアカウント情報が含まれています。このファイルを使用して現在のシェルを見つけることもできます:

grep "^${USER}" /etc/passwd

また、psコマンドを使用してプロセスID(PID)を確認することで、現在のシェルに関する詳細情報を見つけることもできます:

ps -p $$

この出力は、現在のシェルがbashであることを確認します。

インストールされているシェルの一覧

現在のシェルがわかったので、システムにどのような他のオプションがあるかを確認したいかもしれません。システムにインストールされているすべてのシェルを見つけるには、/etc/shellsファイルを確認する必要があります。

catコマンドを使用して、システムに利用可能なすべてのシェルのリストを表示しましょう:

cat /etc/shells

Linux Ubuntuシステムにインストールされているすべてのシェルのリスト

これにより、切り替え可能なシェルのアイデアが得られます。また、パッケージマネージャを使用して新しいシェルをインストールし、それをデフォルトシェルとして使用することもできます。

さらに、デフォルトシェルを変更せずに、これらのリストされたシェルを一時的に試すこともできます。新しいシェルセッションを開始するには、ターミナルにシェルの名前を入力するだけです。

たとえば、Zshシェルを試すには、次のように入力します:

zsh

これにより、恒久的な切り替えを決定する前に、さまざまなシェルを試すことができます。

Chshを使用してLinuxでデフォルトシェルを変更する

Linuxでデフォルトシェルを変更する最も簡単な方法は、chshコマンドを使用することです。chshコマンドは「シェルを変更する」を意味し、-sオプションとシェルのパスを続けて使用します。

シェルのパスがわからない場合は、ターミナルでtype zshを実行して、目的のパスを取得します。シェルのパスを取得したら、特定のシェルにデフォルトシェルを変更できます。

たとえば、Zshに切り替えたい場合は、Zshシェルのパスを使用してchsh -sを実行する必要があります:

chsh -s /bin/zsh

パスワードの入力を求められます。入力後、変更を確認するためにログアウトして再度ログインする必要があります。

chshコマンドは、デフォルトのログインシェルを永久に変更します。変更を確認するには、次のコマンドを実行します:

grep "^${USER}" /etc/passwd

別のユーザーのシェルを変更する

root権限があり、sudoコマンドを使用できる場合は、他のユーザーアカウントのデフォルトシェルを変更できます。これは、他のユーザーにfishなどの異なるシェル環境を提供したい場合に便利です。

同じchshコマンドの構文を使用し、変更したいアカウントのユーザー名を指定する追加のパラメータを追加できます。

たとえば、別のユーザーのシェルをZshに変更するには、ターミナルで次のコマンドを実行します:

sudo chsh -s /bin/zsh user

このコマンドは、特定のユーザーのデフォルトシェルを/bin/zshに変更するようシステムに指示します。

Usermodを使用してLinuxでデフォルトシェルを変更する

シェルを切り替える別の方法は、usermodコマンドを使用することです。このコマンドはユーザーアカウントを変更するために使用され、デフォルトシェルを変更するためにも使用できます。

usermodを使用してデフォルトシェルを変更するには、root権限でターミナルを開き、次のコマンドを入力します:

sudo usermod -s /path/to/new/shell your_username

ここで、/path/to/new/shellを希望のシェルパスに、your_usernameを実際のユーザー名に置き換える必要があります。

たとえば、デフォルトのbashシェルをzshに変更するには:

sudo usermod -s /bin/zsh user

以前と同様に、これらの変更を適用するには、Linuxシステムからログアウトして再度ログインします。

新しいシェルへの切り替えを確認するには、次のコマンドでユーザーアカウントの詳細を確認します:

getent passwd user

Linuxでデフォルトシェルを手動で変更する

/etc/passwdファイルを編集することで、デフォルトシェルを手動で変更することもできます。これは、デフォルトシェルパスを新しいシェルに置き換えることで行います。ただし、この手法は正しく行わないと問題を引き起こす可能性があるため、注意が必要です。

シェルを手動で変更するには、root権限でお気に入りのテキストエディタ(nanoやvimなど)を使用して/etc/passwdファイルを開きます:

sudo nano /etc/passwd

ファイル内でユーザー名を探します。ユーザーのエントリの最後のフィールドに現在のシェルが表示されます。これを希望のシェルのパスに変更します。

たとえば、デフォルトの/bin/bashシェルパスを/bin/zshに変更するには:

/etc/passwdテキストエディタでbashシェルをzshシェルに変更する

最後に、Ctrl + Sを押してファイルを保存し、Ctrl + Xでエディタを終了します。再度ログアウトしてログインし、変更を適用します。

デフォルトシェルの代替

Bashは優れた強力なスクリプトツールですが、コマンドライン体験を向上させ、より良いカスタマイズオプションを提供する他のシェルもいくつかあります:

Fish

fishはFriendly Interactive Shellを指します。このシェルは直感的なコマンドラインインターフェースを持ち、構文のハイライト、自動提案、タブ補完があり、コマンドの入力が非常に簡単です。

fishには、ウェブベースの設定ツールも含まれています。これにより、設定を調整したり、設定ファイルを掘り下げることなく関数を作成したりできます。

Zsh

Zsh、またはZシェルは、非常にカスタマイズ可能で、多くの便利な機能があります。その最良の機能のいくつかには、グロビング、自動修正、カスタム設定、高度なタブ補完が含まれます。

Zshはプラグインやテーマもサポートしており、シェル体験を好みに合わせて調整するのが簡単です。Zshを使用すると、Gitブランチを表示したり、単純なパターンで複雑なファイル操作を行ったりできます。

Ksh

ksh、またはKornShellは、CシェルとBourneシェルの最良の機能を取り入れており、高度なスクリプト機能を持つ強力で使いやすいシェルです。kshの機能には、組み込みの数学関数、コマンドライン編集、シェルスクリプト、拡張性が含まれます。

まとめ

Linuxでデフォルトシェルを変更することは、コマンドライン体験を向上させる簡単なプロセスです。パワーユーザーであれば、他の代替Linuxシェルをぜひ試してみてください。

画像クレジット:Lukas via Unsplash。すべてのスクリーンショットはHaroon Javedによるものです。