1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

ログインシェルの設定をミスり、ターミナルソフトが入力を受け付けなくなった話

Last updated at Posted at 2022-06-17

はじめに

自分がログインシェルの設定をミスったことにより、ターミナルソフトが入力を受け付けなくなったときの話です。
ターミナルソフトは(誤った)設定に従い正常の動作をしたまでで、バグがあったわけではありません。

ただ正直ものすごく焦りました。

現象

  • iTerm2

以下のような警告が出て、OKを押すと即終了する状態になりました。メニューバーは触れるものの、コマンドを打つことはできません。

A session ended very soon after starting. Check that the command in profile “Default” is correct.

スクリーンショット 2022-06-16 1.13.54.png

  • Macにデフォルトで入ってるターミナル

「プロセスが完了しました」という表記が出て、メニューバーは触れるものの、コマンドを打つことはできません。

スクリーンショット 2022-06-16 1.14.05.png

背景と原因

先日、新しいMacBookProを購入したので環境を整えておりました。
自分はログインシェルに zsh を使用しております。ただバージョン管理の点などを考慮し、Mac にデフォルトで入っている zsh ではなく、 Homebrew からインストールした zsh を使うようにしております。

Homebrew からインストールした zsh を使うには /etc/shells にパスを追記し chsh コマンドで指定する必要があります。

Homebrewでインストールしたzshのパス

% brew --prefix zsh
/opt/homebrew/bin/zsh

ただそこで /etc/shells に追記するパスを以下のように間違えてしまいました。

# List of acceptable shells for chpass(1).
# Ftpd will not allow users to connect who are not using
# one of these shells.

/bin/bash
/bin/csh
/bin/dash
/bin/ksh
/bin/sh
/bin/tcsh
/bin/zsh

# このようにパスを追記するはずが...
/opt/homebrew/bin/zsh

# 間違ってこのように追記してしまいました。
/opt/homebrew/opt/zsh

間違えた言い訳としては、この作業の前に git も同じく Homebrew からインストールしたものに変更をしていて、 git のパスがそのディレクトリだったためです。

% brew --prefix git
/opt/homebrew/opt/git

zsh のパスもきちんと確認していたのですが git のパスと同じと見間違い、さらに git のパスはすでにクリップボードにコペーしていたため git のところを zsh に書き換えるだけで流用できると思い込んでいました。

また chsh コマンドでパスを指定する際にも、自分はまだ間違いに気づいてなかったので、しっかりと間違えたパスを指定してしまいました。
ここで警告は出てたのですが、「デフォルトで入っているシェルではないよ」という意味だと思ったので気にしてませんでした。

% chsh -s /opt/homebrew/opt/zsh
Changing shell for hoge.
Password for hoge:
chsh: WARNING: shell '/opt/homebrew/opt/zsh' is not a regular file

そして自分はログインシェルの設定ができたと思い込んでいるため、ターミナルソフトを再起動したところ、今回の現象が起きました。

直し方

ターミナルソフトには Permission denied とあったので、許可する必要があるのかと思いました。
ただターミナルソフトにコマンドを打つことはできません。ものすごく焦りました。

ググったところ以下の記事に辿り着き、 Mac デフォルトのターミナルから別のシェルを立ち上げられることを知りました。

記事に従い、メニューバーの「シェル」→「新規コマンド」を押すと、以下のような画面が出てきます。
そこに /bin/zsh と打ち込むと、 /bin/zsh を使ってターミナルを立ち上げることができました。歓喜。

スクリーンショット 2022-06-16 1.32.25.png

ターミナルが入力を受け付けるようになったので、 Homebrew の zsh の調査をしました。
とりあえず(正しいと思っている)パスを直接入力したところ確かに Permission denied と出ました。

% /opt/homebrew/opt/zsh
zsh: permission denied: /opt/homebrew/opt/zsh

そこでおかしいと思い、もう一度 zsh のパスを確かめたところ、自分がパスの間違いをしていることに気づきました。

そこからは /etc/shells を修正し、再度 chsh で設定し直しました。

これで直ると思いきや chsh: no changes made というレスポンスが返ってきました。

chsh -s /opt/homebrew/bin/zsh
Changing shell for hoge.
Password for hoge:
chsh: no changes made

ただ設定を見直しても今度は正しく設定されています。

またググったところ以下の記事に辿り着きました。

どうやらシステム設定のログインシェルには /opt/homebrew/opt/zsh と設定されておりました。
ちなみにここが変わらなかった理由は正確にはわかりません。(今回の現象を再現したときには自動で変わりました。)

スクリーンショット 2022-06-18 0.34.42.jpg

それを /opt/homebrew/bin/zsh と直しました。

そしてようやくターミナルソフトは通常通り動くようになり、ログインシェルは Homebrew からインストールした zsh に変更することができました。

まとめ

深夜に作業するときは、いろいろと気をつけたほうが良いことを学びました。新しいPCを早速壊したと思いとても焦りました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?