Date: Sat, 25 Oct 2025 10:44:29 +0900 From: Tomoaki AOKI <junchoon@dec.sakura.ne.jp> To: "Yamada,Kazuo" <yamada@yamarail.net> Cc: freebsd-users-jp@FreeBSD.org Subject: Re: root =?UTF-8?B?44Gu?= shell =?UTF-8?B?44Gr44Gk44GE44Gm?= Message-ID: <20251025104429.6ff3bb2f5991b3ae8b25fd15@dec.sakura.ne.jp> In-Reply-To: <20251025094603.310B.5C005573@yamarail.net> References: <20251025094603.310B.5C005573@yamarail.net>
next in thread | previous in thread | raw e-mail | index | archive | help
On Sat, 25 Oct 2025 09:46:14 +0900 "Yamada,Kazuo" <yamada@yamarail.net> wrote: > やまだ@越谷です。 > > 20年くらい前に、このMLに投稿して。 > 以後ROM専門でした。 > > Facebook の FreeBSDのグループでも質問したのですが。 > コメントが全くないので... > > FreeBSD 13.x から 14.x にアップグレードしたのですが。 > root の シェル が標準では /bin/csh から /bin/sh に変更されているようです。 > > アップグレード中に、パスワードファイルの編集画面になり。 > 選択をする必要があったので、/bin/sh は基本使う事ないので。(使うなら bash 使 > う) > /bin/csh の方にしたのですが。 > > どちらにするのが正解なんでしょうか? > > -- > 0----+----1----+----2----+----3----+----4----+----5----+----6----+----7----# > 山田 和雄 MailTo:yamada@yamarail.net > Yamada Kazuo 青木@名古屋です。 基本的に、正解は「baseにある(portsでない)ものならお好きなものを」 です。 ただ、今後Handbook等で操作例が掲載されるのはデフォルトの /bin/shになっていく(または/bin/cshの例が消されていく)可能性が 高いと思いますので、内部コマンドの違いに混乱しそうなら/bin/shに 変えるのも「あり」ではあります。 問題としては、20年前と比べると飛躍的に改善されたとはいえ、/bin/shの コマンドラインヒストリー周り等は未だ/bin/cshに及ばないので、一応 実用に近づいたとはいえストレスを感じる場面があるかと。 なお、釈迦に説法でしょうけれど、スクリプトを組む場合はPOSIXのshで 必須になって「いない」機能は使わないのが無難ですので、/bin/shの 方を使うのが正解(cshは文法からして違いますので...)ですから csh自体の設定ファイル群にだけcshを使用しましょう。 また、先に「baseにある(portsでない)ものなら」という縛りを 入れたのは、私の知る限り(あれば)STATICオプションを付けて ビルドしたとしても/usr/local/bin/以下にインストールされ、 STATICオプション無効(または存在しない)場合に至っては /usr/local/lib以下のライブラリに依存する場合すらあるので、 仮に/usr/local/を独立したパーティションにしていると何らかの 原因でマウントに失敗したら詰んでしまうこと、base側での 何らかの変更でportsから入れたものに障害が出る場合、対象に 含まれてしまう恐れがある(portsにあるシェル全てがテストして もらえるわけではありません)ため、これもまた詰むことがある からです。 なお、私はrootのシェルをzshにしていますが、FreeBSD自体は (t)cshだと思いこんでいます。 というのは、/etc/master.passwd では/bin/cshにしてあって、/root/.tcshrc.mineに if ( -X zsh && -f ~/.Use_zsh ) exec zsh の1行を入れてあり、/root/.Use_zshという空のファイルを作っておく ことで、パスの通ったところに実行可能な(attributeの付いた)zshが 存在し、なおかつ/root/.Use_zshが存在することでzshに乗っ取らせる ようにしているのです。 portsで更新したzshに不備があった場合以外は これでzshが見つからなくても(t)cshのまま使えます。 ※zshに問題が出ている場合、シングルユーザに落ちて/root/.Use_zshを 消してしまえばいいので、セーフティネットが効きます。 ご参考になれば。 -- 青木 知明 [Tomoaki AOKI] <junchoon@dec.sakura.ne.jp>
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20251025104429.6ff3bb2f5991b3ae8b25fd15>
