Linux でデフォルトのユーザー シェルを変更する方法
シェル (コマンド ライン インターフェイス) は Linux オペレーティング システムの重要なコンポーネントであり、ユーザーにシステムと対話するための強力な方法を提供します。
Linux システム上の各ユーザーはデフォルトのシェルに関連付けられており、システムと対話するときにユーザーが使用するコマンド インタープリターが決定されます。
ユーザーのデフォルトのシェルの変更は、個人の好みや別のシェルが提供する特定の機能の必要性など、さまざまな理由で必要になる場合があります。
この記事では、Linux でユーザーのデフォルトのシェルを変更するプロセスについて説明します。シェルはコマンドを受け入れて解釈するプログラムです。 bash、sh、ksh、zsh、fish、などのオープンソース シェルがいくつかあります。 など、Linux で利用できるその他のあまり知られていないシェルが多数あります。
Linux Bash シェル
Bash (/bin/bash) は、すべてではないにしてもほとんどの Linux ディストリビューションで人気のあるシェルであり、通常はユーザー アカウントのデフォルトのシェルです。
Linux でユーザーのシェルを変更する理由は次のとおりです。
- nologin シェルを使用して Linux で通常のユーザー ログインをブロックまたは無効にするには。
- シェル ラッパー スクリプトまたはプログラムを使用して、実行のためにシェルに送信される前にユーザー コマンドをログに記録します。ここでは、シェル ラッパーをユーザーのログイン シェルとして指定します。
- ユーザーの要求 (特定のシェルを使用したい)、特に管理者権限を持つユーザーの要求を満たすため。
useradd または adduser ユーティリティを使用してユーザー アカウントを作成する場合、--shell
フラグを使用して、それぞれの構成ファイルで指定されているもの以外のユーザーのログイン シェルの名前を指定できます。
ログイン シェルには、テキストベースのインターフェイスから、またはリモート Linux マシンから SSH 経由でアクセスできます。ただし、グラフィカル ユーザー インターフェイス(GUI)経由でログインすると、xterm や konsole などのターミナル エミュレータからシェルにアクセスできます。
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
先に進む前に、次の点に注意してください。
- ユーザーは自分のシェルを任意のシェルに変更できますが、それは /etc/shells ファイルにリストされている必要があります。
- /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
これで、ユーザー「tecmint」のデフォルトのシェルがbashに変更されます。
2.chshユーティリティ
chsh コマンドは、図に示すように -s
または –shell オプションを使用して、ユーザーのデフォルトのログイン シェルを対話的に変更するために使用されます。
grep tecmint /etc/passwd
sudo chsh --shell /bin/sh tecmint
grep tecmint /etc/passwd
「/bin/sh」を、設定するシェルへの実際のパスに置き換えます。たとえば、シェルを sh に設定するには、「/bin/sh」を使用します。
デフォルトのシェルへの変更は、通常、次回のログイン時に有効になることに注意することが重要です。
上記の 2 つの方法はすべて、/etc/passwd ファイルで指定されたシェルを変更します。このファイルは、以下の 3 番目の方法と同様に手動で編集できます。
3. /etc/passwd ファイルのユーザーシェルを変更する
この方法では、お気に入りのコマンド ライン テキスト エディタを使用して /etc/passwd ファイルを開き、特定のユーザーのシェルを変更するだけです。
sudo vi /etc/passwd
OR
sudo nano /etc/passwd
デフォルトのシェルを変更するユーザーに対応する行を見つけます。たとえば、行が次のようになったとします。
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 にフィッシュ シェルをインストールする
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 でユーザーのシェルを変更するさまざまな方法について説明しました。ご意見がございましたら、以下のコメントセクションをご利用ください。