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
ただし、%j
GUI 端末エミュレータまたはユーザー空間仮想端末に接続されているシェルでも使用する場合、Z シェルが KVT と同じ擬似端末に対して同じ番号を生成するため、混乱が発生する可能性があります。
FreeBSD Almquistシェルには、PS1
シェル変数に入れることができるプロンプトシーケンスはありません(そして右のプロンプトもありません)。 FreeBSD Almquistシェルでも動作する必要があります。 Gilesの答えは、メタ文字シーケンスをプロンプトもせず、プロンプトもしません。
そこいいえ TTY
KVTログインセッションで環境変数を設定します(私のnoshツールセットを使用しない限り、次へ追加FreeBSD の端末ログイン規則は、対応するプログラムvc-get-tty
によって実装されます。ザイルズの答えただこれは、Zシェルが暗黙のTTY
シェル変数を提供するために機能します。 FreeBSD Almquistシェル、暗黙的なシェル変数や環境変数を持たないKornシェルなど、他の使用可能なシェルでは機能しません。
これを行うには、まず次の手順を実行する必要があります。
TTY="`tty`" エクスポート