zshログイン時の終了ステータスが常に1になる

投稿者: Anonymous

まずzshに限った問題ではないかもしれませんが、当方ではそれを判断しかねるためzshということで話をさせていただきます。

コマンドが成功したか失敗したか表示させたいと思ったのですが、通常時は問題なく終了ステータスを返すもののログイン時に終了ステータスが0になりません。

この様な仕様なのかと思いましたが他の方のログインを確認しても終了ステータスは問題なく0になっているようです
http://shutosg.hatenadiary.com/entry/2016/02/17/235545

.zshrcや.zshenv、zprofileを空にした状態でも変わりませんし、source ~/.zshrcなどを行っても終了ステータスは0が返ってきます。

ファイル以外の場所で何かしら問題があるのでしょうか?そしてそれはどうやって調べたらいいのでしょうか?

解決

多くのシェルは、-lオプションを付けて起動するとログインシェルとして振る舞うので、

zsh -l -x

として実行すれば、ログイン時の挙動がある程度トレース出来ます。

シェル起動直後の$?は、シェルの起動中に最後に実行されたコマンドの戻り値になっているようです。
私の環境では、~/.zloginがあれば、それが最後に読み込まれ、無ければ~/.zcompdumpを読み込んだ後に実行されているcompinitというコマンドが、対話に入る直前のコマンドとなるようです。

回答者: Anonymous

Leave a Reply

Your email address will not be published. Required fields are marked *