シリアルコンソールログインに使用するシェルとして bash を強制する

シリアルコンソールログインに使用するシェルとして bash を強制する

私は Ubuntu Server 20.04 をヘッドレスで実行しており、通常は SSH 経由でリモート アクセスしています。ただし、カーネル コンソールのログ記録とバックアップ管理方法として、シリアル RS232 経由でターミナル サーバー (Digi CM 16) にも接続されています。

問題はこれです。私は、いくつかの超高性能なアドオンを備えた ZSH を使用しています。SSH ではうまく機能しますが、シリアルではそうではありません。ターミナル サーバーからのログ ファイルは、ZSH が使用する制御文字のせいで、通常はあまり一貫性がありません。

ユーザーのデフォルトシェルが ZSH である場合でも、シリアルコンソールログインで BASH を使用するように強制するにはどうすればよいですか?

私が欲しいものは次のとおりです:

ログイン方法 私が贈りたいシェル
パスワード ZSH (ユーザーのデフォルト)
シリアルコンソールログイン バッシュ
モニターとキーボードを接続して物理的にログインする 気にしない

gettyの設定変更を調べてみましたttyS0が、デフォルトのログイン実行ファイルを から変更するしか選択肢がないようです/bin/loginが、それはしたくないですね。パスワードでログインしたいのですが、ログイン後に生成されるシェルを変更したいだけです。ただログインする場合ttyS0

答え1

おそらく最も簡単な方法は、シリアル ライン上にあるかどうかを検出し、何らかのアクションを実行するコードを ~/.zprofile に追加することです。

そこから bash を実行することもできますが、代わりに、ノイズの多い zsh 拡張機能を無効にしてプロンプトを単純なものにリセットし、zsh を引き続き使用することもできます。

ただし、これを操作している間は、アカウントがシェルを取得できなくなるような破損が発生した場合に備えて、2 番目のシェルを開いたままにしておく (またはバックドア アカウントを用意しておく) 必要があります。

関連情報