linux在tty终端显示中文字符的最终解决办法(fbterm字体间距,简单实用)
linux在tty终端显示中文字符的最终解决办法(fbterm字体间距,简单实用)
Linux 的tty文字终端默认是不支持中文的,这对我们使用文字终端办公造成一定困扰,而且还限制字体,只有几种并不好用的字体。这里我解决以上问题。
我的系统:
uname -sr
Linux 6.1.0-kali7-amd64
基于Debian的ubuntu等应该都能使用,其他的我不保证。网上很多内容并没有完全说明白要怎么做,往往需要查很多篇文章。
至于cjktty的方式,我这里按照说明文档编译之后启动就提示内存耗尽(我内存32G),所以我本人不予评论这个方法。
我的解决办法是 fbterm,首先需要安装fbterm
sudo apt install fbterm
很多文章到这里就完了,然而事实是这样吗?路还长着呢。
按 ctrl+alt+F1进入tty1(实际上F2-6都可以),输入fbterm,看起来好像能显示中文了,但是这还不如不显示……
这里有两个问题,一个是上边的报错,一个是字体间距太大。我们挨个解决。
报错的问题,是因为这个运行需要root权限,我们可以使用suid解决。
$ which fbterm
/usr/bin/fbterm
$ sudo chmod u+s /usr/bin/fbterm
报错解决。
搜了一下如何解决fbterm字体间距,要么搜不到要么打不开,尤其是bing,关键词都配不上(我个人觉得,多关键词匹配,百度比必应和谷歌都强),后来还是摸到了解决办法(不过那篇文章不是解决间距过大的)
办法:编辑 ~/.fbtermrc
$ vim ~/.fbtermrc
把第9行的字体从 Mono 改为喜欢的字体(比如我的是consolas),consolas不支持中文,可以添加第二个字体支持中文(我写的微软雅黑),需要确保电脑上安装了这些字体(如何安装出门自己搜索):
还可以顺便把字体字号改了。保存,再进入fbterm就正常了。
这时候基本能用了。但是,我的默认 shell 是 zsh,这时候又出现了奇怪的回显,也就是说在命令执行之前,会回显这条命令,包括分号和单独重新显示的argv[0]:
别高兴,bash也有,经过测试貌似只有sh(或者,Debian系里的dash)没有这种不正常回显。有大佬认为这个是因为 fbterm 不支持这种颜色,我认为比较有道理。
我暂时没什么解法。有一种不太好的方法可以解决,就是在fbterm上再运行tmux,也就是说进入fbterm之后再执行tmux即可规避这种回显。