FreeBSDプロンプトに仮想コンソールIDを含めるにはどうすればよいですか?

FreeBSDプロンプトに仮想コンソールIDを含めるにはどうすればよいですか?

FreeBSDで仮想コンソールを使用するときは、ALT-F<1~n>「zsh」、「sh」(およびその他のシェル)起動スクリプトにプロンプ​​トに仮想コンソール番号を含めたい(デフォルトのコンソール「1」ではない場合)。

どうすればいいですか?

答え1

PS1の値に基づいて条件付きに設定されます$TTY。最初の仮想コンソールはで/dev/ttyv0、2番目の仮想コンソールはです/dev/ttyv1

zshの場合に移動します~/.zshrc。 bashの場合に進みます~/.bashrc

if [[ $TTY == /dev/ttyv[1-9]* ]]; then
  PS1="[${TTY#/dev/ttyv}] $PS1"
fi

これを行うコードはbashとzshで同じです。プロンプト(現在のディレクトリ、ホスト名、色...)でより多くの効果が必要な場合、フォーマットはPS1シェルによって異なります。扱いにくいそして強く打つどちらもプロンプトエスケープをサポートしますが、まったく異なります。

答え2

KVTはシリアル、ビデオ、または無音コンソールではありません。 FreeBSDのデフォルトのカーネル仮想端末は実際には0で、デバイスファイル名は1/dev/ttyv0ではなく1です。これはLinuxではありません。したがって、少なくとも実際の番号付けに慣れるまでは、無条件のプロンプトに含めることをお勧めします。 ☺

Zシェルでは本当に簡単です。私の中にいますRPROMPT

RPROMPT=%y

もちろん、すべてのプロンプトシェル変数は適切なインタラクティブシェルrcファイル(たとえば)に設定する必要があり、.zshrcエクスポートしないでください。

デバイス名ではなく数字だけを希望する場合は、パーセント順が異なります。

RPROMPT=%j

ただし、%jGUI 端末エミュレータまたはユーザー空間仮想端末に接続されているシェルでも使用する場合、Z シェルが KVT と同じ擬似端末に対して同じ番号を生成するため、混乱が発生する可能性があります。

FreeBSD Almquistシェルには、PS1シェル変数に入れることができるプロンプトシーケンスはありません(そして右のプロンプトもありません)。 FreeBSD Almquistシェルでも動作する必要があります。 Gilesの答えは、メタ文字シーケンスをプロンプトもせず、プロンプトもしません。

そこいいえ TTYKVTログインセッションで環境変数を設定します(私のnoshツールセットを使用しない限り、次へ追加FreeBSD の端末ログイン規則は、対応するプログラムvc-get-ttyによって実装されます。ザイルズの答えただこれは、Zシェルが暗黙のTTYシェル変数を提供するために機能します。 FreeBSD Almquistシェル、暗黙的なシェル変数や環境変数を持たないKornシェルなど、他の使用可能なシェルでは機能しません。

これを行うには、まず次の手順を実行する必要があります。

TTY="`tty`" エクスポート

関連情報