ターミナルを起動したときに実行するデフォルトシェルを変更する
ターミナルを実行したときに、起動するシェルは通常は /bin/bash
です。
このbash を変更したいと思います。(たとえばzsh や brew 版 bash など )
この記事で書くこと
- デフォルトシェルのきまりかた
- /etc/passwd
- mac OS の場合
- Directory サービス
- chshコマンド
- ターミナルのプロファイルでも変えられる
はじめに デフォルトシェルの決まり方。
デフォルトで起動するシェルの基本設定は、UNIX古典的には /etc/passwd で決まります。
/etc/passwd
で決定される以外に、/etc/passwd を外部サービスに委託するディレクトリサービスを使う場合があります。
/etc/passwd でのログインシェルの設定
passwd ファイルを見ると、次のようになってます。
takuya:x:1000:1000:takuya,,,:/home/takuya:/bin/bash
これは左から次のように見ます。
ユーザ名 | 不使用 | UID | グループID | その他 | ホーム | ログインシェル |
---|---|---|---|---|---|---|
takuya | x | 1000 | 1000 | takuya,,, | /home/takuya | /bin/bash |
/etc/passwd のログインシェルを変更する
昔からの /etc/passwd
の該当カラムを書き換えることで、ログイン時に起動するシェルを指定できる。
活用例
:再起動ユーザ・シャットダウンユーザ 昔のUNIXにはシャットダウン・リブート専用のユーザを作ってオペレーターがログインせずにシャットダウンできるようにしていました。
shutdown:1001:1001:shutdown,,,:/:/usr/local/sbin/reboot
最近ではいたずら防止のため作らないらしい。
Mac の場合
mac OS X の場合は、/etc/passwd
には一般ユーザーは存在しない。その代わりに、ディレクトリ・サービスを使っている。
ディレクトリ・サービスを起動する。
ディレクトリ・サービスの管理にはアプリが用意されている。
open -a '/System/Library/CoreServices/Applications/Directory Utility.app'
mac osx の場合、 /etc/passwd
の代わりに ディレクトリサービスの該当エントリを書き換えればできる。
chsh コマンドでログインシェルを書き換える。
直接ファイルやディレクトリサービスを書き換えてしまうと記述ミスで詰むことがある。
なので、通常は専用のコマンドを使うことで、書き換える。
chshで設定を書き換える。
chsh を使うと比較的安全に設定を更新することができる。エディタが起動して書き換える
takuya@Desktop$ chsh Changing shell for takuya. Password for takuya:
または
chsh -s /usr/local/bin/bash
chshで指定できるshellの指定方法
どんなshell でも指定できるわけでもなくchsh で使えるものは制限できる。 指定外のshell を指定するとエラーになるので、事前に登録しておく必要がある。
sudo -e /etc/shells
ここにつかいたいShellを追記できる。
Mac OSX のGUIの場合
意外に、忘れがちなのが、ユーザー設定からの変更。右クリックという解り難さが、つい忘れがち。
ユーザー設定画面→ ロックを解除 → ユーザー名を右クリック
右クリックして設定画面を開くとシェル設定をすることができる
その他の方法:ターミナル・エミュレータで指定する
デフォルトシェルの変更はちょっとめんどくさいし、ぱぱっと一時的に試したいときや、一時的に切り替えたいときに不便なので。ターミナル・エミュレータの設定で対応する。
MacOSXに限れば、Terminal.app iTerm.app は最初に起動するシェルを指定することができる。
Linux の場合は gnome-terminal で同じことができる。 xfce4-terminal はできなかった。
まとめ
ログインシェルの決まり方と変更方法
- ユーザーの管理方法による違い
- /etc/passwd を使う
- /etc/passwd の該当カラムを変更する
- Directory Serviceの場合
- ユーザーを検索
- ユーザーのエントリを変更
- chsh を使う
- /etc/shells の一覧から選ぶ
- OSのユーザー管理GUIを使う
- OSX の場合 preference → ユーザー → ロック解除 → 右クリック
- ターミナル・エミュレータを使う
- Profiles の設定を使う。
以上です。