ログインシェルを変更する方法

作業環境

手順

  • システム環境設定 >> ユーザとグループを開く。

  • 左下の鍵アイコンをクリックして、ロックを解除する。

  • ユーザを選択して二本指タップして、詳細オプションを開く。
    • 二本指タップ = 右クリック = control-クリック

  • ログインシェルを選択する。リストにない場合はパスを手入力する。OKボタンをクリックして完了。


  • ターミナルを再起動して、$SHELLが指定したパスになっていればOK。
$ echo $SHELL
/usr/local/bin/bash

あるいは...

$ dscl localhost -read Local/Default/Users/$USER UserShell
UserShell: /usr/local/bin/bash

コマンド操作不要

上記のようにシステム環境設定から設定すれば、以下のコマンドラインでの操作は不要である。

  • /etc/shellsに新しいシェルのパスを追加して、
  • chpassコマンドでそのシェルパスを指定とか。
$ sudo sh -c "echo /usr/local/bin/bash >> /etc/shells"
$ chpass -s /usr/local/bin/bash

ターミナル起動時に開くシェル

  • ターミナルでタブやウィンドウを開く時に起動するシェルを設定できる。
    • 通常はログインシェルが起動する設定になっているのだけど、
    • ターミナル >> 環境設定 >> 起動 >> 開くシェル: コマンド(完全パス)を設定しておくことで、ログインシェル以外も指定できる。


但し、ログインシェルと、ターミナルでコマンド指定して起動したシェルは、若干の違いがある。

  • sshでリモートログインした時は、必ずログインシェルが起動する。
  • suでユーザーを切り替えた時も、必ずログインシェルが起動する。


  • 上記設定でターミナルのタブやウィンドウを閉じる時、
    • ログインシェルは、起動していても確認なしで閉じる設定になっている。
    • ターミナルが開くシェルは、確認なしで閉じる設定に追加しておかないと、閉じる前に確認される。