Linuxオペレーティングシステムのシェル、またはコマンドラインインターフェースは、システムとの強力な対話方法をユーザーに提供する重要なコンポーネントです。
Linuxシステム上の各ユーザーは、システムとの対話時に使用するコマンドインタプリタを決定するデフォルトのシェルに関連付けられています。
ユーザーのデフォルトのシェルを変更することは、個人の好みや異なるシェルが提供する特定の機能の必要性など、さまざまな理由で必要になる場合があります。
この記事では、Linuxでユーザーのデフォルトのシェルを変更するプロセスについて探っていきます。シェルはコマンドを受け入れて解釈するプログラムであり、いくつかのオープンソースのシェル(bash、sh、ksh、zsh、fishなど)が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

これで、ユーザー“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で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/