Linuxでユーザーのデフォルトシェルを変更する3つの方法

Linuxオペレーティングシステムのシェル、またはコマンドラインインターフェースは、システムとの強力な対話方法をユーザーに提供する重要なコンポーネントです。

Linuxシステム上の各ユーザーは、システムとの対話時に使用するコマンドインタプリタを決定するデフォルトのシェルに関連付けられています。

ユーザーのデフォルトのシェルを変更することは、個人の好みや異なるシェルが提供する特定の機能の必要性など、さまざまな理由で必要になる場合があります。

この記事では、Linuxでユーザーのデフォルトのシェルを変更するプロセスについて探っていきます。シェルはコマンドを受け入れて解釈するプログラムであり、いくつかのオープンソースのシェルbashshkshzshfishなど)がLinuxで利用可能です。

Linux Bashシェル

Bash/bin/bash)は、ほとんどの場合、すべてのLinuxディストリビューションで人気のあるシェルであり、通常はユーザーアカウントのデフォルトのシェルです。

Linuxでユーザーのシェルを変更する理由には、以下のようなものがあります:

  • Linuxで通常のユーザーログインをブロックまたは無効にするには、nologinシェルを使用します。
  • ユーザーコマンドがシェルに送信される前に、シェルラッパースクリプトまたはプログラムを使用してログインユーザーのコマンドを記録します。ここでは、ユーザーのログインシェルとしてシェルラッパーを指定します。
  • ユーザーの要求(特定のシェルを使用したい場合、特に管理権限を持つ場合)に応じるために。

ユーザーアカウントをuseraddまたはadduserユーティリティを使用して作成する際に、--shellフラグを使用して、対応する構成ファイルで指定されたもの以外のユーザーのログインシェルの名前を指定できます。

A login shell can be accessed from a text-based interface or via an SSH from a remote Linux machine. However, if you log in via a graphical user interface (GUI), you can access the shell from terminal emulators like xterm, konsole, and many more.

Linuxシステムで利用可能なシェルの一覧を表示します。

Linuxでは、/etc/shellsファイルがシステムにインストールされた有効なログインシェルの一覧を保存するために一般的に使用されます。このファイルは、chshなどのコマンドを使用してユーザーがデフォルトのシェルとして設定できるシェルを特定するのに役立ちます。

Linuxシステムで利用可能なシェルの一覧を表示するには、次のコマンドを使用できます。

cat /etc/shells

サンプル出力:

# /etc/shells: valid login shells
/bin/sh
/bin/bash
/usr/bin/bash
/bin/rbash
/usr/bin/rbash
/bin/dash
/usr/bin/dash
/usr/bin/tmux
/usr/bin/screen

さらに進む前に、次のことに注意してください:

  • A user can change their own shell to anything: which, however, must be listed in the /etc/shells file.
  • /etc/shellsファイルにリストされていないシェルは、rootのみ実行できます。
  • アカウントに制限されたログインシェルがある場合、そのユーザーのシェルを変更できるのはrootのみです。

Linuxで現在のシェルを見つける

デフォルトのユーザーシェルを変更する前に、現在のシェルを確認することが重要です。これは、ログインしているユーザーの現在のシェルを表示するためにechoコマンドを実行することで行われます。

echo $SHELL

/bin/bash

出力は、ユーザーが現在Bash (/bin/bash) シェルを使用していることを示しています。

Linuxでのデフォルトのシェルの変更

次に、Linuxのデフォルトのユーザーシェルを変更する3つの異なる方法について説明します。

1. usermodユーティリティ

ユーザーのアカウントの詳細を変更するためにusermodコマンドが使用されます。これは、/etc/passwdファイルに保存されています。ユーザーのログインシェルを変更するために、-sまたは--shellオプションが使用されます。

この例では、まずユーザーtecmintのアカウント情報を確認して、彼のデフォルトのログインシェルを見てから、ログインシェルを/bin/shから/bin/bashに変更します。

grep tecmint /etc/passwd
sudo usermod --shell /bin/bash tecmint
grep tecmint /etc/passwd
Change User Shell using Usermod

これで、ユーザー“tecmint”のデフォルトのシェルがbashに変更されます。

2. chshユーティリティ

ユーザーのデフォルトのログインシェルをインタラクティブに変更するためにchshコマンドが使用されます。これは、-sまたは–shellオプションを使用して行われます。

grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd
Change User Shell Using chsh

ユーザーが設定したシェルへの実際のパスで「/bin/sh」を置き換えてください。たとえば、shをシェルに設定する場合、「/bin/sh」を使用します。

デフォルトのシェルへの変更は、通常、次回のログイン時に有効になることに注意してください。

上記の2つの方法は、すべて/etc/passwdファイルで指定されたシェルを変更します。これは、以下の3番目の方法で手動で編集することもできます。

3. /etc/passwdファイルでユーザーシェルを変更する

この方法では、/etc/passwdファイルをお気に入りのコマンドラインテキストエディターで開き、特定のユーザーのシェルを変更してください。

sudo vi /etc/passwd
OR
sudo nano /etc/passwd
Change User Shell in Passwd File

変更したいユーザーに対応する行を見つけます。たとえば、次のような行があるとします。

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/bash

最後のフィールド、/bin/bashは、デフォルトのシェル(この場合、Bash)を表します。

シェルフィールドの値を希望するシェルに変更するには、シェルへのパス(/bin/zsh)を指定してください。

tecmint:x:1000:1000:John Doe:/home/tecmint:/bin/zsh

編集が完了したら、ファイルを保存して閉じてください。

別のシェルをインストールする方法は?

他のソフトウェアパッケージと同様に、ZshやFishなどの人気のあるシェルは、リポジトリから簡単にインストールできます。

LinuxでのZshシェルのインストール

LinuxでZshをインストールするには、特定のLinuxディストリビューションに合わせた次の適切なコマンドを使用してください。

sudo apt install zsh         [On Debian, Ubuntu and Mint]
sudo yum install zsh         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/zsh  [On Gentoo Linux]
sudo apk add zsh             [On Alpine Linux]
sudo pacman -S zsh           [On Arch Linux]
sudo zypper install zsh      [On OpenSUSE]    

LinuxでFish Shellをインストールする

Linux上にZshをインストールするには、あなたの特定のLinuxディストリビューションに適した次のコマンドを使用してください。

sudo apt install fish         [On Debian, Ubuntu and Mint]
sudo yum install fish         [On RHEL/CentOS/Fedora and Rocky/AlmaLinux]
sudo emerge -a sys-apps/fish  [On Gentoo Linux]
sudo apk add fish             [On Alpine Linux]
sudo pacman -S fish           [On Arch Linux]
sudo zypper install fish      [On OpenSUSE]    

これらの関連トピックを読むことを忘れないでください:

この記事では、Linuxでユーザのシェルを変更するさまざまな方法を説明しました。私たちと共有したい考えがあれば、以下のコ�mentセクションをご利用ください。

Source:
https://www.tecmint.com/change-a-users-default-shell-in-linux/