それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

ログインシェルを変更するーデフォルトシェルのきまりかた( chsh/ 設定/ shells )

ターミナルを起動したときに実行するデフォルトシェルを変更する

ターミナルを実行したときに、起動するシェルは通常は /bin/bash です。

このbash を変更したいと思います。(たとえばzshbrewbash など )

この記事で書くこと

  • デフォルトシェルのきまりかた
  • /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 には一般ユーザーは存在しない。その代わりに、ディレクトリ・サービスを使っている。

ディレクトリ・サービスとは、NIS/LDAPと同類ですね

ディレクトリ・サービスを起動する。

ディレクトリ・サービスの管理にはアプリが用意されている。

open -a '/System/Library/CoreServices/Applications/Directory Utility.app'

mac osx の場合、 /etc/passwd の代わりに ディレクトリサービスの該当エントリを書き換えればできる。

f:id:takuya_1st:20161128021226j:plain:w300

Linux の場合、LDAP管理ツールなどで変更する。

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の場合

意外に、忘れがちなのが、ユーザー設定からの変更。右クリックという解り難さが、つい忘れがち。

ユーザー設定画面→ ロックを解除 → ユーザー名を右クリック

f:id:takuya_1st:20161128022544j:plain:w300

右クリックして設定画面を開くとシェル設定をすることができる

その他の方法:ターミナル・エミュレータで指定する

デフォルトシェルの変更はちょっとめんどくさいし、ぱぱっと一時的に試したいときや、一時的に切り替えたいときに不便なので。ターミナル・エミュレータの設定で対応する。

MacOSXに限れば、Terminal.app iTerm.app は最初に起動するシェルを指定することができる。

f:id:takuya_1st:20161128023304j:plain:w300

Linux の場合は gnome-terminal で同じことができる。 xfce4-terminal はできなかった。

まとめ

ログインシェルの決まり方と変更方法

  • ユーザーの管理方法による違い
  • /etc/passwd を使う
  • /etc/passwd の該当カラムを変更する
  • Directory Serviceの場合
  • ユーザーを検索
  • ユーザーのエントリを変更
  • chsh を使う
    • /etc/shells の一覧から選ぶ
  • OSのユーザー管理GUIを使う
    • OSX の場合 preference → ユーザー → ロック解除 → 右クリック
  • ターミナル・エミュレータを使う
    • Profiles の設定を使う。

以上です。

参考資料

https://wiki.debian.org/Console

ユーザーにシャットダウンを許可 - ArchWiki

http://d.hatena.ne.jp/kappamia/20091201/1259674041