当我在 FreeBSD 中使用虚拟控制台时ALT-F<1~n>
,我希望我的“zsh”、“sh”(可能还有其他 shell)启动脚本在提示中包含虚拟控制台编号(如果它不是默认控制台“1”)。
我怎么做?
答案1
答案2
KVT 不是控制台,控制台可以是串行、视频或静音。 FreeBSD 上默认的内核虚拟终端实际上是 0,其设备文件名为/dev/ttyv0
,而不是 1。这不是 Linux。因此,我建议您无条件地将其包含在提示中,至少直到您习惯实际编号为止。 ☺
在 Z shell 中这真的很容易。我有它在我的RPROMPT
:
RPROMPT=%y
所有提示的 shell 变量(当然)应该在适当的交互式 shell rc 文件中设置,例如.zshrc
,并且不导出。
如果您只想要数字,而不是设备名称,那么它只是一个不同的百分比序列:
RPROMPT=%j
但是,%j
如果您还在附加到 GUI 终端仿真器或用户空间虚拟终端的 shell 中使用它,则会导致混乱,因为 Z shell 为伪终端生成与 KVT 相同的编号。
FreeBSD Almquist shell 没有可以放入其PS1
shell 变量中的提示序列(并且也没有右侧提示)。您需要一些也可以与 FreeBSD Almquist shell 一起使用的东西。吉尔斯的回答没有,也没有提示元字符序列。
那里没有 TTY
在 KVT 登录会话中设置环境变量(除非您使用我的 nosh 工具集,该工具集添加FreeBSD 上的终端登录约定是通过其vc-get-tty
程序实现的)。吉尔斯的回答仅有的之所以有效,是因为 Z shell 提供了隐式TTY
shell 变量。它不适用于 FreeBSD Almquist shell 或您可能使用的其他 shell,例如 Korn shell,其中没有隐式 shell 变量,也没有任何环境变量。
对于这些,你必须首先采取以下措施:
导出 TTY="`tty`"